c# - .net Web 服务最佳实践...SRP?

标签 c# wcf web-services

对于 .asmx 或 wcf 服务类,关于多少文件、代码行、职责等,什么被认为是适当的开发?大多数人是否为每个类的不同 CRUD 方法发布单独的 .asmx 服务文件?

最佳答案

一般来说,一个服务应该封装一组通用的操作。无论您使用 ASMX 还是 WCF,您都不应该为每个操作创建一个“服务”。面向服务的体系结构 (SOA) 背后的总体思想是对真实世界的业务行为进行建模。给你一个愚蠢但希望有效的例子......想想餐厅的女服务员。女服务员以接受订单、服务这些订单、提供饮料补充、提供调味品和最后处理付款的形式为客户提供服务。女服务员提供的服务不是单个操作,而是相关操作的集合。

然而,它并不止于此。 SOA 的真正本质是任何给定的服务都可能依赖于其他服务。女服务员的工作离不开厨师的服务、提供餐点、柜台服务人员(她可以在那里拿到调味品和饮料)以及餐厅大楼本身提供的服务。女服务员提供的服务与厨师提供的服务之间也存在一些根本区别。归结为技术编​​程术语……女服务员是任务服务,而厨师是实体(或 CRUD)服务。女服务员处理更高级别的操作,为客户提供有用的功能,而厨师处理较低级别的操作,只为餐厅的其他员工提供细粒度和复杂的功能。

对于您的问题,我真的不能给您一个具体的答案,只能说只是组织您的服务,但它们在逻辑上是合适的。每个服务有一个操作可能不是一个好的做法……但是,服务只有一个操作并非闻所未闻。任务服务通常只有一个操作。实体服务通常有很多操作,通常是基于 CRUD,但有时还有附加服务。还有提供最低级别基础设施操作的公用事业服务(回到餐厅,公用事业服务就像炉子、烤架、收银机等)。彼此之间的依赖关系最终会变得清晰。

有关 SOA 的一些重要信息,请查看 Thomas Erl (Prentice Hall) 的 SOA 系列,因为它们是实现面向服务的企业的权威资源。

关于c# - .net Web 服务最佳实践...SRP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087963/

相关文章:

c# - 如何分配可变数量的输入?

wcf - PRISM 和 WCF - 他们玩得好吗?

c# - 基本身份验证和 WCF

java - JEE Rest Endpoint 配置是否超越 JSF 的控制流?

c# - WPF : type special characters 中带有 TextBox 的 TreeViewItem

c# - MaasOne yahoo-finance-managed 为 AlphabeticIDIndexResult 返回零结果

c# - 从字符串 c# 转换为时间戳时间格式

wcf - 从命令提示符调用休息服务

java - 我没有使用 angularjs 将数据获取到我的 Restful Web 服务

java - NoClassDefinitionFound : javax. xml.ws.Service