【问题标题】: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 的后端部分,假设你的应用基于一些后端服务。

    你有两个选择:

    1. 您的桌面应用程序使用与您的 Web 应用程序相同的服务。您必须使用模拟网络浏览器的类来提供数据(curl,即)。如果您的网络应用程序基于 AJAX 推送(APE Server 即),请使用能够运行一些 javascript 的库
    2. 在后端服务中使用带有 JSON 格式的 REST 协议。它易于管理,并受到许多客户端语言 (java/c#/python....) 的支持
    3. 仅为您的桌面应用程序使用专门的端点,对于 C#,您可以使用 WCF,它允许您以其中一种形式进行双向通信。对于JAVA,有WSDL、DWR

    我首选的解决方案是在前端和后端分离 Web 应用程序,将服务公开为 Web 应用程序通过 AJAX 使用的 REST。

    如果我需要与其他桌面应用程序进行真正的双向通信,我将为它创建一个单独的服务/端点。 (猿,WCF,..)

    【讨论】:

      【解决方案3】:

      我看到了几个选项来实现您所要求的部分内容:

      基本上,您通过某种 API 公开应用程序的相关部分(Web 和桌面)并将其用于通信 - 例如 DB 和/或 WCF(SOAP/REST/whatever)。

      注意:

      如果您在同一台计算机上的两个应用程序之间进行某种直接/交互式通信,那么这将是不可能的 - 至少在没有一些安全相关问题的情况下是不可能的。

      浏览器在沙箱中执行您的 Web 应用程序,该沙箱不允许 Web 应用程序和桌面之间直接通信...有一些技术可以帮助规避这种情况(ActiveX、签名的 Java 小程序、一些称为 AIR 的 Flash 技术等)...或者您可以在您的桌面应用程序中托管一些网络浏览器/控件,然后运行网络应用程序...但基本上我建议不要使用任何此类措施...

      如果您真的想走这条路,请更详细地描述您的环境和目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        相关资源
        最近更新 更多