FSLIB.NETWORK網(wǎng)絡(luò)庫是一款目前專注于HTTP的高性能高易用性網(wǎng)絡(luò)庫,F(xiàn)SLib.Network 是訂票助手.NET的一個(gè)副產(chǎn)物。開始在設(shè)計(jì)訂票助手.NET的時(shí)候,我就在策劃寫一個(gè)比較易用的HTTP客戶端庫來完成底層的操作。由于.NET原生的HttpWebRequest比較復(fù)雜難用,而內(nèi)置的WebClient先天不足。在這種種背景之下,我花了很長的時(shí)間來打磨這個(gè)網(wǎng)絡(luò)庫。雖然起名叫Network,但是目前專注于HTTP庫。這個(gè)網(wǎng)絡(luò)庫在訂票助手.NET中得到了廣泛全面的使用,幾乎所有對(duì)12306發(fā)出的請(qǐng)求都是由它發(fā)出的。在訂票助手.NET中,最近四個(gè)月中,由它發(fā)出的請(qǐng)求過億,其穩(wěn)定性也是蠻有保證的嘛。
變更詳情
修正錯(cuò)誤的JSON.NET庫依賴版本號(hào)
上傳和下載支持性能計(jì)數(shù)(平均速度/當(dāng)前速度/預(yù)計(jì)剩余時(shí)間/已用時(shí)間)
請(qǐng)求頭原生支持 Origin
修正當(dāng)上傳數(shù)據(jù)無法計(jì)算長度時(shí)拋出異常的BUG(改為自動(dòng)啟用緩沖)
文件下載模式支持使用自定義流
修正異步模式下,進(jìn)度報(bào)告錯(cuò)誤的BUG
調(diào)整了部分的Cookies默認(rèn)設(shè)置(如容量等)
支持無CookiesContainer模式
默認(rèn)將300以上請(qǐng)求識(shí)別為文本模式
修正特定情況下對(duì)Cookeis處理模式的設(shè)置未能起效的bug
修正特定的URI會(huì)導(dǎo)致Refer報(bào)錯(cuò)的BUG
修正匿名類型中HttpPostFile文件上傳的識(shí)別錯(cuò)誤
一堆輔助函數(shù),F(xiàn)luent API設(shè)置參數(shù)
JSON序列化默認(rèn)使用自動(dòng)Type處理
功能特點(diǎn)&運(yùn)行需求
其實(shí)它是對(duì)HttpWebRequest/HttpWebResponse的包裝,目的是為了用起來更簡單明了。設(shè)計(jì)的時(shí)候就為了提供更高的可用性和擴(kuò)展性。所以……它具備……如下的特性。
高綜合處理能力:自動(dòng)處理Cookies,自動(dòng)跟蹤引用頁,自動(dòng)GZIP壓縮解壓縮,自動(dòng)編碼識(shí)別……
自動(dòng)的數(shù)據(jù)處理能力:理論上你想發(fā)的數(shù)據(jù),不用轉(zhuǎn)換丟給它,它都能給你發(fā)出去;理論上你想收的對(duì)象,類型丟給它, 它都能給你弄回來……
高健壯性:如果不是特殊情況,堅(jiān)決不拋異常讓你去catch。相反的是,它用狀態(tài)來向你表示結(jié)果是否正確
高處理能力:完全多線程處理,支持同步、異步、任務(wù)模式,異步時(shí)甚至能自動(dòng)處理同步線程上下文,想用.NET中的await?沒問題
高擴(kuò)展性:豐富的事件以及擴(kuò)展性支持,你可以繼承它來實(shí)現(xiàn)自己想做的事情。甚至都自帶了抓包。。。。
由于編寫時(shí)使用了大量的匿名類型和表達(dá)式,因此不能用于.NET3.5以下的平臺(tái)。目前支持的平臺(tái)為.NET3.5/4/4.5。其中,運(yùn)行在3.5平臺(tái)上時(shí),個(gè)別特性無法使用。
測(cè)試網(wǎng)頁
這里準(zhǔn)備了一個(gè)簡單的測(cè)試程序來展示庫的基本用法。所以呢,先來個(gè)網(wǎng)頁用來返回?cái)?shù)據(jù)吧。
這里準(zhǔn)備的服務(wù)器端程序非常簡單,就是一個(gè)普通的aspx頁面,接收一個(gè)GET或POST請(qǐng)求,將表單中所有數(shù)據(jù)、當(dāng)前地址、是否是JSONP請(qǐng)求以及上傳的文件信息返回。值得一提的是,如果上傳了文件,返回的文件數(shù)據(jù)是經(jīng)過base64編碼的結(jié)果。
代碼如下。
而下面這是測(cè)試程度界面。代碼后面詳述。
注意紅框的地址,這里是本地的測(cè)試服務(wù)器地址。