Architecture 用Web服务调用替换自定义DAO代码

Architecture 用Web服务调用替换自定义DAO代码,architecture,web-services,Architecture,Web Services,在大多数Web应用程序中,我们使用三层体系结构:控制器/视图帮助器、服务和DAO层。然而,其中一些项目几乎是样板代码。举个例子:大多数应用程序数据库模式都有自己的Department表(称为T_Department),在代码方面,这需要Department的模型类、DepartmentDAO类等 我想做的是为所有应用程序都可以访问的所有部门创建一个通用模式(是的,应该已经是这样了,但事实并非如此……)。然后,我想在应用服务器上安装一个简单的web服务,它唯一的任务就是访问公共表。与自定义DAO代

在大多数Web应用程序中,我们使用三层体系结构:控制器/视图帮助器、服务和DAO层。然而,其中一些项目几乎是样板代码。举个例子:大多数应用程序数据库模式都有自己的Department表(称为T_Department),在代码方面,这需要Department的模型类、DepartmentDAO类等

我想做的是为所有应用程序都可以访问的所有部门创建一个通用模式(是的,应该已经是这样了,但事实并非如此……)。然后,我想在应用服务器上安装一个简单的web服务,它唯一的任务就是访问公共表。与自定义DAO代码、专用模型对象等不同,这些信息只需通过webservice调用检索,可能是JSON格式

然而。。。我需要知道一些问题的答案:

  • 这真的是一个具有成本效益的想法吗?在我们公司的每个财政年度,我们可能会做大约10个中小型项目(新的或重写的遗留应用程序)
  • 如果DepartmentDAO主要由Save()、Delete()和FindByName()/FindById()方法组成,那么用web服务代码替换它会显著减少代码/工作量吗?(请注意,必须编写代码来执行将JSON结果转换为选择框等操作)
  • web服务调用的安全影响会是一场噩梦吗

  • 简言之,就人力成本/可维护性等而言,这值得吗?

    为所有系统创建一个通用模式通常是不现实的

    随着您的开发,这可能还可以,但是进行更改的成本最终将非常高,因此不可能进行任何更改


    解决方案的模式是“有界上下文”,Eric Evan的领域驱动设计书中对此有很好的描述

    我同意它不适用于复杂的需求。然而,用例是针对一个简单的对象,包含一个ID和名称。即使添加了更多属性,开发人员也可以忽略他/她不需要的任何返回内容。