如何将MVC实现到服务器/客户端/数据库应用程序中

时间:2013-03-05 20:26:38

标签: java model-view-controller client-server

我正在编写一个由gui接口,客户端,服务器和数据库组成的应用程序。

然而,经过无数个小时后,我仍然没有想出如何组织这一切。

GUI是由几个相当不同的swing组件构建的,所以我想为每个组件建立一个单独的模型。

信息流目前是这样的:

  1. 用户在GUI中插入一些信息。
  2. GUI通过向控制器提供事件来告诉控制器发生了什么。
  3. Controller将事件发送到服务器
  4. 服务器评估事件并将适当的查询发送到数据库。
  5. 然后将数据库的结果附加到事件,并发送回客户端。
  6. Controller选择事件并使用新信息更新相应的模型
  7. 模型然后更新相应的视图。
  8. 可能的情况可能是用户通过GUI搜索条目,并返回结果。

    这种架构听起来有道理吗?

    所有不同的观点都应该有自己的模型吗?如果是的话,他们也应该拥有自己的控制器吗?如果不是,那么呢?

    我考虑过将整个模型发送到服务器,让服务器操纵模型中的信息,然后将其发送回客户端。当客户端接收到它时,控制器确保新的模型信息附加到视图。这个解决方案不需要单独的事件类,但这样做似乎并不正确。

    我想我要问的是按照MVC模式组织服务器/客户端/数据库应用程序的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

最好的方法是分离客户端,服务器和数据库。

我的意思是,第一步是知道客户端要做什么,服务器中有什么以及DB中有什么:

数据库:

数据库实际上只不过是一个数据库,因此它无法做任何事情

服务器:

在服务器中,您应该完成服务器上可能发生的一切:访问数据库,访问文件,......

客户端:

客户将完成剩下的工作。在这里你需要分开“显示数据”;这将是“观点”和管理数据;这将是控制器。为了向gui提供功能,你使用“控制器”,所以最后MVC模型仍然在客户端

因此,我认为您的想法并不像您想象的那么糟糕。我正在研究一个类似的项目。我们按照我描述的方式工作,我可以确保一切看起来都很好。一切都是分开的。可以替换服务器和客户端,而无需在另一个中更改某些内容。如果我们更改数据库只有服务器会注意到它,如果我们更改gui库(swt,awt,swing ...),只有客户端会注意到它。服务器和客户端都可以在不同的环境中运行,但没有人注意到它。

所以,如果我是你,我会像你说的那样做。尝试一下,你会发现它完美无缺。正如我所说,我正在或多或少地遵循相同的工作流程,我只能说出好的东西。