我有一个以两层结构的应用程序(客户端中的表示和业务逻辑(使用MVVM的WPF)和一个SQL服务器中的数据),但是我遇到的问题是它在客户端中使用了太多RAM需要大量的对象来操纵。
所以我考虑改为三层架构,在服务器中添加服务来处理所有业务逻辑,并仅向客户端提供他们需要使用WCF显示的内容,以降低其在内存中的需求。
我的问题是如何正确地做到这一点。此服务器与数据(在SQL服务器中)之间的通信非常简单,但我应该从服务器发送到客户端?
例如,遵循MVVM方法,我应该(从服务器发送到客户端)模型,视图模型还是什么?如果viewmodel的属性引用模型并且我只发送ViewModel列表,那么客户端是否能够读取信息?
你能为我提供一些现实世界的例子吗?
答案 0 :(得分:1)
考虑将服务层与业务对象结合使用,将数据从服务器传输到客户端。
来自Microsoft的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 execution和IEnumerable
,您应该能够解决性能问题。
高级别讨论在此阶段很有帮助,因为您可以采用此设计的方向很多。有关设计此类系统的进一步指导,请参阅Microsoft的应用程序架构指南Chapter 5: Layered Application Guidelines。虽然下面的图片可能描述的层数超出了您的需求,但它是一个有用的参考。服务层可以管理呈现给客户端的业务对象: