Socket(TCP、UDP)、Webservice、WCF、WebAPI的基礎使用


(一)概念

一、OSI七層模型圖:

應用層:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗,協議有TCP UDP

網絡層:進行邏輯地址尋址,協議有ICMP IGMP IP(IPV4 IPV6)

數據鏈路層:建立邏輯連接、進行硬件地址尋址、差錯校驗等功能,用MAC地址訪問介質

物理層:建立、維護、斷開物理連接。(由底層網絡定義協議)

二、本章知識

1.TCP

  位於OSI傳輸層,基於soap(信封)協議;

  數據格式是xml、Json;

  是面向連接的,需要先建立連接;

  TCP協議是一個可靠的傳輸協議,它可以保證傳輸的一個正確性,保證我們的不丟包不重復,而且數據是按順序到達的,保證不丟包(握手需要三次,揮手卻要四次);

  典型的 TCP/IP之上的協議有 FTP、MSMQ、TCP、Telnet、SMTP、SNTP,HTTP,HTTPS、Named 、Pipes 等。

  傳輸速度慢(原因之一:握手需要三次,揮手卻要四次);

2.UDP

  位於OSI傳輸層;

  數據格式是xml、Json;

  面向無連接的,不需要先建立連接;

  UDP協議是一個不可靠的協議,它是不保證我們的數據能夠可靠完整的到達,他只是盡最大的努力去完成交付的,不保證不丟包;

  典型的 TCP/IP 應用有ip電話、流媒體、DNS、DHCP、SNMP(簡單網絡管理協議)等;

  傳輸速度快;

  實時性抗干擾性強。

3.Socket(套接字)

  socket是一個抽象層,它將復雜的TCP、UDP操作簡化成一下操作;

  (1)表達式:套接字Socket=(IP地址:端口號);

  (2)三種類型:

    a.流套接字(SOCK_STREAM):
      流套接字用於提供面向連接、可靠的數據傳輸服務,使用了TCP協議進行數據的傳輸
    b.數據報套接字(SOCK_DGRAM):
      提供一種無連接的服務。使用UDP協議進行數據的傳輸。
    c.原始套接字(SOCK_RAW):
      用來處理其他協議發送的數據(處理IP數據包)。
  相比http協議可以 實現服務器推送技術

4.Http協議(超文本傳輸協議)

  位於OSI應用層,通常運行在TCP之上;

  缺陷: 通信只能由客戶端發起,HTTP 協議做不到服務器主動向客戶端推送信息。

5.Webservice

  基於SOAPHttp協議,Web Service = SOAP + HTTP + WSDL;很老的東西,只有.net framework支持,net core3.1運行時之后到net5運行時不在支持。,優點支持映射自定義的【數據集(DataSet.xsd)】與WinForm結合使用。 

    注:DataSet.xsd和實體類用法一樣,我沒試過WCF和WebApi可不可以。 

6.WCF:

  WCF與Web Service的關系:Service是早期的技術實現了,也是soap的東西,采用的主要是http協議。微軟的Web服務實現稱為ASP.NET Web Service,采用Web Service 規范。它使用Soap簡單對象訪問協議來實現分布式環境里應用程序之間的數據交互。更新完善幾代后,微軟就推崇WCF了。

  WCF是對於ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的整合,WCF最基本的通信機制是SOAP。

  可以基於TCP或者MessegeQueue來傳輸數據;

  WCF 支持多種通信協議 Http/Https 、TCP/UDP、MSMQ、命名管道、對等網、消息可達性、事務流等;

  WCF 支持多種消息傳輸格式 :text,binary,mtom,Json 等。

  由於WCF完全是由托管代碼編寫,因此開發WCF的應用程序與開發其它的.Net應用程序沒有太大的區別,我們仍然可以像創建面向對象的應用程序那樣,利用WCF來創建面向服務的應用程序。

6.WebAPI(是一個比較寬泛的概念。這里我們提到Web API特指ASP.NET(Core) Web API)

  基於http協議上,

  數據格式可以是xml,json,ATOM;

  WCF像是把大刀,它能夠被眾多使用不同協議(HTTP、TCP、MSMQ等)的客戶端消費;WebAPI是輕便的小刀,它能夠構建服務於大范圍客戶端的HTTP服務,配置較WCF簡單上手快;

  支持get,post,put,delete等請求;

  支持MVC的特征,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。

   WebService三要素
 
  1.SOAP (Simple Object Access Protocol):簡易對象訪問協議,soap用來描述傳遞信息的格式。
 
  2.WSDL (WebServices Description Language):Web服務描述語言,用來描述WebService、以及如何訪問WebService
 
  3.UDDI (Universal Description Discovery and Integration):通用描述、發現及整合,用來管理、分發、
查詢webService。

 

  補充

  SOAP:微軟所提出的用於創建在因特網上傳輸的結構化格式數據或消息的協議。SOAP是使用WCF和XML格式的主要基礎。

  REST:並非是像SOAP那樣的協議。它是用來構建Web Services的一種架構設計模式。Web API使用這種模式來構建Web服務。

三、WCF與WEBAPI的選擇:

  1、當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇WCF

  2、當你想創建一個服務,可以用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支持HTTP,你應該選擇WCF。

  3、當你想創建一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特征時(比如URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇Web API

  4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API

  引自:https://www.cnblogs.com/Arlar/p/9940631.html

(二)創建Demo

 

一,進度:

WebSocket

待學習

Webservice

整理接近結束

WCF

整理中

WebAPI

整理完畢

二,補充

1.,WebSocket

  (1)Demo觀看講解:

2,Webservice

  (1)Demo觀看講解:

3,WCF

  (1)Demo觀看講解:

4,WebAPI(ASP.NET Core)

  (1)Demo觀看講解:

    Demo:

    

    DemoTest:

 

   (2)API調試工具推薦:

    a.Postman

    b.Demo中的調試工具

    c.調試環境用調用工具:swagger框架


免責聲明!

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



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