簡體   English   中英

如何將本地安裝的應用程序公開為Web服務?

[英]How to expose locally installed application as Web Service?

假設我在SOA項目中有2個Web服務A和B。 這兩個Web服務都在遠程服務器上運行。 Web服務A僅依賴於可從actor機器上本地安裝的桌面應用程序獲得的信息,這就是所有Web服務A所做的,即提供此信息。 有數百個此類人類參與者具有相同的本地安裝應用程序,它們提供Web服務A所需的自身信息。 Web服務B需要Web服務A的此信息,其結果(這是該項目的全部收益)被提供給發起此過程的那個人類參與者(通過登錄系統並單擊某些命令按鈕)。 因此,這個人類參與者的行為就像Web服務B的使用者。問題是,如何使這個本地安裝的應用程序充當Web Service A(在SOA項目的上下文中)?

這個問題最好由在Web服務和SOA方面具有豐富經驗的人來回答。

該SOA項目使用Java,例如基於Java的ESB,盡管桌面應用程序是Windows應用程序,但是沒有運行Microsoft特定的服務。 該應用程序為外部過程提供c / C ++ API,以調用和檢索Web服務A所需的信息。我想要的是Web服務A和B都托管在遠程服務器上,並且通過ESB相互交互,但是問題是如何使本地應用程序信息可用於Web服務A?

解決方案有兩種

第一個:讓原始客戶端應用程序添加一個帶有Web服務A地址的參數,並使用該地址來調用該服務。

第二個:從客戶端傳遞一個更抽象的用戶標識符(實際上,您很有可能在服務中擁有這樣的字段)。 並使用翻譯服務檢索與此ID對應的物理地址。 為了允許這種翻譯,啟動時充當服務器的桌面應用程序需要在翻譯服務中“注冊”。

如果您使用的是ESB或其他SOA基礎結構(例如服務目錄,消息隊列服務),它將包含構建翻譯服務所需的許多功能。

有關在客戶端計算機中實際托管服務的信息。

最簡單的解決方案是使用與實際應用程序不同的過程,並僅訪問應用程序使用的文件或數據庫。 在這種情況下,您可以使用任何喜歡的基礎結構來開發服務。

一個更復雜的場景是當您需要實際的應用程序來提供服務時。 在這種情況下,您將需要在應用程序中有一個線程來偵聽服務請求。 如果您使用的是WCF,請參閱Hosting Services,以了解如何在應用程序中托管Web服務。

編輯

關於您的一些補充說明。

據我了解,桌面應用程序公開了一個C \\ C ++ API,該API可用於同一台計算機上的外部進程。

您可以編寫將使用此API的Web服務。 谷歌搜索“ C ++ Web服務Windows”將為您提供實現這些目標的幾個相關指示。

另一個好的選擇是使用消息傳遞基礎結構。 大多數JMS提供程序以Java以外的其他語言(包括C ++)提供API。 您的應用程序將是一個C ++ Windows服務,它將偵聽並將消息發送給您的JMS提供程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM