微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SOA中的数据传输类

如何解决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);
的单个实现。根据此结果,您可以将内部服务响应映射到这些对象。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。