在网络和桌面应用之间进行通信的好方法

时间:2011-12-27 10:50:51

标签: c# java windows desktop-application

我希望我的网络应用程序(在浏览器中运行)在某些时候与桌面应用程序(在Windows中)进行通信(双向),客户端已安装在其计算机中。

这是一种优雅,模块化和简单的方法(使用Java和C#)?

在网络应用和桌面应用之间传递的信息不多。就像“我在这里”,“从这一点上选择”等等。

3 个答案:

答案 0 :(得分:2)

我通过在网络上使用数据库解决了这个问题。 通过数据库进行的所有通信。

网站 - > DB - >用户登录< - DB< - Desktop

但是,如果不需要共享可信任信息,您可以考虑将一些http标题发布和读取到公共网站或简单的日志文件。

问候

答案 1 :(得分:1)

我建议您使用webapp的后端部分,假设您的应用基于某些后端服务。

您有两种选择:

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

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

答案 2 :(得分:1)

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

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

要注意:

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

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

如果你真的想走这条路,那么请详细描述你的环境和目标。