将 windows 形式的 C# 应用程序转换为 n 层和 n 层面向服务的应用程序

Converting windows form C# application to n-tiered and n-layered service oriented application

我们正在为一家医院开发现有的 windows 表单人力资源程序,该程序是用 C#、L2S (DBML) 和 Sql2005 编写的,并且使用 LINQ

对查询进行硬编码

目前的应用程序不支持多分支概念,我对这种应用程序没有经验,目前我对基础设施的了解是:

  1. 两家医院之间将建立 VPN 连接
  2. 人力资源部将为两家医院提供服务,它将是中央部门
  3. 每家医院都有自己的组织结构图

基于以上基础设施,我想知道我的应用程序应该做哪些更改?

我正在考虑使用 Web 服务和存储库模式,在我们的情况下是否推荐这样做?但我仍然不确定该做什么、该使用什么以及该使用哪种技术

任何想法将不胜感激

Phew...我会选择 "traditional" n 层和 n 层应用程序。使用中央数据库,其中用户 "separated" 按他们正在工作或为之工作的特定医院分类。虽然,也许超级用户也可以全面了解两家医院的数据。

最近为什么要使用 VPN 连接?互联网连接是一种选择吗?

传统设置可能是这样的:

  1. 数据库(SQL服务器)
  2. 数据访问层(Entity Framework)
  3. Web 应用程序(ASP.NET MVC)/Windows WPF 中的应用程序(MVVM)

关于这种设置的一个很好的介绍可以遵循 here。这可能会给您一些具体的帮助,并为您指明正确的方向。

初始数据库设计看起来像这样(多分支;):

医院

  • ID
  • 姓名

员工

  • ID
  • 姓名
  • 医院 ID(FK -> Hospital.ID)

用户

  • ID
  • 姓名
  • 医院 ID(FK -> Hospital.ID)

  • ID
  • 姓名

用户权限

  • 用户 ID(FK -> User.ID)
  • RightID (FK -> Right.ID)

多分支部分由用户权限table实现。在这里,用户被授予(关系耦合)查看特定类型数据(员工、薪水、评论等)的权利。 UserRight系统中的信息(业务规则)被翻译成业务访问层和UI。当用户登录(验证)时,您可以根据他或她的权限轻松启用/禁用某些功能

必须说,这是您、您的同事和您的客户选择使用新的现代框架的好机会。正如您已经说过的 Web 服务、存储库模式。请注意,熟悉新技术和框架可能需要时间。

做一个Google search,让自己见多识广。祝你好运!