2016-04-06 131 views
2

我有一个应用程序结构分为两层(客户端(使用MVVM的WPF)和数据在一个SQL服务器中的表示和业务逻辑),但我面临的问题是它使用太多由于需要大量的对象来操作客户端中的RAM。使用WCF的三层体系结构

所以我想换成三层体系结构,在服务器中添加一个服务来处理所有的业务逻辑,并为客户提供他们需要使用WCF显示的内容,以降低内存需求。

我的问题是关于如何正确地做到这一点。这个服务器和数据之间的通信(在SQL服务器中)非常直接,但是我应该从服务器发送给客户端?

例如,遵循MVVM方法,我应该发送(从服务器到客户端)模型,视图模型还是什么?如果视图模型的属性引用了模型,而我只发送​​ViewModels列表,客户端是否可以读取信息?

你能提供一些这样的真实世界的例子吗?

+2

添加服务/业务层? https://programmers.stackexchange.com/questions/159283/mvvm-ddd-and-wpf-layered-application-project-structure-guidance –

回答

1

考虑添加一个服务层连同业务对象将数据从服务器携带到客户端。

从微软的Microsoft Application Architecture Guide

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

你的问题,“要我送(从服务器到客户端)模型,视图模型或什么“将UI模式(MVVM)的责任与从服务器向客户端发送数据混合在一起。

通过添加服务层,您可以避免内存问题并管理携带对象的负担。考虑使用对象关系映射器来处理这些对象,如Microsoft的实体框架,或者为了提高性能,使用像StackOverflow's own Dapper.net这样的轻量级ORM。最后careful utilization of delayed query executionIEnumerable你应该能够解决你的性能问题。

由于您可以采用此设计的方向很多,因此高级别讨论对此阶段很有帮助。有关设计此类系统的进一步指导,请参阅Microsoft的应用程序体系结构指南,Chapter 5: Layered Application Guidelines。虽然下面的图片可能会描述比您需要的图层更多的图层,但它是一个有用的参考。服务层可以管理呈现给客户的业务对象:

enter image description here