其實這樣比是有問題的,http實際上是一種應用級協議,常用的是http1.0和http 1.1協議。而socket則是一個連線,它直接在鏈路層上進行連線。在該連線的基礎之可以實現各種應用級協議。如透過socket可以實現ftp協議、http、https、NetBIOS、Win、Iron等等,甚至於可以實現藍芽(藍芽連線在.net中不被支援,是因為socket所需引數的協議簇中列舉中沒有藍芽,但可以直接透過資料,實現與藍芽的通訊)。所以http是一個協議與Socket連線是沒有可比性的,在.net中,可實現http協議的連線。正是因為socket功能的強大,所以對於socket程式設計一般用於特殊一點的協議或高效能網路要求的情況下才使用這種程式設計。如果是一般的tcp/ip,在.net中已經實現了其功能封裝。例如WebClient實現http/https,再如.net 4.5新增的HttpClient也可以實現同的功能。但這些功能較為狹窄,那麼在.net中的可插入協議是一箇中庸的選擇。目前實現的有HttpWebRequest/FtpWebRequest。並且可繼承WebRequest實現自己的可插入協議。也就是說,如果我們與httpClient或WebClient與Scoket相比的話,WebClinet/HttpClient是實現特定功能的Socket封裝,它減少開發週期,但底層還是Socket。如果WebRequest與Socket相比的話,WebRequest是實現特定協議的Socket封閉,並可實現可插入協議。換句來說,WebClient是完完全全的一個通訊類,而WebRequest則算是一個協議開發類(它已經實現了FtpWebRequest及HttpWebRequest),而Socket則是底層開發。
其實這樣比是有問題的,http實際上是一種應用級協議,常用的是http1.0和http 1.1協議。而socket則是一個連線,它直接在鏈路層上進行連線。在該連線的基礎之可以實現各種應用級協議。如透過socket可以實現ftp協議、http、https、NetBIOS、Win、Iron等等,甚至於可以實現藍芽(藍芽連線在.net中不被支援,是因為socket所需引數的協議簇中列舉中沒有藍芽,但可以直接透過資料,實現與藍芽的通訊)。所以http是一個協議與Socket連線是沒有可比性的,在.net中,可實現http協議的連線。正是因為socket功能的強大,所以對於socket程式設計一般用於特殊一點的協議或高效能網路要求的情況下才使用這種程式設計。如果是一般的tcp/ip,在.net中已經實現了其功能封裝。例如WebClient實現http/https,再如.net 4.5新增的HttpClient也可以實現同的功能。但這些功能較為狹窄,那麼在.net中的可插入協議是一箇中庸的選擇。目前實現的有HttpWebRequest/FtpWebRequest。並且可繼承WebRequest實現自己的可插入協議。也就是說,如果我們與httpClient或WebClient與Scoket相比的話,WebClinet/HttpClient是實現特定功能的Socket封裝,它減少開發週期,但底層還是Socket。如果WebRequest與Socket相比的話,WebRequest是實現特定協議的Socket封閉,並可實現可插入協議。換句來說,WebClient是完完全全的一個通訊類,而WebRequest則算是一個協議開發類(它已經實現了FtpWebRequest及HttpWebRequest),而Socket則是底層開發。