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