0

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

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

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

4

1 回答 1

0

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

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

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

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

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

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

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

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

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

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

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

还有一个非常相似的主题,讨论从客户端连接到 USB

于 2013-05-20T22:31:21.290 回答