对于 .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/