2

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

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

我的问题是如何正确地做到这一点。此服务器和数据(在 SQL 服务器中)之间的通信非常简单,但是我应该从服务器发送什么到客户端呢?

例如,按照 MVVM 方法,我应该(从服务器到客户端)发送模型、视图模型还是什么?如果视图模型的属性引用模型并且我只发送一个视图模型列表,客户端是否能够读取信息?

你能给我提供一些现实世界的例子吗?

4

1 回答 1

1

考虑结合业务对象添加服务层以将数据从服务器传送到客户端。

来自 Microsoft 的Microsoft 应用程序架构指南

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

您的问题,“我应该 (从服务器到客户端)发送 模型、视图模型还是什么”将 UI 模式(MVVM)的责任与从服务器发送到客户端的数据混合在一起。

通过添加服务层,您可以避免内存问题并管理携带对象的负担。考虑为这些对象使用对象关系映射器,例如 Microsoft 的 Entity Framework,或者为了提高性能,使用StackOverflow 自己的 Dapper.net等轻量级 ORM 。最后,仔细利用延迟查询执行IEnumerable应该能够解决您的性能问题。

在此阶段进行高级讨论会很有帮助,因为您可以采用此设计的方向很多。有关设计此类系统的进一步指导,请参阅 Microsoft 的应用程序架构指南,第 5 章:分层应用程序指南。虽然下图描述的层数可能超出您的需要,但它是一个有用的参考。服务层可以管理呈现给客户端的业务对象:

在此处输入图像描述

于 2016-04-06T18:39:46.733 回答