【问题标题】:Can a Request Be Made To a Desktop Application Over the Web?可以通过 Web 向桌面应用程序发出请求吗?
【发布时间】:2021-09-21 08:41:54
【问题描述】:

我有一个桌面应用程序,我在此应用程序中使用 Process.Start 属性。我可以通过网络向这个程序发送请求吗?

注意:我无法在设备上安装 iis 或类似的东西,因为它是公司计算机。

【问题讨论】:

  • 如果您在公司环境中,很可能所有入站通信都受到限制,您将很难接收传入请求。如果您有一个可供使用的云环境,您可以在那里对请求进行排队,并让您的本地应用程序轮询待处理的请求。

标签: javascript c# process


【解决方案1】:

通常,桌面应用程序将在此处充当客户端,并联系服务器(可能与运行 Web 应用程序的服务器相同,也可能是仅用于 API 访问的稍微不同的服务器)。 可能浏览器应用程序与桌面应用程序通信,方法是让桌面应用程序将自身安装为自定义协议处理程序 - 但这可能需要比您在桌面计算机上获得的权限更多的权限,并且它相对复杂。让桌面应用程序与服务器通信,而浏览器应用程序与服务器通信,但不直接相互通信:这是一种更简单的设置。

如果您打算在同一台机器上没有任何类型的浏览器会话,那么:

  • 桌面应用需要作为客户端运行、连接到服务器并侦听消息,或者:
  • 应用程序需要成为服务器,并打开一个入站 TCP/UDP 端口,以侦听连接/消息

第二个选项带来了更多的安全问题;在许多公司场景中,这可能会被公司防火墙禁止和阻止,或者甚至可能让网络安全人员带着一个纸板箱来到您的办公桌前放您的东西。

【讨论】:

    【解决方案2】:
    1. 您需要在 Internet 或公司 LAN 内的某个位置设置您的服务器。
    2. 桌面应用程序应连接到此服务器并保持连接,等待数据。或者,如果您的方案允许一些延迟,您可以通过计时器检查新数据。
    3. 当您需要发出请求时,您会将数据发送到您的服务器(可能包括客户端 ID 或类似的东西,以识别桌面应用程序的确切实例)。
    4. 服务器将数据转发到桌面应用,然后将应用的响应转发给您。

    注意:如果没有中间服务器,您将无法直接连接到桌面客户端,因为公司计算机很可能没有“白色”IP,并且位于公司的 NAT 后面。

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 2020-06-05
      • 2012-02-27
      • 2023-03-17
      • 2014-12-21
      • 1970-01-01
      • 2012-01-19
      • 2020-12-21
      • 1970-01-01
      相关资源
      最近更新 更多