我們有一個客戶端/服務器系統,所有通信都是通過TCP上的二進制/ SSL流使用本地協議完成的。我們所有的代碼都是用C#.NET 2.0編寫的,部分代碼是用3.5編寫的。我們的協議旨在支持各種消息傳遞模式,即請求/響應,並且由於缺乏更好的術語,客戶端或服務器會定期發送單向消息。通過http堆棧原生協議的選項?
我們的目標是將功能添加到我們的系統來進行我們對HTTP協議。這樣做有幾個原因,但我不需要在這裏解釋。請告訴我,如果我應該。
思想是使用標準的請求方法,即嵌入我們的協議爲application /二進制中的HTTP請求。,GET,PUT,POST,但不能刪除,和HTTP規範以下。如果我們的協議只是請求/響應,這將是相當直接的做法。主要關注來自單向消息,更確切地說是來自服務器的未經請求的消息。另一個重要的問題是HTTP不是針對持久連接的,但我相信在HTTP/1.1中這是可以克服的。第三個問題是服務器連接不是無狀態的。
我們一直在設計和原型這幾個星期,我們已經想出了一對夫婦的想法:
- 重構在服務器和客戶端雙方的溝通和協議層的代碼。儘管大部分代碼都是共享的,但在所有可能的情況下都是不成功的。這裏的問題是甚至可以用我們設計不佳的協議來完成?
- 使用代理方法。這就是創建一個使用WCF的HTTP服務器,並解開HTTP消息,並通過持久連接將本地消息中繼到我們的服務器和從我們的服務器中繼。這需要在客戶端實現一層抽象層,以實際維護與代理的兩個連接。一個連接執行請求/響應,另一個連接使用延遲響應技術來傳送未經請求的消息。
- HTTP隧道,我們還沒有研究。
我們希望有人遇到過這個挑戰,並可以提供一些合理的建議嗎?
請接受我的道歉,如果這是錯誤的地方張貼了這個問題。
偉大的建議,但我們的系統在安全網絡中運行,大多數Web代理服務器還不支持WebSockets的。 – Jack 2012-02-23 14:48:01