服务器监听客户端串口



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

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

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

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

主要的问题是浏览器在什么方面有很大的限制你可以执行的代码。默认情况下,浏览器不允许执行任何插件/读取任何usb端口,更不用说执行/安装任意WCF服务。

那么,假设你有"任何现代浏览器"的需求-你有以下选项:

  1. Java/activex applet插件。我相信这是唯一可靠的方法来访问usb在客户端机器上。此外,插件必须与受信任的证书签名,或客户端必须允许执行不受信任的插件(再次检查需求)。我想银光也会是一个有效的替代方案,但根据我的研究(请纠正,如果我错了)-它的安全性

  2. 提示用户下载并安装可以访问usb的浏览器插件/助手对象。

在我看来,在客户端安装整个wcf服务是多余的。你必须管理防火墙、关闭的端口、安全等问题,编写一个自托管WCF解决方案,等等

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

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

为什么不节省往返时间,直接从页面呼叫客户服务呢?服务器需要知道客户端地址才能调用它,这并不总是可能的。可能您的网页可以尝试访问本地主机,在预定义的端口,您的WCF服务正在监听的位置

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

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

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

最新更新