C# SOA中的数据传输类

C# SOA中的数据传输类,c#,soa,C#,Soa,我的WebApplication调用WebService方法对数据库执行CRUD操作 WebService中的所有方法都以请求类的形式获取输入,以响应类的形式返回输出。e、 g: 如果我想从Customer表中获取Customer,那么在WebService中使用的方法是: CustomerResponse GetCustomer(CustomerRequest请求) CustomerRequest包含属性,例如ID;然后将使用该ID从DB获取客户 CustomerResponse包含我要传递给

我的WebApplication调用WebService方法对数据库执行CRUD操作

WebService中的所有方法都以请求类的形式获取输入,以响应类的形式返回输出。e、 g:

如果我想从Customer表中获取Customer,那么在WebService中使用的方法是:

CustomerResponse GetCustomer(CustomerRequest请求)

CustomerRequest包含属性,例如ID;然后将使用该ID从DB获取客户

CustomerResponse包含我要传递给Web应用程序的所有属性,例如ID、名称、地址

到目前为止,一切都很好

如果我想得到所有的客户,我必须为此创建两个额外的类,一个如:CustomerRequest和第二个CustomerResponse。因此,我总共有4个数据传输类:

客户请求 客户响应 客户请求 客户响应

其中CustomerResponse具有包含所有CustomerResponse对象的属性列表

这是一种很好的方法,还是应该在两个类中完成,无论我们想要一个集合还是一个特定类的单个对象


因为如果我继续这样做,数据库中的每个表都将至少有4个类。

使用基于REST的CRUD接口的好方法。SOA接口应该更加专业化。

我想这些是开发SOA应用程序的一些指导原则。其基本原理是将表示业务的对象与服务公开的契约中的对象分开来维护业务

请参考SOA模式和

编辑
正确的答案是,“取决于你希望披露的合同。”

我认为你仍然应该定义两个:


在内部,您可以维护单个实现
ListgetCustomers(查询)。根据这个结果,您可以将内部服务响应映射到这些对象

谢谢。。。我会通读这个网站。。。。但是,对于我的问题,你有什么具体的答案可以帮助我:例如,如何处理班级名单中的名单,你认为应该如何处理??? <xs:complexType name="CustomersResponse"> <xs:sequence> <xs:element name="Customer" minOccurs="1" maxOccurs="unbounded" /> <!-- other fields --> </xs:sequence> </xs:complexType> <xs:complexType name="CustomerResponse"> <xs:sequence> <xs:element name="Customer" minOccurs="1" maxOccurs="1" /> <!-- other fields --> </xs:sequence> </xs:complexType>