服务器侦听客户端串行端口

时间:2013-05-15 21:23:05

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

  1. Java / activex applet插件。我相信这是获得USB的唯一可靠途径 在客户端机器上。插件也必须使用可信证书签名,否则客户端必须允许 执行不受信任的插件(同样,检查要求)。我虽然银光也会 是一个有效的选择,但根据我的研究(请纠正,如果我错了) - 它的安全性 model不允许任何类型的USB访问。

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

  3. 在我看来,在客户端安装一个完整的wcf服务会有点过分。 您必须管理防火墙,封闭端口,安全性等问题, 写一个自托管的wcf解决方案等。

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

      

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

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

      

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

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

    还有一个非常相似的主题,讨论connection to usb from client