2012-12-06 44 views
3

我正在編寫一個biztalk編排,需要調用一個Web服務,可能是多個Web服務,並且可能不止一次。我看到兩種選擇,一個,在一個單獨的代碼項目中使用wsdl,然後從表達式形式的代碼中調用Web服務,以及從Biz中獲取它,獲取模式等,並通過請求/響應端口進行調用。這裏最好的做法是什麼?一方面,如果更新了wsdl,它將比模式和端口更容易更新代碼,並且它看起來像很多混亂,並且爲構建多個Web服務調用足夠的端口而努力。另一方面,您可以在端口級別進行的所有調整(重試次數爲1)使其可以強健地調用Web服務。Biztalk和調用Web服務的最佳方式

回答

4

也看到這個問題here,它討論了第三個選項,即在BizTalk中使用add service reference作爲導入XSD的替代方法。

IMO你會通過使用.NET代理來處理集成,從而擊敗使用BizTalk的觀點。例如:

  1. 您是硬編碼協議(WCF),現在需要從您的自定義代碼元帥請求和響應消息/。通過發送端口,任何請求 - 響應機制都可以在部署時進行配置 - 特別適用於單元和集成測試。你會失去BizTalk的消息傳遞機制的所有好處,比如重試,備份傳輸,恢復被暫停的消息,不同端口的不同映射,以及可爭議的整個酒吧子能力(例如,如果多個聽衆想要聽從被叫的網絡服務的反應?)
  2. 你將在哪裏存儲WCF serviceModel配置設置,如端點等?即您已經失去了綁定文件的靈活性。

因此,TL; DR始終使用WCF適配器在BizTalk

但是,這麼說,我同意,更新生成項目,如果消費服務變化可能是凌亂的。 FWIW,我們減輕一些具體步驟如下:

  • 始終創建要在其中導入所有 進口生成的工件單獨的空文件夾。
  • 保留所有生成的項目「原樣」,即做到不動心移動虛擬.odx,或者將其刪除(因爲它具有預配置的端口類型)

不幸的離開下方手動應用仍然需要行動:

  • 記住的端口類型的可見性改變,以public如果文物是在一個單獨的組件,您的業務流程
  • 促進和傑出的導入的模式屬性需要重新申請(例如重新申請在任何改變後記錄屏幕截圖)。可能通過保存和重新粘貼在schma的<xs:annotation>部分來簡化或自動化。
  • 如果您使用的消息合約WCF服務,並重復使用跨多個應用程序相同的引用的消息,您將需要手動刪除添加生成項目創建的副本,然後再參考現有的模式。 (例如,我們對所有的BizTalk調用都有標準的「響應」消息)
+0

它看起來像在Biztalk中添加服務引用爲您提供一個端口,它是我認爲不好的SOAP;我相信最好使用WCF-Custom。它也不會給你一個綁定文件。 – Jeyenne

+0

是的,'WCF-Custom'具有最高的可配置性。 – StuartLC

0

有趣的是,您可以混合使用兩種事件。檢查this出Saravana庫馬爾!

它採用直通接收和使用消耗的發送端口上的dll Web服務,而無需通過創建模式和webports的痛苦去。

這給了Biztalk的所有的電源(路由響應,發送端口配置等),還可以靈活地更改架構無需大驚小怪。

+0

嗨,Saravana Kumar的文章有沒有工作鏈接? – FMFF

相關問題