2

问题:

将 MVVM 用于与 3 层应用程序中的 Web 服务交互的 UI 是否有意义?


细节:

  1. 应用程序的架构是三层的:

    Presentation Layer <--Web-Service-->| Business Layer | Data Access Layer

  2. 前端:.NET(WPF 和 C#)

  3. 后端:Java EE

将 MVVM 用于 UI 是否有意义?

  1. 模型如何抽象数据库,因为它不能在没有 Web 服务的情况下直接访问它?
  2. 如果实际上可以通过模型抽象数据库,那么这样做是否是个好主意?

其他注意事项:

不需要实时更新数据:

  • DB 上的更新不需要立即反映在 UI 上,反之亦然。

  • 这让我觉得我不需要这样的模型。MVVM 适合我的情况吗?


编辑

链接:

如果您可以发布在 3 层应用程序中使用 MVVM作为 UI 的项目的链接,将会有所帮助。

4

2 回答 2

3

MVVM 中的 Model 不一定由数据库提供。

在这种情况下,我会考虑由业务层发布的数据结构模型。

数据库中的数据结构应该针对存储和查询进行优化。业务层公开的数据结构应该针对(所有)可能的客户端和带宽等考虑因素进行优化。

客户端中的数据结构应该针对呈现进行优化,这就是我们在 MVVM 中所说的 Viewmodel。

MVVM 非常合适,因为它允许您在业务层公开的数据结构和 UI 所需的数据结构之间进行转换。

于 2012-05-15T05:44:50.943 回答
1

我在企业架构中看到了一个称为集成层的附加层。在 MVVM 的上下文中,我想这仍然“位于” Model中,但它始终充当数据库和任何其他外部数据层之间的仲裁者。在我看到的示例中,集成层连接了第 3 方 Web 服务、来自 WCF 服务的一些输入以及主应用程序数据库。

我认为您可能对模型在 MVVM 中的含义有些不理解。这并不意味着 UI/Presentation 层会立即更新(但是可以这样配置),而是任何业务对象或数据访问组件都存储在模型中。也就是说,实际上没有VVM这样的东西,因为View Model依赖于Model中定义的业务对象。

无论如何,我认为 MVVM 完全适合您所描述的内容,但是许多其他架构也是如此。MVVM 特别适合 WPF 前端,它非常适合 UI 数据绑定模型。Model-View-Presenter 非常适合 Winforms 应用程序,因为状态处理方式与 Model-View-Controller 不同,这对于 ASP.net 企业应用程序来说非常有用。所有这些架构都支持您在 OP 中描述的集成。

请参阅如何在域对象中存储业务逻辑?对于我最近对 ​​MVVM 的描述。

http://www.codeproject.com/Articles/66585/Comparison-of-Architecture-presentation-patterns-M是一篇很棒的比较文章,很多内容来自 Martin Fowler - 许多企业软件架构的先驱和模式。

于 2012-05-15T10:04:52.593 回答