网页和桌面应用程序之间的良好沟通方式

本文关键字:方式 桌面 应用程序 之间 网页 | 更新日期: 2023-09-27 18:19:02

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

有什么优雅的、模块化的、简单的方法(用Java和c#)?

web应用程序和桌面应用程序之间不会传递太多的信息,只是像"I was here","Pick this from this point"等。

网页和桌面应用程序之间的良好沟通方式

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

网站->数据库->用户登录<-数据库<-桌面

然而,如果不需要共享可信信息,你可以考虑只是发布和读取一些http头到一个共同的网站,或一个简单的日志文件。

问候

我建议你使用你的web应用的后端部分,假设你的应用是基于一些后端服务。

你有两个选择:

  1. 你的桌面应用和你的web应用使用相同的服务。你必须使用一个类来模拟web浏览器来提供数据(比如curl)。如果你的web应用是基于AJAX推送(即APE服务器)使用库能够运行一些javascript
  2. 使用REST协议,在后端服务中使用JSON格式。它很容易管理,并且被许多客户端语言支持(java/c#/python....)
  3. 为你的桌面应用程序使用专门的端点,对于c#,你可以使用WCF,它允许你以他的一种形式双向通信。对于JAVA,有WSDL、DWR

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

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

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

基本上你通过某种API暴露应用程序的相关部分(web和桌面),并使用它进行通信-例如DB和/或WCF (SOAP/REST/任何)。

注意:

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

浏览器在沙盒中执行你的web应用程序,这不允许web应用程序和桌面之间的直接通信…有一些技术可以帮助规避这个问题(ActiveX,签名Java applet,一些称为AIR的Flash技术等)…或者你可以在桌面应用程序中托管一些web浏览器/控件,从而运行web应用程序…但基本上我不建议使用任何这样的措施…

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