C# 将WPF桌面应用程序转换为客户机-服务器技术的良好体系结构
我有一个WPF应用程序,可以在一台PC上运行。我使用SQL server数据库、实体框架与数据库进行通信 以及应用程序中的RDLC报告。现在,要求该应用程序在本地公司网络上工作,在本地公司网络中,多个用户(通常最多25个)将根据设置的角色和权限访问该应用程序。我在这方面做了一些研究和开发,主要使用了这里提到的体系结构,在这样做之后,我做了一个应用程序的论文设计/体系结构,看起来像这样 在公司网络内的高端服务器上运行的WCF服务C# 将WPF桌面应用程序转换为客户机-服务器技术的良好体系结构,c#,sql-server,wpf,design-patterns,n-tier-architecture,C#,Sql Server,Wpf,Design Patterns,N Tier Architecture,我有一个WPF应用程序,可以在一台PC上运行。我使用SQL server数据库、实体框架与数据库进行通信 以及应用程序中的RDLC报告。现在,要求该应用程序在本地公司网络上工作,在本地公司网络中,多个用户(通常最多25个)将根据设置的角色和权限访问该应用程序。我在这方面做了一些研究和开发,主要使用了这里提到的体系结构,在这样做之后,我做了一个应用程序的论文设计/体系结构,看起来像这样 在公司网络内的高端服务器上运行的WCF服务 服务本身-定义连接到服务的协议 以及所有其他必要的信息 算法-将是主
<> P>为了让您的生活更轻松一些,客户端版本管理考虑使用ClikOnter安装程序来执行您的用户计算机上的最新版本安装(一旦您将其移动为Web应用程序,这种头痛就会消失).看起来你走的是正确的道路,但是你可能在某些领域过度工程化了 我认为EntityFramework在很大程度上为您处理实体、数据和持久性层。除非您希望最终用其他ORM系统取代EntityFramework,否则自己实现它们可能会有些过分 在这里,您可以使用GPC.Services库避开SOA(面向服务的体系结构)。在这里,您需要了解如何将服务层分解为一个或多个atmoic服务,以服务于客户端应用程序。有很多方法可以实现这一点,这在很大程度上取决于您计划如何使用服务层。看看RESTful服务,它很好地分解了服务层,并将引导您构建整洁的atmoic服务。为此,请查看Asp.net Web API 我认为你在GPC.Alogrithms库中寻找的是一个真正的领域模型。域模型封装了所有业务逻辑,并允许您通过公开的公共函数对对象执行状态更改。考虑到这一点,系统的各层将如下所示: 持久性(EF)->域模型->服务层->DTO(数据传输对象)->客户端 上面提到的DTO对象是一组POCO(普通的旧C#对象),负责向客户机传递数据和从客户机传递数据。您需要这样做,因为由于反向引用和其他封装问题,序列化和淡化域对象将成为问题。将DTO放在适当的位置将强制执行上下文边界,这曾经是SOA的原则之一——“边界是明确的”,请参阅 关于客户端,您似乎已经步入正轨。您可能想做的是重构当前的客户机应用程序,以便将所有数据查询合并到一个层中。因此,当时机成熟时,您只需将该层替换为服务实现