MVVM与3层应用程序中的Web服务进行交互

时间:2012-05-14 18:59:02

标签: wpf web-services architecture mvvm 3-tier

问题:

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


详细说明:

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

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

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

  3. 后端: Java EE
  4. 将MVVM用于UI是否有意义?

    1. 模型如何抽象数据库,因为如果没有Web服务,它就无法直接访问它?
    2. 如果事实上可以通过模型抽象数据库,那么这样做是否是一个好主意呢?

    3. 其他注意事项:

      不需要实时更新数据:

      • 数据库更新无需立即反映在用户界面上,反之亦然。

      • 这让我觉得我不需要这样的模型。 MVVM是否适用于我的情况?


      修改

      链接:

      如果您可以将指向使用MVVM 的项目的链接发布到3层应用程序中,那将会有所帮助。

2 个答案:

答案 0 :(得分:3)

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

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

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

客户端中的数据结构应该针对表示进行优化,这就是我们称之为MVVM中的Viewmodel。

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

答案 1 :(得分:1)

我在企业架构中看到了一个称为集成层的附加层。在MVVM的上下文中,我想这仍然“坐在”模型中,但它永远不会成为数据库和任何其他外部数据层之间的仲裁者。 在我看到的示例中,Integration Layer连接了第三方Web服务,一些通过WCF服务提供的输入以及主应用程序数据库。

我认为你可能对模特在MVVM中的含义有所了解。这并不意味着UI /表示层立即更新(但可以如此配置),但更多的是任何业务对象或数据访问组件都存储在模型中。在那时,实际上没有 VVM 这样的东西,因为视图模型依赖于模型中定义的业务对象。

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

有关我最近对MVVM的描述,请参阅How to store business logic in domain object?

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