我有一個基於Web的提貨/包裝解決方案,用於交付訂單(asp.net/c#)。訂單被標記爲包裝在瀏覽器中,然後立即將標籤信息添加到我們的數據庫中,爲下一部分做好準備...與Windows應用程序的客戶端通信
標籤打印是通過Windows應用程序(用C#編寫的)完成的,方式,因爲我找不到讓瀏覽器的方式來自動打印標籤(即無需用戶點擊打印/ OK等)
問題:
Windows應用程序投票每10秒鐘一次(可能會發生變化),以查看該拾取器/包裝器是否有新標籤。現在,如果我可以讓瀏覽器與標籤應用程序進行通信,那麼輪詢將不再需要,因爲選擇器/打包器只需點擊「準備發貨」並創建標籤數據。
由輪詢過程拉下來的數據並不是很大,但我擔心的是,當我們添加更多的選取器/打包站時,輪詢過程可能會對Web服務器/數據庫產生影響(因爲所有的電臺將投票)。此外,採購商/包裝商不希望等待標籤等待,因此延長輪詢時間是不可能的(如果有的話我希望它儘可能快)
解決方案?
所以,理想情況下,我想要一種瀏覽器和應用程序之間的通信方式(如果可能的話)。或者任何可以消除輪詢需求的方法。也許類似於Comet,它允許服務器在添加新標籤時嚮應用程序發送消息。
理想情況下,不需要特定瀏覽器的解決方案。但這可能要求太高。
一個長期的解決方案是將基於網絡的揀配包裝解決方案移動到標籤應用程序中,但這將是一個lot的工作!
我希望這是明確的,不要太羅嗦。讓我知道如果我可以在這裏添加任何其他細節。提前致謝。
編輯
期待到的WebSockets作爲一種思想。任何意見將不只是歡迎!
更新
感謝所有的意見。我現在已經對如何解決這個問題有了一些想法:
- Websockets。由於我無法輕鬆訪問系統(地理距離),因此可能會出現防火牆問題。
- 從應用程序中讀取瀏覽器cookie。可能的解決方案http://www.codeproject.com/Articles/330142/Cookie-Quest-A-Quest-to-Read-Cookies-from-Four-Pop。這涵蓋了倉庫中正在使用的所有瀏覽器。我可以輪詢本地cookie值,看看是否有任何新標籤已經創建,然後下載它們。因此,不在數據庫服務器上進行輪詢。
- ActiveX控件。限於IE瀏覽器,也許會有一些安全/設置問題與安裝在每臺PC上。
- 保持原樣。測量數據庫服務器上的負載是太多還是正常。
不確定這個問題的解決方案...但SignalR是一個可行的工具,可以將更新從Web服務器「推」到本地計算機上? – 2013-03-26 13:02:52
嗨@RichardB感謝您的回覆。我暫時將代碼留在了輪詢解決方案中。客戶正在轉向另一種解決方案,因此這不再是一個問題。我會研究這個,因爲在工具箱中有另一個工具總是有用的! – 2013-03-26 21:27:50