開源NetWorkSocket通訊組件


開源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
  IMiddleware
  IContenxt

其中最重要的就是三個接口,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM