2011-04-14 23 views
0

我的WebApplication調用WebService方法在數據庫上執行CRUD操作。SOA中的數據傳輸類

WebService中的所有方法,將輸入作爲請求類獲取,並將輸出作爲響應類返回。 e.g:

如果我想從客戶表一個客戶,然後方法在WebService的使用方法是:

CustomerResponse GETCUSTOMER(CustomerRequest請求)

CustomerRequest包含屬性,諸如ID;然後通過該ID從DB獲取客戶。

CustomerResponse包含了所有我想要傳遞給WebApplication的屬性,如ID,姓名,地址

到目前爲止,一切都很好...

,如果我想獲得的所有客戶,我必須爲此創建2個額外的類,例如CustomersRequest和第二個CustomersResponse。所以總共我有4個數據傳輸類:

CustomerRequest CustomerResponse CustomersRequest CustomersResponse

其中CustomersResponse具有包含所有CustomerResponse對象的屬性列表。

這是一個好方法,還是應該在2個類中完成,無論我們想要一個集合還是某個特定類的單個對象?

因爲如果我繼續這樣做,db中的每個表至少會有4個類。

回答

0

使用基於REST的CRUD界面的好方法。 SOA接口應該更加專業化。

0

我想這些是開發SOA應用程序的一些準則。基本原則是維護您的業務將表示業務的獨立對象與服務公開的合同中的對象分開。

參考SOA模式Standardized Service ContractConcurrent Contracts

編輯
正確的答案是,「要看你想公開的合同。」

我相信你還是應該定義兩個:

<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);拾取列表。從這個結果中,您可以將您的內部服務響應映射到這些對象。

+0

謝謝...我會通讀網站....但是有什麼具體的答案我的問題,你可以幫助我:即如何處理一個類列表如何應該在你的意見處理? – user402186 2011-04-19 10:31:00

+0

@ user402186,我更新了答案,希望它有幫助 – CMR 2011-04-19 13:07:39