2012-12-12 54 views
1

我們正在設計一個主要基於雲的應用程序。幾乎應用程序的所有功能都將是.NET MVC 4.然而,應用程序有兩個元素需要通過USB驅動兩個特定的硬件。需要架構建議 - 客戶端雲 - 硬件控制

我們將爲Mac和Windows這兩種硬件設備創建必要的驅動程序。

問題是基於瀏覽器的應用程序需要與在客戶端安裝並運行的驅動程序通信。

這是一個多站點部署,因此服務器端需要實時與不同的客戶端進行通信。

例如,讓我們來看一個假裝場景來說明問題。

「基於雲的安全系統,外部託管,需要與特定建築物門上的磁鐵鎖對話。」

驅動程序將在客戶端PC/Mac上作爲守護程序或服務運行。

我很高興的通信是在服務器和司機前端Web應用程序(Java/HTML)交談的驅動程序(如果可能的話)上運行的後端應用程序之間。

它也需要工作跨瀏覽器和跨平臺的,因此Flash,Silverlight和的ActiveX都出了方程(幸運!!)的

這將是一個強大的,可擴展性和高性能的解決方案?從瀏覽器發出的請求到命中設備驅動程序之間,需要很少的延遲時間。例如,在Web應用程序中發出命令需要10秒才能到達驅動程序,這是不可接受的。

因此,我們需要某種可靠的客戶端 - 服務器服務總線,可以快速跨雲運行。

注意事項:我們正在考慮將AWS作爲託管環境。 AWS是否具有此架構所需的客戶端 - 服務器服務總線?如果我確實使用了亞馬遜AWS路線,這是否會滿足我的需求:http://aws.amazon.com/sns/

另一個考慮:JavaScript可能觸發客戶端上可能被守護進程/服務拾取的東西?這將是一個非常簡單的解決方案,因爲它幾乎沒有延遲。我知道有很多安全限制(出於顯而易見的原因),所以我不知道JavaScript能夠在客戶端上做什麼。它只需要發送一個XML命令給我的正在運行的服務。

希望有人能建議。

+0

我可以簡單地使用WCF回調功能嗎? – SimonGoldstone

回答

1

這可能是像RabbitMq這樣的東西的一個很好的使用?網絡客戶與RabbitMq進行交談,RabbitMq會與適當的現場客戶進行交談?

我不知道SNS,但它看起來像兔子類似的東西。如果你在亞馬遜上託管,這可能是一條路。

讓Web客戶端與驅動程序客戶端通話將太多的責任放在Web客戶端IMO上。讓它只需要處理與消息中介交談並讓它處理通知訂閱者。

注意:我不是這方面的專家,但由於沒有人更聰明,我覺得這是值得的職位。基本上,我認爲你的初始本能(亞馬遜SNS)是正確的。

+0

感謝您的意見。我以前從來沒有聽說過RabbitMq - 有一個快速的看,它看起來很有趣,特別是因爲它是開源的,跨平臺的,似乎有很多的支持和工具。感謝這一點。 – SimonGoldstone

+0

我想我已經決定了SignalR。看起來非常好。 – SimonGoldstone