用于业务逻辑或数据访问层的 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 服务的主要内容,如果未能解决你的问题,请参考以下文章