将业务层和数据层结合在一个 WCF 服务中的优缺点

Posted

技术标签:

【中文标题】将业务层和数据层结合在一个 WCF 服务中的优缺点【英文标题】:Pros and Cons of combining the business layer and the Data Layer in one WCF service 【发布时间】:2015-02-10 23:25:59 【问题描述】:

我有一个应用程序使用 3 层 2 层业务模型,即 Presentation、Business 和 Data Layers 以及 Application 和 Service Tiers .我们已经决定在其自己的层上使用 WCF 服务来处理所有数据层请求 (CRUD)。我现在的问题是是否将业务层与 WCF 服务中的数据层结合起来,然后 UI 调用处理所有业务和数据操作的服务。

我反对这个想法,因为我认为服务应该是一个愚蠢的服务,它只处理 CRUD 操作。业务层应该在应用端,但封装在自己的层中,也是唯一访问数据层的层。

我可能很傻,但我希望互联网对此事有发言权,以及任何可能的利弊。

感谢所有回复!

【问题讨论】:

【参考方案1】:

如果其他表示层(例如网站)可能需要访问业务层和数据层,那么在服务端创建以下层是有意义的:

    服务端点:一个简单的数据传递,负责将传入的请求(采用您选择的技术)转换为业务层可以理解的请求。 业务层:您的域对象和业务服务以及运行业务所需的规则。该层调用您的数据层,对服务端点一无所知。 数据层:将业务领域对象简单转换为与您交互的任何对象所需的对象;无论是数据库还是第三方服务端点。

现在,您拥有了一个很好的、可维护且可部署的微服务,该微服务特定于您的问题空间中的特定领域。

查看Martin Fowler's article on microservices 了解有关该主题的更多详细信息。

【讨论】:

以上是关于将业务层和数据层结合在一个 WCF 服务中的优缺点的主要内容,如果未能解决你的问题,请参考以下文章

n 层应用程序中的 WCF 服务层:性能注意事项

ASP.NET MVC - 服务层 - 业务层 - 数据层 (EF) - SQL DB :: 数据传输?

N层架构中的服务层和业务层有啥区别

ASP WebApi:服务层、业务层和数据访问层

WCF基础:绑定

struts中的action是控制层,为啥不是业务层呢?控制层和业务层有啥区别?怎么样分辨呢?