【问题标题】:Server listen to Client Serial Ports服务器监听客户端串行端口
【发布时间】:2013-05-15 21:23:04
【问题描述】:

我为在对网站的原始开发者不满意后雇用我的公司管理一个网站。该站点的一个功能是添加新患者。添加患者的一部分是通过小程序从客户端机器上的 USB 端口接收数据。自 Java 7 更新 21 以来,小程序无法工作,公司已要求删除小程序并用不同的解决方案替换它。但是,由于小程序从服务器侦听客户端 USB 端口以检索数据,因此我在执行此操作时遇到了麻烦。我已经想到了一些解决这个问题的想法,但不确定是否可行并且无法在线找到答案。我希望这里有人能告诉我我的想法是否可行,或者为我指明正确的方向。

当用户添加新患者时,网站将调用服务器上的网络服务。然后,此 Web 服务将调用客户端上的 WCF 托管 Windows 服务并激活其串行端口侦听器。一旦客户端的 Windows 服务收到数据,WCF 将响应服务器上的 Web 服务并解析数据。

我遇到的问题是找到一种方法,让 Web 服务可以调用客户端下载的 WCF 并让它开始侦听 USB 端口。如果有人能告诉我如何做到这一点,或者建议一种更好的方法让服务器启动客户端侦听串行端口,我将不胜感激。

【问题讨论】:

  • 小程序没有在服务器上运行。它在客户端上运行。

标签: c# wcf web-services windows-services


【解决方案1】:

您有任何系统要求吗? 输入新患者时,需要什么样的浏览器? 这将作为一种解决方案部署,还是客户期望您的应用程序 可以支持任何现代浏览器吗?

主要问题是浏览器在什么方面非常严格 您可以执行的代码类型。默认情况下,浏览器不允许 执行任何插件/读取任何 USB 端口,更不用说执行/安装 任意 wcf 服务。

因此,假设您有“任何现代浏览器”的需求 - 您有以下选项:

  1. Java/activex 小程序插件。我相信这是访问 USB 的唯一可靠方法 在客户端机器上。插件必须使用受信任的证书签名,或者客户端必须允许 执行不受信任的插件(再次检查要求)。我虽然silverlight也会 是一个有效的选择,但根据我的研究(如果我错了,请纠正) - 它的安全性 模型不允许任何类型的 USB 访问。

  2. 提示用户下载并安装可访问 USB 的浏览器插件/帮助对象。 然后通过这个插件和你的网页进行通信。

在我看来,在客户端安装整个 wcf 服务将是一种矫枉过正的做法。 您必须管理防火墙、封闭端口、安全性等问题, 编写自托管 wcf 解决方案等。

但如果您设法在客户端安装和托管 wcf 服务:

当用户添加新患者时,网站将调用服务器上的网络服务。 然后,此 Web 服务将调用客户端上的 WCF 托管 Windows 服务并激活其串行端口侦听器。

为什么不保存往返并直接从页面调用客户端服务? 服务器需要知道客户端地址才能调用它,这并不总是可能的。 您的网页可能会尝试在预定义的端口访问 localhost, 您的 wcf 服务正在侦听的位置。

一旦客户端的 Windows 服务收到数据,WCF 将响应服务器上的 Web Service 并解析数据。

从您的网页响应呼叫会更容易(如果 USB 读取速度慢,请使用轮询), 然后才发送到服务器。浏览器已经知道将数据发送到哪里,并且拥有权限 这样做。但是如果你的服务器地址是众所周知的,可以用域名访问, 您可以尝试从客户端上的 wcf 连接到它。

还有一个很相似的话题,讨论connection to usb from client

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多