程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Socket開發框架之框架設計及分析,socket開發框架設計

Socket開發框架之框架設計及分析,socket開發框架設計

編輯:C#入門知識

Socket開發框架之框架設計及分析,socket開發框架設計


雖然在APP應用、Web應用、Winform應用等大趨勢下,越來越多的企業趨向於這些應用系統開發,但是Socket的應用在某些場合是很必要的,如一些停車場終端設備的接入,農業或者水利、壓力監測方面的設備數據采集等,以及常見的IM(即時通訊,如騰訊QQ、阿裡旺旺等)的客戶端,都可以采用Socket框架進行相關的數據采集和信息通訊用途的,Socket應用可以做為APP應用、Web應用和Winform應用的補充。

1、Socket應用場景

一般情況下,客戶端和服務端進行Socket連接,需要進行數據的交換,也就是後台提供數據查詢或者寫入的相關操作,它們的應用場景也是在後台有一個應用數據庫支持的,如下所示。

Socket服務器和客戶端的通訊原理如下所示,客戶端通過服務器地址和端口發起Socket連接,服務器在接收到Socket客戶端的請求後,開辟一個新的Socket連接進行通訊管理,兩方基於Socket協議進行數據的交互處理。

 

2、Socket框架設計思路

Socket開發是屬於通信底層的開發,.NET本身也提供了非常豐富的類來實現Socket的開發工作,Socket框架應針對這些基礎功能進行了很好的封裝處理,已達到統一、高效的使用。

要掌握或者了解Socket開發,必須了解下面所述的場景及知識。

  • TCP客戶端,連接服務器端,進行數據通信
  • TCP服務器端,負責偵聽客戶端連接
  • 連接客戶端的管理,如登陸,注銷等,使用獨立線程處理
  • 數據接收管理,負責數據的接受,並處理隊列的分發,使用獨立線程處理,簡單處理後叫給“數據處理線程”
  • 數據處理線程,對特定的數據,采用獨立的線程進行數據處理
  • 數據的封包和解包,按照一定的協議進行數據的封裝和解包

針對以上內容,可以封裝以下功能的操作類作為共用基類:

  • BaseSocketClient,客戶端基類,負責客戶端的鏈接、斷開、發送、接收等操作。
  • BaseSocketServer,TCP服務器管理基類,負責在獨立的線程中偵聽指定的端口,如果有客戶端連接進來,則進行相應的處理。
  • BaseClientManager,連接客戶端管理類,該類主要負責客戶端登錄超時處理,連接上來的客戶端維護,經過登陸驗證的客戶端維護,客戶端登陸驗證接口,客戶端發送數據處理等功能。
  • BaseReceiver,數據接收處理類,該基類是所有接受數據的處理類,負責維護數據的隊列關系,並進一步進行處理。
  • ThreadHandler,數據獨立線程處理類,對每個不同類型的數據(不同的協議類型),可以用獨立的線程進行處理,這裡封裝了一個基類,用於進行數據獨立線程的處理。

1)Socket客戶端基類

我們知道Socket通訊,分為了客戶端和服務端,它們各自處理的事情是有所不同的,因此為了實現更好的代碼重用,我們在這個基礎上進行了不同的封裝。針對Socket客戶端類,我們主要需要提供基礎的Socket連接及斷開、接收及發送、封包拆包等常規操作過程,因此我們封裝了一個客戶端基類 BaseSocketClient。

但是為了基於不同的應用客戶端,實現不同的業務溝通,我們可以在服務端接收處理不同的客戶端,因此也就是需要對Socket客戶端進行派生擴展,例如本框架增加了一個中心的Socket客戶端、分店的Socket客戶端、還有一個橋接的連接客戶端(可實現轉發數據功能)。

2)Socket服務端基類

相對於Socket客戶端基類,同樣我們也創建一個Socket服務端基類,通過繼承的方式,我們可以用於簡化代碼的重復性。該服務端基類稱為TCP服務器管理基類 BaseSocketServer,負責在獨立的線程中偵聽指定的端口,如果有客戶端連接進來,則進行相應的處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved