首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net网站服务最好的practice...SRP?

.net网站服务最好的practice...SRP?
EN

Stack Overflow用户
提问于 2009-07-06 16:37:37
回答 3查看 1.8K关注 0票数 2

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-06 16:46:58

首先,新开发的最佳实践是使用WCF。参见Microsoft: ASMX Web Services are a “Legacy Technology”

其次,在SOA中,人们试图创建具有粗粒度操作的服务。例如,您可能需要OrderProduct操作,而不是StartOrder、AddLineItem、AddOption、FinishOrder操作。OrderProduct操作可能接受OrderDTO,如下所示:

代码语言:javascript
复制
public class OrderDTO {
    public CustomerInfo Customer {get;set;}
    public DateTime OrderTime {get;set}
    public DateTime ShipTime {get;set;}
    public List<LineItemDTO> LineItems {get; private set;}
}

public class LineItemDTO {
    public int LineItemNumber {get;set;}
    public string ProductName {get;set;}
    public int Quantity {get;set}
    public Decimal Amount {get;set}
    public Decimal ExtendedAmount {get;set;}
}

我推荐使用一个接受OrderDTO的OrderProduct方法,它将拥有一个LineItemDTO集合,而不是只创建一个空订单,然后调用AddLineItem来添加单独的行项目(就像在桌面应用程序中那样)。您将一次性发送整个订单,在一个事务中添加所有部分,然后就完成了。

最后,我想说的是,您仍然应该将其划分为业务层和数据层。服务层应该只关心服务方面的事情,并将调用您的业务逻辑层来完成任务。

票数 4
EN

Stack Overflow用户

发布于 2009-07-06 17:14:05

一般来说,一个服务应该封装一组常见的操作。不管你是使用ASMX还是WCF,你都不应该为每个操作创建一个“服务”。面向服务的体系结构(SOA)背后的总体思想是对现实世界的业务行为进行建模。给你一个愚蠢的,但希望有效的example...think,一个餐厅的女服务生。女服务员为顾客提供服务的形式是:接受订单,服务那些订单,提供饮料续杯,提供调味品,最后处理付款。女服务员提供的服务不是单一的操作,它是相关操作的集合。

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

我真的不能给你一个具体的答案你的问题,除了说,只是组织你的服务,无论他们在逻辑上合适。每个service...however有一个操作可能不是一个好的做法,一个服务只有一个操作并不是没有听说过的。任务服务通常只有一个操作。实体服务通常有许多操作,通常是基于CRUD的,但有时也有额外的服务。还有公用事业服务,提供最底层的基础设施运营(回到餐厅,公用事业服务就像炉灶、烤架、收银台等)。如果您在实际的业务概念之后对您的服务进行建模,那么它们公开的操作以及它们彼此之间的依赖关系最终应该变得清晰起来。

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

票数 5
EN

Stack Overflow用户

发布于 2009-07-06 16:40:40

从任何你能找到的地方获取这本书:

Service Oriented Architecture (SOA): Concepts, Technology, and Design

回答您的每一个问题,以及您在实现过程中肯定会遇到的更多问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1087963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档