2011-08-27 95 views
1

我需要實現在.NET的橋樑應用程序,它,在一個較高水平,主持一個WCF服務或讓消費者主持一個?

    在背面會談的OCR系統
  • 向他們發送圖像和找回數據從圖像可讀格式
  • 在前面,應用程序會使用橋接服務(WCF或其他方式)提交圖像並期望可讀數據作爲響應。

整個操作將是異步模式。

將被消耗橋的服務的應用程序可以是.NET或Java主要基於。 (有可能是在未來現有的大型機應用程序太的可能性)

我的問題是關於解決發回可讀的數據返回給消費應用程序。由於WCF回調不能與Java互操作,因此我無法使用wsDualHttpBinding。因此,2層的替代品,我目前看到的是:

  • 一)有託管在其消費 應用程序可查詢的橋樑另一個Web服務。
  • 二)讓每個消費者應用程序主機基於通過自己的技術橋樑提供的 標準化WSDL web服務。 然後,橋接器將在其數據準備就緒時使用應用程序的web服務。

我有兩個選項的問題是:

  • 有了),輪詢始終是資源密集型的,但消費者 應用程序只需要消耗此WebService(生成自己 代理類) 。
  • 用b,對於每一個需要註冊 與網橋應用,他們需要創建自己的Web服務。這個 似乎沒有像SOA架構推薦的那樣如此鬆散耦合。

我的問題是,哪一個更適合保持系統的可擴展性和可擴展性? 有沒有其他的方法來實現這一點?

回答

2

我想在這種情況下,爲解決方案選擇),雖然它可能意味着輪詢......但如果有安全措施(網絡/防火牆/代理...溶液B)有可能有問題)插圖中有可能導致您的服務不能夠調用他們的服務......或者他們可以以某種不兼容的方式實現WSDL ...

即使你實現解決方案b)恕我直言,你將不得不提供解決方案a)作爲後備...

解決方案a)具有最高的工作概率,因爲客戶端必須已經實現了一些webseervice調用來發送圖像數據...

您可以使解決方案a)服務器端相當高效,因爲操作(OCR)相對「長時間運行」,因此當前狀態可以在Web服務中大量緩存 - 可能每10秒更新狀態就足夠了...

編輯:

與溶液B的另一個問題)是:如果他們的web服務是下來一些時刻,當你嘗試調用它會發生什麼?你將不得不實行某種(持久?)隊列等讓這個可靠...

0

我會實現的方式是與使用發佈 - 訂閱如下:

創建兩個消息: GenerateOCRDataRequest - 包含客戶端ID,圖像字節[] OCRProcessCompleted - 包含ClientID,ProcessedData字節[]

客戶端應用程序將訂閱OCRProcessCompleted及其各種clientID作爲過濾器。他們還將發佈GenerateOCRDataRequest幷包含他們的clientID,以便當響應返回時,他們只會獲得他們自己的請求。

網橋應用將認購GenerateOCRDataRequest - 當它接收到它,它會處理,然後將其與必要的數據

在這種情況下發布OCRProcessCompleted,我假設客戶端和橋將有一個隊列,其發佈的消息將被放置,並且它們將根據需要從隊列中簡單地彈出消息。

如果你想按照描述的方式實現場景,你可以使用http://pservicebus.codeplex.com/,它提供了Java和.NET API來做pub-sub。還有一些關於如何在這裏使用它的例子:http://pservicebus.codeplex.com/wikipage?title=Samples%2fExamples&referringTitle=Home

希望幫助

+2

你真的應該提到,你是拉皮條自己的項目... – ErnieL

+0

我拉皮條吧:)它是免費的,所以沒有錢從中獲益 – rpgmaker

相關問題