用于业务逻辑或数据访问层的 Web 服务

Posted

技术标签:

【中文标题】用于业务逻辑或数据访问层的 Web 服务【英文标题】:web service for business logic or data access layer 【发布时间】:2011-05-30 16:28:05 【问题描述】:

此帖http://www.theserverside.net/tt/articles/showarticle.tss?id=Top5WSMistakes 鼓励我为业务逻辑层创建 Web 服务,但很多人在数据访问层使用它。

我想创建一个项目,我想从桌面应用程序、网站和手机访问相同的数据存储库。你会推荐我什么?

在任何情况下,对两个层都实施 Web 服务可能是个好主意吗?

【问题讨论】:

【参考方案1】:

这个问题太开放了,所以答案是:这取决于

您的应用程序对数据有什么需求?只是数据访问还是涉及一些业务逻辑?如果只是访问数据,您真的希望客户端直接控制它吗?这三个应用程序有多相似?它们共享功能还是仅共享数据?

在我看来,您可以选择两条主要路径:

1 - 为企业公开 Web 服务,将数据隐藏在 Web 服务后面。如果三个客户端(我称桌面应用程序、Web 应用程序和手机“客户端”,因为它们就是这样)共享功能(即它们是相同业务模型的不同视图),这是一个很好的设置。这样可以避免在所有客户端中重复类似的业务逻辑;

2 - 直接使用网络服务公开数据。如果三个客户端没有任何共同之处,而只是将相同的数据用于不同的目的,那么这是一个很好的设置。但是在这种情况下,有了这三套业务逻辑,你要把逻辑放在哪里呢?在客户端?这对于桌面应用程序将如何工作(考虑到您安装此桌面应用程序 300 次左右)?您再次需要一些服务,并且客户端是 thin clients 而不是 thick。

如果您考虑 1) 和 2),您会发现通常最好在数据前面加上 service layer。

回到“视情况而定”,首先分析您的特殊需求,然后才能选择最适合您情况的解决方案

3怎么样? 将您的数据访问层变成一个库(.jar、.dll 或您正在使用的任何技术)并将其提供给为您的客户服务的(1?2?3?)业务网络服务?

【讨论】:

+1(如果可以的话,+2)在写得很好的答案中提供好的建议

以上是关于用于业务逻辑或数据访问层的 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

远程 API/Web 服务层 MVC 的域逻辑和数据访问

Spring

微服务简介

任何将单独的数据访问层(使用 EF)突出显示到业务逻辑层的示例 C# 项目

CDN技术详解

深入探讨:如何理解.Net的三层架构