在C#(其他.Net OOP語言)中,我有2個webservices。 Svc1返回一個複雜的數據類型,它成爲svc2的參數。請注意,它是相同的複雜類型。從2個webservices中複製一個複製類型
現在,我創建這2個webservices的2個代理類。這意味着相同的類型會生成兩次。
如何確保在2個代理服務器中只有該類型的一個副本?您可以假設2個Web服務的相同或不同名稱空間。
在C#(其他.Net OOP語言)中,我有2個webservices。 Svc1返回一個複雜的數據類型,它成爲svc2的參數。請注意,它是相同的複雜類型。從2個webservices中複製一個複製類型
現在,我創建這2個webservices的2個代理類。這意味着相同的類型會生成兩次。
如何確保在2個代理服務器中只有該類型的一個副本?您可以假設2個Web服務的相同或不同名稱空間。
產生在同一時間兩個代理:
svcutil http://example.com/svc1?wsdl http://example.com/svc2?wsdl
如果類型是真的在這兩個服務將只產生客戶端的單一代理類相同(名稱和命名空間)。
又一種可能性是生成用於所述第一服務的代理類:
svcutil http://example.com/svc1?wsdl
編譯生成.cs
文件成組件例如MyAssembly.dll
和導入所述第二服務時使用/reference選項:
svcutil /reference:MyAssembly.dll http://example.com/svc2?wsdl
這將在WSDL和提供的程序集中查找相同的類型。
我最近碰到類似的問題;我沒有嘗試Darin的建議。
Miguel Castro的IDesign在2009年3月的DevConnections上展示了「WCF手動方式......正確的方式」。在那裏他展示瞭如何重用服務合同和代理。從我的筆記:
我們公司還沒有轉會到WCF還沒有,但是這看起來像的路要走(對我來說)。
編輯:我在這發現了一個article by Mr. Castro。
整齊。將嘗試這兩種方法。感謝Darin。 – 2009-12-03 18:09:09
好奇雖然..萬一web服務是在不同的命名空間,什麼是最好的方法來實現相同? – 2009-12-03 18:13:50
如果不同的名稱空間不能達到相同的效果。您需要手動繞制生成的代理。 – 2009-12-03 18:16:55