gpt4 book ai didi

c# - 使用 WCF 的三层架构

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:24 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

考虑将服务层业务对象一起添加,以将数据从服务器传输到客户端。

来自微软的 Microsoft Application Architecture Guide :

Custom Business Objects. These are common language runtime (CLR) objects that describe entities in your system. An object/relational mapping (O/RM) technology such as the ADO.NET Entity Framework (EF) or NHibernate can be used to create these objects

您的问题“我应该发送 (从服务器到客户端) 模型、 View 模型还是什么”正在混合UI 模式 (MVVM) 负责将数据从服务器发送到客户端。

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

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

enter image description here

关于c# - 使用 WCF 的三层架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com