使用WCF的三层架构

3
我有一个应用程序,采用两层结构(客户端使用WPF和MVVM框架处理展示和业务逻辑,数据存储在一个SQL服务器中),但我面临的问题是客户端使用太多RAM,因为需要操作大量对象的集合。
所以我考虑改为三层架构,在服务器上添加一个服务来处理所有的业务逻辑,并使用WCF提供客户端所需的显示内容,以降低内存需求。
我的问题是如何正确地做到这一点。与数据(存储在SQL服务器中)之间的通信非常直接,但是我应该向客户端发送什么?
例如,采用MVVM方法,我应该从服务器向客户端发送模型、视图模型还是其他内容?如果视图模型的属性引用模型,我只发送视图模型列表,客户端能读取信息吗?
你能给我提供一些实际的例子吗?

2
添加一个服务/领域层?https://programmers.stackexchange.com/questions/159283/mvvm-ddd-and-wpf-layered-application-project-structure-guidance - David Vogel
1个回答

1
考虑添加一个服务层,与业务对象一起使用,以将数据从服务器传输到客户端。
来自Microsoft的Microsoft应用程序架构指南

自定义业务对象。这些是描述系统中实体的公共语言运行时(CLR)对象。可以使用对象/关系映射(O/RM)技术,如ADO.NET Entity Framework(EF)或NHibernate来创建这些对象。

你的问题,“我应该发送 (从服务器到客户端) 模型、视图模型还是其他什么”,混淆了UI模式(MVVM)的责任和从服务器向客户端发送数据的责任。
通过添加服务层,您可以避免内存问题并管理携带对象的负担。考虑为这些对象使用对象关系映射器,例如Microsoft的Entity Framework或者为了提高性能,使用轻量级ORM,如StackOverflow's own Dapper.net。最后,通过延迟查询执行IEnumerable的谨慎利用,您应该能够解决性能问题。
在这个阶段进行高层次的讨论是有益的,因为有许多方向可以采取此设计。有关设计这种系统的进一步指导,请参阅Microsoft的应用程序架构指南,第5章:分层应用程序指南。虽然下面的图像可能描述了比您需要的更多的层,但它是一个有用的参考。服务层可以管理呈现给客户端的业务对象:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接