【问题标题】:Good way of communicating between web and desktop appWeb 和桌面应用程序之间通信的好方法
【发布时间】:2012-01-28 10:50:59
【问题描述】:
我希望我的网络应用(在浏览器中运行)在某个时候与客户端已安装在其计算机中的桌面应用(在 Windows 中)进行(双向)通信。
什么是优雅、模块化和简单的方法(使用 Java 和 C#)?
Web 应用程序和桌面应用程序之间不会传递太多信息。就像“我在这里”、“从这一点开始”等。
【问题讨论】:
标签:
c#
java
windows
desktop-application
【解决方案1】:
我通过使用网络上的数据库解决了这个问题。
通过数据库进行的所有通信。
网站 -> 数据库 -> 用户登录
但是,如果不需要共享受信任的信息,您可以考虑将一些 http 标头发布和读取到公共网站或简单的日志文件。
问候
【解决方案2】:
我建议你使用 webapp 的后端部分,假设你的应用基于一些后端服务。
你有两个选择:
- 您的桌面应用程序使用与您的 Web 应用程序相同的服务。您必须使用模拟网络浏览器的类来提供数据(curl,即)。如果您的网络应用程序基于 AJAX 推送(APE Server 即),请使用能够运行一些 javascript 的库
- 在后端服务中使用带有 JSON 格式的 REST 协议。它易于管理,并受到许多客户端语言 (java/c#/python....) 的支持
- 仅为您的桌面应用程序使用专门的端点,对于 C#,您可以使用 WCF,它允许您以其中一种形式进行双向通信。对于JAVA,有WSDL、DWR
我首选的解决方案是在前端和后端分离 Web 应用程序,将服务公开为 Web 应用程序通过 AJAX 使用的 REST。
如果我需要与其他桌面应用程序进行真正的双向通信,我将为它创建一个单独的服务/端点。 (猿,WCF,..)
【解决方案3】:
我看到了几个选项来实现您所要求的部分内容:
基本上,您通过某种 API 公开应用程序的相关部分(Web 和桌面)并将其用于通信 - 例如 DB 和/或 WCF(SOAP/REST/whatever)。
注意:
如果您在同一台计算机上的两个应用程序之间进行某种直接/交互式通信,那么这将是不可能的 - 至少在没有一些安全相关问题的情况下是不可能的。
浏览器在沙箱中执行您的 Web 应用程序,该沙箱不允许 Web 应用程序和桌面之间直接通信...有一些技术可以帮助规避这种情况(ActiveX、签名的 Java 小程序、一些称为 AIR 的 Flash 技术等)...或者您可以在您的桌面应用程序中托管一些网络浏览器/控件,然后运行网络应用程序...但基本上我建议不要使用任何此类措施...
如果您真的想走这条路,请更详细地描述您的环境和目标。