2011-05-31 28 views
1

我正在實現接收不同請求的SOAP-Webservice。在將這些Request對象委託給實現類之前,我的Manager類是否應將這些Request對象轉換爲內部表示形式?將Web服務請求轉換爲內部表示?

我認爲這是一個關於解耦的好主意。但是爲此我必須創建每個RequestObject類的副本並將其命名爲InternalRequestObject,它存儲與原始請求相同的數據。

這是否有意義?

回答

1

這是有道理的,如果你打算重用這些實現類我會打電話給你業務層

在您當前的設置中,您將業務層作爲Web服務公開。 Web服務的骨架是 - 如果您願意的話 - 您的業務層的客戶端。

現在出現的問題是:如果您的業務層關心它將具有什麼樣的客戶端?業務層的數據合同是否應由客戶來決定,還是客戶應該遵守業務層公開的數據合同?

最明顯的反應就是客戶應該尊重業務層的數據合同,所以回答你的問題是:,則應該將SOAP請求映射到所使用的實現類的內部請求類型爲了獲得更好的兩者之間的解耦。

只有一種情況我會考慮直接將請求類型一直使用到我的業務層:如果我絕對會(101%)確信我永遠不會公開我的業務層除了SOAP Web服務。

的想法是,你只有在這兩個主要選項:

1.保持相同的請求類型所有的地方。這樣做的缺點是,如果您必須添加其他(非SOAP)客戶端,您將會在業務層中進行大量重寫。

OR

2.地圖SOAP請求類型爲內部類型。這樣做的缺點是,你可能冒着重複代碼和額外工作的風險,最終發現所有東西都是無用的,畢竟你不需要添加其他客戶端。

想想你的情況,並仔細選擇!但我必須告訴你,就我個人而言,迄今爲止我還沒有遇到過2號的劣勢。我總是最終爲這件事添加新的客戶端,並在那一刻幫助從一開始就繪製了類型。