好用的网络框架。MKNetworkKit的介绍,入门,翻译

这片文章也有塞尔维亚-克罗地亚语(由Jovana Milutinovich翻译)和日语(由@noradaiko翻译)

如果有个一个网络库能够自动的为你处理cache该有多好啊。

如果有一个网络库能够在设备离线的时候自动的记住用户的操作该有多酷啊。

当你离线的时候,你喜欢了一条微博或者把一条新闻标记为已读,然后网络库会在设备连网后自动执行这些操作,并且还不用写一行多余的代码。下面我们就介绍MKNetworkKit可以做到这些。

什么是 MKNetworkKit?

MKNetworkKit 是一个用objective-c写的网络库,具有无缝连接,基于blockARC支持以及易用等特点。

MKNetworkKit的灵感来自于其他两个流行的网络库:ASIHTTPRequestAFNetworking,结合了两个库的共同特点,并且有一些新的特性。除此之外,MKNetworkKit可能会比其他网络库而言为了代码的清晰性,要求你写一丁点多的代码。用了MKNetworkKit,你很难写出丑陋的网络代码。

特性

超轻量级

The complete kit is just 2 major classes and some category methods. This means, adopting MKNetworkKit should be super easy.

完整的库只有2个主类和一些category方法。也就是说,采用MKNetworkKit是非常容易的。

整个应用共享单一队列

严重依赖网络连接的应用应该优化他们的网络并发连接数。十分不幸的是,现在还没有网络库可以正确的完成这些功能。让我来举个例子说明如果你不去优化或者控制网络的并发连接数会发生什么。

Let’s assume that you are uploading a bunch of photos (think Color or Batch) to your server. Most

假如你正在上传一系列的图片(比如Color Batch)到服务器。大多数的移动网络(3G)不允许一个给定的IP地址超过两个的并发的http请求。这就是说,在你的设备上,3G网络下,你不能同时打开超过两个的并发HTTP请求。EDGE网络就更差了,大多数情况下你甚至不能打开超过一个的连接。这个限制在传统的wifi的情况下是相当高的(6个)。但是,你的设备并不总是连接到Wifi下,你应该为受限制的网络环境考虑。在最普通的情况下你的设备都是连接到3G网络,就是说你被限制同时只能上传2张图片。现在问题的关键不是上传两张图片时很慢,而是当你上传图片时再打开一个新的View,这个view在加载图片的缩略图的时候。当你不去通过app控制正确的队列大小时,你的缩略图加载操作就会超时,这种现象可不是正确的。正确的做法是把缩略图的加载排好优先级,或者等待上传完成后再加载缩略图。这就要求你的app有一个全局的队列。MKNetworkKit自动的保证你的app的每一个队列的实例使用单一的共享队列。虽然MKNetworkKit自己不是单例的,但是他的共享队列是。

正确的显示网络连接的标志

现在有许多第三方的类使用记录网络调用的次数的方式来控制网络链接标志的显示。但MKNetworkKit使用的是单一共享队列原则来控制网络标志的显示,即通过KVO注册共享队列里正在运行的操作。作为一个开发者,妈妈再也不用担心手动设置网络连接标志的问题了。

if (object == _sharedNetworkQueue && [keyPath isEqualToString:@"operationCount"]) { [UIApplication sharedApplication].networkActivityIndicatorVisible = ([_sharedNetworkQueue.operations count] = 0); }

Auto queue sizing 自动队列大小

我们继续前一个讨论。我说了移动网络不允许同时超过两个并发网络请求。所以当3G网络时你的队列大小应该设为2MKNetworkKit自动为你处理这些。当网络进入3G/EDGE/GPRS时,它会更改并发连接的数目为2,并且在连接wifi时自动设置回6。有了这个特性,你会看到当你通过3G网络从服务器加载缩略图(或者多个小的请求)时有巨大的性能提升

Auto caching 自动缓存

MKNetworkKit可以自动缓存你的所有GET请求。当你发起同样一个请求的时候,MKNetworkKit会立即用缓存的响应(如果有)来调用完成方法,也会向远程服务器发出一个请求。当服务器的数据返回以后,会用取到的新的相应再次调用完成方法。这就是说,你不需要手动的处理缓存,你需要做的,就只有调用这个方法:

原文太长,无法转帖了,这里给出传送门 iOS Framework: Introducing MKNetworkKit (MKNetworkKit介绍,入门,翻译)

你可能感兴趣的:(EasyIOS,MKNetworkKit)