2011-08-23 46 views
2

我不想推倒重来,所以要求别人怎么做呢?如何在局域网上实现MVC?

我有2个即将开展的项目,一个在Delphi中,一个在PHP(加上一个可能在Java中),那么具体到信息那些将是受欢迎的,但一个通用的答案也是可以接受的。

所以,我有一堆电脑和数据库服务器(ODBC),并希望建立一个MVC应用程序。

我想,该模型是d/B服务器上,并且该视图是每个单独的PC上。控制器在哪里?一个在d/b服务器上,或者每台PC上有一个副本?

在写入数据时,我想这足以锁定相关的d/b表(?)。但是,如何更新所有这些视图并告诉他们有新数据或者他们正在处理的数据已被其他用户删除后进行了修改?

任何代码是值得欢迎的是网址或书籍推荐...感谢

回答

4

建议你先这个

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 

其定期内部网应用程序吗?你为什么要分开分开一切。模型,视图和控制器只是您做相关工作的相应文件,它们不会在物理上位于单独的位置。我认为你已经有了mvc的概念完全错误。 MVC意味着根据它们的功能分割和分层代码,而不是将它们保持在物理上分离。

要在一个深入浅出更清晰的模型视图和控制器是在你的应用程序只是目录。你的视图文件进入你的视图目录(不一定这是可以改变的),你的与数据库相关的操作文件模型进入模型,控制和驱动你的应用程序的类进入你的控制器目录。

在Intranet上运行它很简单。所有你需要做的是承载您的文件在您的网络中的静态IP地址或者名称,然后在系统上从其他系统转到您的浏览器,并在

http://myserver/myapphttp://192.168.100.100/myapp

你的浏览器,我不知道什么关于delphi,但是我上面所说的代表PHP和许多其他语言。

因此,采取一切你以上几点都不会更新视图分别各系统中的所有文件都在您的中央服务器上,从客户端请求时,在他们所做的任何更改会自动反映。

从你的问题我认为你是完全新的Web开发或至少MVC所以先来看看一些简单的MVC像PHP笨。 CI有非常好的DOC,所以你可以加快速度。

希望我已经回答了所有问题。

+0

也许他有MVC与n层混淆? MVC可以实现更轻松的分层。 – Jordan

+0

也许我错过了一些东西。我在单个PC上熟悉MVC。是的,“它是一个常规的Intranet应用程序”。但是......“模型,视图和控制器......不在身体上驻留在单独的位置”。现在说什么?确保模型仅驻留在d/b服务器上。要么? – Mawg

+0

我也表示“模型视图和控制器只是目录”。叫他们单位,文件,模块,类似的东西,但目录? – Mawg

3

据我了解MVC,没有关于控制器本身的位置的规则。

请采取考虑到MVC是architectural pattern,而不是硬件甚至也不是逻辑设计。如果像任何n层体系结构一样,将数据库放置在专用计算机上(出于性能和可维护性/备份的原因),控制器和视图可以......无处不在......

MVC是模式,也就是更多的建模/接口对象和类的方式,而不是将应用程序分配到模块中的方式。事实上,你可以(和恕我直言)应该在客户端和服务器之间共享MVC代码,而对象仍然以分离的方式实现模型/视图/控制器。

“经典”的MVC实现(例如由RoR或Delphi世界中的DoRRelax使用 - 都处于草稿状态)使用目录或文件来分割视图和控制器。但这只是这种模式的一种实现设计。

您可以有一个pure object MVC方向,正如我们在our ORM framework中实施的那样。事实上,您可以在任何地方都有对象,来处理您的模型,访问数据库以处理您的业务服务。

在我们mORMot开源框架,德尔福6-XE,你可以按照这个发展模式:

  • 数据层或者是sqlite3的和/或内部非常快IN-内存数据库和/或any other external database(通过OleDB或OCI),大多数SQL查询是由ORM内核动态创建的;
  • 逻辑层通过纯ORM方面执行:您可以编写由数据层映射到数据库的Delphi类,并且您可以在客户端或服务器端编写业务逻辑,只需添加一些事件或方法上课;一个Service-Oriented-Architecture(DataSnap-like)也是可用的,并且可以在没有任何对象的情况下使用;
  • 演示文稿阶层可以是Delphi客户端,可以是AJAX应用程序,也可以是任何其他能够使用基于HTTP/1.1的RESTful JSON进行通信的后端 - 在这种情况下,PHP或JAVA客户端是完美的选择。

我建议你花时间下载并看看at the mORMot documentation。这远非完美,但它试图完成。在SAD文档中,您会发现一些关于我们实现的体系结构的页面,特别是MVC,n层,SOA和ORM。不要害怕PDF的1000页 - 您不必全部阅读:我只是添加了一些通用图表,可以帮助您为解决方案建模。

在所有情况下,在为项目实施解决方案之前深呼吸是一个非常好的决定。现在通过查看现有架构来花费的时间肯定会为您节省未来的痛苦。好的开始!

+0

+1 MVC的确是关于代码组织。如何在不同的物理机器上分割MVC应用程序是另一回事,您最终可能会在所有物理机器上使用模型逻辑。例如,为了便于客户端验证,因为除了服务器端验证(这需要往返)之外,它的直接性。 –

+0

@Marjan您的示例正是我们为[RESTful身份验证](http://blog.synopse.info/post/2011/05/24/How-to-implement-RESTful-authentication)机制所做的:实际上,用户会话存储在内存中,以便快速访问,并避免任何数据库的往返速度较慢。只是MVC方法的一个例子,由于ORM(相同的对象可以从数据库中检索,或保存在内存中)使得它更容易实现。 –