2011-01-26 61 views
1

是否可以構建一個可以與一個或多個Web服務進行通信的Web服務(我們稱之爲A)?C#將SOAP請求重定向到另一個WebServices?

一種SOAP代理?

web服務A將建立它的基礎上在服務器B其他Web服務和C

所以客戶端將只發送請求,A和A會知道這裏將請求發送到(B或C)

的功能

是否可以構建這樣的應用程序?

回答

1

這絕對是可能的,它不是生活或綁定到SOAP Web服務的東西,因爲這是應用程序實現問題。你應該更關心的是你將如何去做。

使用數據傳輸對象

已經花了很多時間來開發Web服務,我相信在你的web服務的設計,最好的辦法是遵循Martin Fowler's DTO pattern,你溝通使用特定的遠程服務的DTO的使用客戶端代理(又名服務網關)到Web服務(又名服務接口)。 Web服務的這種「消息風格」從性能,SOA和可重用性的角度來看非常棒。這構成了我的ServiceStack Web服務框架的基礎。

的WCF RPC方法

不幸的最佳實踐慣例實際上由微軟WCF SOAP Web服務框架氣餒,因爲他們鼓勵你發展特定的API-RPC方法,通過堅持您使用方法調用簽名來定義您的Web服務。當然,您仍然可以開發基於消息的API,但需要付出更多努力才能這樣做,並且很少在其在線教程中演示。在我看來,這導致了一個客戶特定的API,它鼓勵更多的遠程方法調用,從而導致性能降低。有時候,我真的希望微軟能夠遵循行業專家發佈的良好規範,而不是他們常常爲拖放式開發人員提供服務的主要動機。

調用多個Web服務異步

讓我們回到你原來的問題,你會定義一個Web服務,需要一個請求,如果你幸運的話,您的所有代理的Web服務共享相同的界面,您應該能夠使用相同的客戶端代理在循環中由更改每個服務端點的網址。我通常建議您將每個請求異步激活異步(並加入最後)到加速您的'主Web服務'的執行時間。

1

不知道我是否理解你的問題的方式,但它可以添加一個服務引用到你的web服務。 哪個網絡服務來發送請求到,你可能要編寫;-)

1

如果我理解正確的話,你必須在你的應用程序3個部分:

  • 客戶端應用程序
  • A「前端」 Web服務「WS A」
  • 其他兩個「後端」 Web服務「 WS B」和「WS C」

的前端,我指的是Web服務是唯一一個暴露給客戶端,在換句話說a 「門面」。

如果這是正確的,可以參考「WS A」項目中的「WS B」和「WS C」。 「WS A」中的代碼可以充當這些Web服務的客戶端。這通常被稱爲SOA架構(面向服務的體系結構),其中每個服務都提供了一個功能性,並且可以相互通信。

當您有基礎設施要求(例如委託客戶端憑證)時,認爲開始有點困難,但我認爲這是實現您想要的最乾淨的方式。

+0

正確,我正在處理這一個,所以我的方法如此正確? – 2011-01-26 14:33:44

相關問題