2013-03-05 33 views
0

我在写一个由gui接口,客户端,服务器和数据库组成的应用程序。如何实现MVC到服务器/客户端/数据库应用程序

但是,无数小时后,我还没有想出如何组织这一切。

图形用户界面是由几个相当不同的摆动组件构建的,所以我想为他们每个人都有一个单独的模型。

信息流是目前这样的:

  1. 使用者将在GUI一些信息。
  2. GUI通过给控制器一个事件告诉控制器发生了什么事情。
  3. 控制器将事件发送到服务器
  4. 服务器评估事件并将相应的查询发送到数据库。
  5. 来自DB的结果随后附加到事件中,并发送回客户端。
  6. 控制器选取事件并使用新信息更新适当的型号
  7. 该模型然后更新相应的视图。

可能的情况可能是用户通过GUI搜索条目,并返回结果。

这个建筑听起来是否理智?

所有不同的意见应该有自己的模型?如果是,他们是否应该有自己的控制器?如果不是,那么是什么?

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

我猜我在问什么是组织服务器/客户端/数据库应用程序遵循MVC模式的最佳方式是什么?

回答

1

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

我的意思与是,第一步是要知道在客户端做的,什么在服务器和数据库的内容:

数据库:

数据库实际上是别的,只是一个数据库,以便有什么,它可以做

服务器:

你应该做的服务器上可能发生的一切服务器

:访问数据库,访问文件,...

客户端:

客户端将完成剩下的工作。这里你需要在“显示数据”之间分开;这将是“观点”和管理数据;那将是控制器。为了提供具有功能的GUI,您可以使用“控制器”,因此最终MVC模型仍保留在客户端内。因此,我认为您的想法并不像您想象的那么糟糕。我正在研究一个像那样工作的项目。我们按照我所描述的方式工作,我可以确保一切看起来都非常好。一切都是分开的。服务器和客户端可以被替换,而不必改变其他的东西。如果我们更改数据库,只有服务器才会注意到,如果我们更改gui库(swt,awt,swing ...),则只有客户端会注意到它。服务器和客户端都可以运行在不同的环境中,但他们都没有注意到它。

所以如果我是你,我会照你说的去做。试试看,你会发现它的功能完美。正如我所说我遵循或多或少相同的工作流程,我只能告诉好东西。

+0

因此,对于每个不同的视图都有不同的模型,并使用单个控制器控制它是一种合理的方法? – habitats 2013-03-05 21:31:33

+1

我宁愿建议拥有与视图或视图组相同数量的控制器,这取决于您的架构。这样一来,不同的观点也将与彼此孤立。对于整个事情来说,一个控制器对于一个班级来说可以是两件很多工作。尝试使用继承 – iberbeu 2013-03-05 21:48:18

相关问题