Php 如何在局域网上实现MVC?

Php 如何在局域网上实现MVC?,php,delphi,model-view-controller,network-programming,odbc,Php,Delphi,Model View Controller,Network Programming,Odbc,我不想重新发明轮子,所以问问别人是怎么做到的 我有两个即将到来的项目,一个在Delphi中,一个在PHP中(可能还有一个在Java中),所以这些项目的特定信息是受欢迎的,但是一个通用的答案也是可以接受的 所以,我有一堆电脑和一个数据库服务器(ODBC),想开发一个MVC应用程序 我猜模型在d/b服务器上,视图在每台个人电脑上。控制器在哪里?一份在d/b服务器上,还是每台电脑上一份 在写入数据时,我认为锁定相关的d/b表(?)就足够了。但是,如何更新所有这些视图并告诉它们有新数据,或者它们正在处理

我不想重新发明轮子,所以问问别人是怎么做到的

我有两个即将到来的项目,一个在Delphi中,一个在PHP中(可能还有一个在Java中),所以这些项目的特定信息是受欢迎的,但是一个通用的答案也是可以接受的

所以,我有一堆电脑和一个数据库服务器(ODBC),想开发一个MVC应用程序

我猜模型在d/b服务器上,视图在每台个人电脑上。控制器在哪里?一份在d/b服务器上,还是每台电脑上一份

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


欢迎任何代码以及URL或书籍推荐。。。谢谢

建议您从这个开始

 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
这是一个普通的内联网应用,对吗?为什么要将所有内容分开。模型、视图和控制器只是各自的文件,您可以在其中执行相关操作,它们不会物理上驻留在单独的位置上。我认为你完全错误地理解了mvc的概念。MVC意味着根据代码的功能对代码进行拆分和分层,而不是将它们物理上分开

在外行语言中更清楚地说,模型、视图和控制器只是应用程序中的目录。您的视图文件进入您的视图目录(但不一定是可更改的)。作为DB相关操作文件的模型进入模型,控制和驱动应用程序的类进入控制器目录

在内部网上运行它非常简单。您所要做的就是将文件托管在网络中具有静态IP或名称的系统上,然后从其他系统转到您的浏览器并将浏览器指向

我对delphi一无所知,但我上面所说的代表PHP和许多其他语言


因此,考虑到上述所有要点,您不会单独更新每个系统上的视图。所有文件都在您的中央服务器中,对它们所做的任何更改都会在客户端请求时自动反映出来

根据您的问题,我假设您对web开发或至少mvc都是全新的,所以首先来看一下PHP中一些简单的类似mvc的codeigniter。CI有一个非常好的文档,因此您可以加快速度


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

就我所理解的MVC而言,没有关于控制器本身位置的规则

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

MVC是一种模式,也就是说,它更多地是一种建模/接口对象和类的方式,而不是将应用程序分发到模块中的方式。事实上,您可以(而且IMHO应该)在客户机和服务器之间共享MVC代码,而对象仍然以单独的方式实现模型/视图/控制器

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

您可以有一个面向MVC的系统,例如我们在中实现的。事实上,您可以在任何地方都拥有对象,以处理您的模型、访问数据库以及处理您的业务服务

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

  • 数据层是SQLite3和/或内存中的内部非常快速的数据库,和/或(通过OleDB或OCI),大多数SQL查询是由ORM内核动态创建的
  • 逻辑层由纯ORM方面执行:您可以编写由数据层映射到数据库中的Delphi类,只需向类中添加一些事件或方法,就可以在客户端或服务器端编写业务逻辑;a(类似DataSnap)也可用,可以在没有任何对象的情况下使用
  • 表示层要么是Delphi客户端,要么是AJAX应用程序,要么是能够通过HTTP/1.1使用RESTful JSON进行通信的任何其他后端—在本例中,PHP或JAVA客户端是完美的候选对象
我建议你花点时间下载并看一看。它远非完美,但它试图做到完整。在SAD文档中,您将看到一些关于我们实现的体系结构的页面,特别是MVC、n层、SOA和ORM。不要害怕1000页的PDF,你不必全部阅读:我只是添加了一些通用的图表,可以帮助你对解决方案进行建模


在所有情况下,在为您的项目实施解决方案之前先喘口气是一个非常好的决定。您现在花在查看现有体系结构上的时间肯定会在将来为您省去痛苦。好的开始

也许他把MVC和n-tier搞混了?MVC可以简化分层。也许我遗漏了什么。我熟悉单台PC上的MVC。是的,“它是一个常规的内联网应用程序”。但是“模型、视图和控制器……物理上不位于单独的位置”。现在说什么?请确保模型仅驻留在d/b服务器上。或者?我还用对角线表示“模型、视图和控制器只是目录”。称它们为单元、文件、模块之类的东西,但是目录?啊,我看到当你说“转到你的浏览器”时,你想到的是我的PHP项目。这使我无法理解你想说什么。可能是基于Windwos的.EXE(由Delphi生成)给了我更多的问题。“您不打算在每个系统上单独更新视图所有文件都在您的中央服务器中,在客户端请求时,对它们所做的任何更改都会自动反映出来。”。A.