開源NetWorkSocket通訊組件
前言
在《化繭成蝶,開源NetWorkSocket通訊組件》發表之后,收到大家很多個star,在此感謝!更可貴的是,一些網友提出了許多好建議,經過一些時間的思考,決定將NetworkSocket從模仿MVC之后,繼續模仿Owin,並局部突破,作有自己特色和理念的通訊框架。之所以模仿Owin而不是接入,是因為Open Web Interface for .NET是為Web而存在的,我需要的是應該是Open Tcp Interface for .NET,當然這是還不存在的標准,但我想達到或接近這種標准,服務器和通訊協議分離不耦合,通訊協議以中間件開發,對於想開發自定義協議的開發者,只要開發一個中間件就夠了,對於一般使用者,想使用哪此功能,就Use相關的中間件就可以。
OTin思想
我把框架分為服務器和中間件兩大部分,服務器監聽連接、維護連接會話和收到會話請求時執行中間件,中間件是具體的執行單元,往往和某種協議有關系,或者說是某種協議實現的framework。NetworkSocket的http協議、websocket協議支持分別是HttpMiddleware和WebsocketMiddleware



其中最重要的就是三個接口,IListener負責生成IContenxt傳遞給IMiddleware執行。如果有多個IListener實現者,那么中間件也可以在這多個IListener實現者中運行。NetworkSocket原來支持的http等功能,雖然改為中間件形式實現了,但使用風格還是保持不變。這個正像支持 Owin的webApi開發和MVC4 WebApi開發風格上沒什么大變化一樣。而且原來一端口一協議的弊端現在也不存在了,單端口可以支持多協議,只要這些協議不沖突,現在,多協議的通訊變成了中間件的選擇而已:
public class HomeController : HttpController { [HttpPost] public ActionResult Index(User user, bool fAdmin = false) { return Json(new { state = true }); } } public class FastMathService : FastApiService { [Api] public int GetSum(int x, int y, int z) { return x + y + z; } } public class WebSocketSystemService : JsonWebSocketApiService { [Api] public UserInfo[] SearchUsers(string name) { return new UserInfo[0]; } } var listener = new TcpListener(); listener.Use<HttpMiddleware>(); listener.Use<JsonWebSocketMiddleware>(); listener.Use<FastMiddleware>(); listener.Start(1212);
如何使用
在這里我不想把NetworkSocket的功能貼出然后介紹有多Easy等等了,這顯得沒必要了。我精心了作了一個Demo,里面剛好是入門使用的介紹,功能全面而有趣。
重定義這個組件
現在,我想重新定義這個組件:
這是一個通訊服務和協議完全分離的框架,單端口允許多種通訊協議並存,除了內置的Http、WebSocket、Flex策略和Fast中間件,開發者還可以開發自己的中間件並安裝到通訊服務
感謝你的閱讀,如果對源代碼感興趣,可以上github提建議:https://github.com/xljiulang/NetworkSocket