0

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

然而,经过无数小时后,我仍然没有弄清楚如何组织这一切。

GUI 是由几个相当不同的挥杆组件构成的,所以我考虑为每个组件建立一个单独的模型。

目前的信息流是这样的:

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

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

这种架构听起来很正常吗?

所有不同的视图都应该有自己的模型吗?如果是,他们是否也应该有自己的控制器?如果没有,那是什么?

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

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

4

1 回答 1

1

最好的方法是将客户端、服务器和数据库分开。

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

数据库:

数据库实际上就是一个数据库,所以它无能为力

服务器:

在服务器中,您应该执行服务器上可能发生的所有事情:访问数据库、访问文件、...

客户:

客户将完成其余的工作。这里需要区分“显示数据”;那将是“视图”和管理数据;那将是控制器。为了提供具有您使用“控制器”的功能的 gui,因此最后 MVC 模型仍保留在客户端中

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

所以如果我是你,我会按照你说的去做。试一试,你会发现它工作得很好。正如我所说,我或多或少遵循相同的工作流程,我只能说出好东西。

于 2013-03-05T21:25:10.437 回答