SOA中的数据传输类

| 我的WebApplication调用WebService方法对数据库执行CRUD操作。 WebService中的所有方法,将输入作为请求类,并将输出作为响应类。例如: 如果我想从客户表中获取客户,那么在WebService中使用的方法是: CustomerResponse GetCustomer(CustomerRequest请求) CustomerRequest包含属性,例如ID;然后将其用于通过该ID从DB获取客户。 CustomerResponse包含我要传递给WebApplication的所有属性,例如ID,名称,地址 到目前为止,一切都很好 ... 如果我想获得所有客户,则必须为此创建2个额外的类,一个类如:CustomersRequest和第二个CustomerResponse。所以我总共有4个数据传输类: 顾客要求 客户回应 客户要求 客户回应 其中,CustomersResponse具有一个属性列表,其中包含所有CustomerResponse对象。 这是一个好方法,还是应该在2个类中完成,无论我们想要集合还是特定类的单个对象? 因为如果我继续这样做,数据库中的每个表将至少以4个类结束。     
已邀请:
使用基于REST的CRUD接口的好方法。 SOA接口应该更专业。     
我想这些是开发SOA应用程序的一些准则。基本原则是将代表业务的对象与服务公开的合同中的对象分开,以维护您的业务。 请参阅SOA模式标准化服务合同和并发合同 编辑 正确的答案是,“取决于您希望公开的合同。” 我相信您仍然应该定义两个:
<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>
在内部,您可以维护一个实现
List<Customer>getCustomers(query);
的单个实现。根据此结果,您可以将内部服务响应映射到这些对象。     

要回复问题请先登录注册