2016-06-09 65 views
1

我正嘗試使用OracleDBBinding配置WCF服務,以每x分鐘從Oracle數據庫獲取數據。由於綁定配置,這個輪詢是自動的。此WCF服務將在遠程服務器上運行。將消息從遠程WCF服務推送到BizTalk

問題是我如何獲得遠程WCF服務獲取回BizTalk的數據?

在WCF服務中是否有特定的配置來啓用它?

我只是在BizTalk中創建一個WCF-basicHTTP接收位置並將該URL指向遠程WCF服務?

+1

您可能必須指向正在由BizTalk公開的WCF服務進行輪詢的遠程WCF服務。 – Dijkgraaf

+0

我猜你在說的是在BizTalk服務器上有兩個WCF服務,一個是遠程的,另一個是本地的。你如何將遠程WCF服務指向本地WCF服務?添加一個額外的綁定來代替oracle數據庫綁定? – C4T3

+0

我會查看一個Azure Oracle數據庫連接器,例如http://release.nl/606518/azure-oracle-database-connector-a-step-by-step-configuration.html,然後讓BizTalk連接到該連接。 – Dijkgraaf

回答

0

如同其他人所說的那樣,只需讓BizTalk直接輪詢Oracle DB就是最佳選擇。我會推回你的基礎設施團隊,找到一種方法來實現這一目標。但是,如果您確實無法獲取它,則可以設置遠程WCF服務,以便向BizTalk計算機上的偵聽器端點發出呼叫。爲了儘量減少延遲/通信開銷,您可以在BizTalk端使用NetTCP接收位置。以BizTalk的標準方式進行設置,使用WCF服務嚮導創建IIS應用程序等 - 請參閱https://msdn.microsoft.com/en-us/library/bb728041.aspx)。您的中間服務將成爲此服務的客戶端。順序是這樣的:

  1. 遠程WCF服務調查數據從Oracle
  2. 如果接收到的數據,它連接托特他NetTCP聽衆在BizTalk
  3. 它然後將數據發送到BizTalk
  4. 的BizTalk地圖那裏的數據。

請注意,這會不會最終使用MSDTC整個交易 - 如果你的中間服務拋出異常時,BizTalk將沒有認識/洞察到,也不會對任何的BizTalk監測工具,你可能會被使用。 (這是爲什麼最好只是直接讓BizTalk輪詢)。

就BizTalk而言,這些數據不是來自Oracle,而是來自中間WCF服務。當然,您可以使用看起來像Oracle適配器如何編寫XML的模式 - 但這不是必需的。

這是假設您的遠程服務已經自己進行輪詢(使用System.Threading.Timer或類似的東西)來對付Oracle,並且您都已經設置好了。如果你需要BizTalk來啓動輪詢事件,那麼就沒有什麼可以處理的。你可以嘗試使用Scheduled Task adapter(也許做一個HTTP POST到那個服務?),但是這似乎會更復雜和容易出錯。您還可以設置一個始終返回true的SQL輪詢適配器(例如,有一個pollingdata可用語句,如SELECT 1),併發布另一個端口偵聽並轉發到此服務的消息 - 但是,這又非常混亂,並且不是一個好主意。

2

遠程WCF服務存在的唯一目的是輪詢Oracle數據庫並推送到BizTalk嗎?

我會讓BizTalk直接輪詢Oracle數據庫(使用OracleDBBinding接收位置),然後根據需要將數據發送到遠程WCF服務。

+0

是的,WCF服務的唯一目的是輪詢oracle數據庫並將其推送到BizTalk。由於基礎設施的限制,BizTalk無法直接輪詢oracle數據庫,它必須通過遠程WCF服務。 – C4T3

0

如果您從Oracle檢索數據以用於BizTalk應用程序,那麼您應該有BizTalk直接輪詢數據。意思是說,你不能使用'遠程'WCF服務。

oracleDbBinding支持此確切目的的輪詢。