FSLIB.NETWORK网络库是一款目前专注于HTTP的高性能高易用性网络库,FSLib.Network 是订票助手.NET的一个副产物。开始在设计订票助手.NET的时候,我就在策划写一个比较易用的HTTP客户端库来完成底层的操作。由于.NET原生的HttpWebRequest比较复杂难用,而内置的WebClient先天不足。在这种种背景之下,我花了很长的时间来打磨这个网络库。虽然起名叫Network,但是目前专注于HTTP库。这个网络库在订票助手.NET中得到了广泛全面的使用,几乎所有对12306发出的请求都是由它发出的。在订票助手.NET中,最近四个月中,由它发出的请求过亿,其稳定性也是蛮有保证的嘛。
修正错误的JSON.NET库依赖版本号
上传和下载支持性能计数(平均速度/当前速度/预计剩余时间/已用时间)
请求头原生支持 Origin
修正当上传数据无法计算长度时抛出异常的BUG(改为自动启用缓冲)
文件下载模式支持使用自定义流
修正异步模式下,进度报告错误的BUG
调整了部分的Cookies默认设置(如容量等)
支持无CookiesContainer模式
默认将300以上请求识别为文本模式
修正特定情况下对Cookeis处理模式的设置未能起效的bug
修正特定的URI会导致Refer报错的BUG
修正匿名类型中HttpPostFile文件上传的识别错误
一堆辅助函数,Fluent API设置参数
JSON序列化默认使用自动Type处理
其实它是对HttpWebRequest/HttpWebResponse的包装,目的是为了用起来更简单明了。设计的时候就为了提供更高的可用性和扩展性。所以……它具备……如下的特性。
高综合处理能力:自动处理Cookies,自动跟踪引用页,自动GZIP压缩解压缩,自动编码识别……
自动的数据处理能力:理论上你想发的数据,不用转换丢给它,它都能给你发出去;理论上你想收的对象,类型丢给它, 它都能给你弄回来……
高健壮性:如果不是特殊情况,坚决不抛异常让你去catch。相反的是,它用状态来向你表示结果是否正确
高处理能力:完全多线程处理,支持同步、异步、任务模式,异步时甚至能自动处理同步线程上下文,想用.NET中的await?没问题
高扩展性:丰富的事件以及扩展性支持,你可以继承它来实现自己想做的事情。甚至都自带了抓包。。。。
由于编写时使用了大量的匿名类型和表达式,因此不能用于.NET3.5以下的平台。目前支持的平台为.NET3.5/4/4.5。其中,运行在3.5平台上时,个别特性无法使用。
这里准备了一个简单的测试程序来展示库的基本用法。所以呢,先来个网页用来返回数据吧。
这里准备的服务器端程序非常简单,就是一个普通的aspx页面,接收一个GET或POST请求,将表单中所有数据、当前地址、是否是JSONP请求以及上传的文件信息返回。值得一提的是,如果上传了文件,返回的文件数据是经过base64编码的结果。
代码如下。
而下面这是测试程度界面。代码后面详述。
注意红框的地址,这里是本地的测试服务器地址。