2013-05-15 189 views
0

我管理一家公司的網站,該公司在與該網站的原始開發人員不滿意後僱用了我的網站。該網站的一個功能是添加新病人。添加患者的一部分是通過小應用程序從客戶機上的USB端口接收數據。自Java 7更新21以來,該小程序無法運行,並且該公司要求刪除該小程序並將其替換爲其他解決方案。但是,由於小應用程序正在偵聽來自服務器的客戶端USB端口以檢索數據,因此我無法執行此操作。我想到了一些想法來解決這個問題,但我不確定它是否有可能並且無法在網上找到答案。我希望這裏有人能告訴我,如果我的想法是可能的,或者指向正確的方向。服務器偵聽客戶端串行端口

當用戶添加新患者時,網站將在服務器上調用Web服務。然後,該Web服務將在客戶端上調用WCF託管的Windows服務並激活其串行端口偵聽器。一旦客戶端的Windows服務接收到數據,WCF就會響應服務器上的Web服務並解析數據。

我遇到的麻煩是找到一種方法,Web服務可以調用客戶端下載的WCF,讓它開始監聽USB端口。如果有人能告訴我如何做到這一點,或者建議讓服務器啓動客戶端監聽串口的更好方法,我將不勝感激。

+0

小應用程序未在服務器上運行。它在客戶端上運行。 –

回答

0

您有任何系統要求? 進入新患者時,預計什麼樣的瀏覽器? 這是否會被部署爲一個解決方案,或者客戶希望您的應用程序 可以支持任何現代瀏覽器?

主要的問題是瀏覽器在你允許執行的代碼種類方面是非常有限制的。默認情況下,瀏覽器不允許 執行任何插件/讀取任何USB端口,更不用說執行/安裝 任意wcf服務。

所以,假設你有要求 '任何現代瀏覽器' - 你有以下選擇:

  1. 的Java/ActiveX技術的小程序插件。我相信這是在客戶機上訪問usb 的唯一可靠方法。此外,插件必須使用可信證書進行簽名,或者客戶端必須允許執行不可信插件 (再次檢查要求)。我雖然silverlight也 是一個有效的替代品,但根據我的研究(請糾正,如果我錯了) - 其安全 模型不允許任何種類的USB訪問。

  2. 提示用戶下載並安裝可訪問USB的瀏覽器插件/幫手對象。 然後通過這個插件與您的網頁進行通信。

在我看來,在客戶端安裝整個wcf服務將是一個矯枉過正的行爲。 你將不得不管理,如防火牆的問題,關閉端口,安全, 寫一個自託管WCF溶液等

但是,如果你設法安裝和主機上的客戶端WCF服務:

當用戶添加新病人時,網站將在服務器上調用Web服務。 此Web服務將在客戶端調用WCF託管的Windows服務並激活其串口偵聽器。

爲什麼不直接從頁面保存往返和呼叫客戶端服務? 服務器需要知道客戶端地址才能調用它,但這並非總是可行。 很可能您的網頁會嘗試訪問localhost,在您的wcf服務正在偵聽的預定義端口 處。

客戶端的Windows服務收到數據後,WCF 將響應服務器上的Web服務並解析數據。

這將是更容易在響應號召,從您的網頁(使用輪詢如果USB讀取速度慢), 然後才發送給服務器。瀏覽器已經知道在哪裏發送數據,並且有權限 這樣做。但是,如果您的服務器地址是衆所周知的,並且可以通過域名 訪問,則可以嘗試從客戶端的wcf連接到它。

也有一個非常類似的話題,討論connection to usb from client

相關問題