如何在局域网中实现MVC?

时间:2011-08-23 02:37:11

标签: php delphi model-view-controller network-programming odbc

我不想重新发明轮子,所以请问其他人如何做到这一点......

我有2个即将开展的项目,一个是Delphi,另一个是PHP(加上一个是Java),所以特别欢迎这些信息,但通用答案也是可以接受的。

所以,我有一堆PC和一个数据库服务器(ODBC),并希望开发一个MVC应用程序。

我猜模型位于d / b服务器上,并且视图位于每台PC上。控制器在哪里?一个在d / b服务器上,或每台PC上有一个副本?

在编写数据时,我认为锁定相关的d / b表(?)就足够了。但是如何更新所有这些视图并告诉他们有新数据或者他们正在处理的数据是否被其他用户删除了?

欢迎任何代码以及网址或图书推荐...谢谢

2 个答案:

答案 0 :(得分: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和许多其他语言。

因此,在您的上述所有内容中,不会在每个系统上单独更新视图,所有文件都在您的中央服务器中,并且在客户端请求时,其中所做的任何更改都会自动反映。

从你的问题我假设你是网络开发或至少mvc的新手,所以首先看看PHP中的一些简单的mvc,如codeigniter。 CI有一个非常好的DOC,所以你可以加快速度。

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

答案 1 :(得分:3)

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

请注意MVC是architectural pattern,而不是硬件,甚至逻辑设计。如果像在任何n层体系结构中一样,将DB放在专用计算机中是有意义的(出于性能和可维护性/备份的原因),控制器和视图可以......无处不在......

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

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

我们可以在pure object中实施our ORM framework MVC定位。事实上,你可以在任何地方拥有对象,处理模型,访问数据库,处理业务服务。

在我们的 mORMot开源框架中,对于Delphi 6-XE,您可以遵循以下开发模式:

  • 数据层 SQLite3 和/或内部非常快的内存数据库,和/或any other external database(通过OleDB或OCI),大多数SQL查询由ORM内核即时创建;
  • 逻辑层由纯ORM方面执行:您编写由数据层映射到数据库中的Delphi类,您可以在客户端或服务器端编写业务逻辑,只需按向类中添加一些事件或方法; a Service-Oriented-Architecture(类似DataSnap)也可用,无需任何对象即可使用;
  • Presentation Tier 既可以是Delphi客户端,也可以是AJAX应用程序,也可以是任何其他能够通过HTTP / 1.1使用RESTful JSON进行通信的后端 - 在这种情况下,PHP或JAVA客户端是完美的的候选者。

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

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