2011-12-27 81 views
4

我希望我的Web應用程序(在瀏覽器中運行)在某些時候與桌面應用程序(在Windows中)進行通信(雙向),客戶端已安裝在其計算機中。Web和桌面應用程序之間良好的溝通方式

什麼是優雅的模塊化和簡單的方法(使用Java和C#)?

Web應用程序和桌面應用程序之間傳遞的信息不多。就像「我在這裏」,「從這一點挑選」等。

+0

您是否希望網絡應用程序調用桌面應用程序或以其他方式進行調用? – Yahia

+0

@Yahia:兩種方式。 –

+0

看到我的答案下面的一些選項... – Yahia

回答

2

我通過在網絡上使用數據庫解決了這個問題。 通過數據庫進行的所有通信。

網站 - >數據庫 - >用戶登錄< - DB < - 桌面

然而,如果需要共享沒有可信的信息,你可以考慮只發布和閱讀的HTTP標頭,以一個共同的網站,或一個簡單的日誌文件。

問候

0

我建議你用你的web應用的後端部分,假設你的應用程序是基於一些後端服務。

你有兩個選擇:

  1. 你的桌面應用程序使用的Web應用程序的相同的服務。您必須使用模擬Web瀏覽器的類來提供數據(curl,即)。如果您的Web應用程序基於AJAX推送(例如APE Server),請使用能夠運行一些javascript的庫
  2. 在後端服務中使用JSON格式的REST協議。它很容易管理,並得到許多客戶端語言(java/c#/ python ....)的支持。
  3. 僅爲您的桌面應用程序使用專用端點,對於C#,您可以使用WCF,允許您他的形式之一是雙向通信。對於JAVA,有WSDL,DWR

我的首選解決方案是分離前端和後端的Web應用程序,將Web應用程序通過AJAX公開爲REST。

如果我需要與其他桌面應用程序進行真正的雙向通信,我將爲它創建一個單獨的服務/端點。 (APE,WCF,..)

1

我看到幾個選項來實現的部分你問:

Besically你通過某種API和使用的暴​​露你的應用程序(Web和桌面)的相關部分爲通信 - 例如數據庫和/或WCF(SOAP/REST /無論)。

當心:

如果你是某種在同一臺計算機上的應用程序,那麼這將是不可能的直接/互動溝通之後 - 至少在沒有一些安全相關的問題。

瀏覽器在沙箱中執行您的Web應用程序,該沙箱不允許在Web應用程序和桌面之間進行直接通信......有些技術可以幫助規避這種情況(ActiveX,已簽名的Java小程序, AIR等)......或者你可以在你的桌面應用程序中託管一些網頁瀏覽器/控件,然後運行該Web應用程序......但基本上我會建議不要使用任何這樣的措施...

如果你真的想走這條路線,那麼請詳細描述你的環境和目標。

相關問題