wp7后台文件传输之-----BackgroundTransferService(一)

之前在"WP7多任务处理之---PeriodicTask"中讲到,WP7在后台任务处理接口中包含一个后台文件传输接口,该接口提供了HTTP/HTTPS协议下的文件传输方式,包含上传和下载.对于一些耗时的,而且对实时性要求不高的上传,下载操作,我们可以放到后台让系统去选择时间来处理. 今天就来讲一下如何创建一个可以在后台传输数据的APP.

在MSDN文档中关于后台文件传输这部分内容,出现最多的几个词是:限制,限制,限制.
由于后台文件传输对电池和数据流量消耗很大,所以微软对这个功能设下了诸多的限制.

关于文件大小的限制:
1.上传文件最大不能超过5MB
2.如果手机在非WIFI状态下,下载文件最大不能大于20MB
3.如果手机在WIFI状态下,但是没有接通外部电源,下载文件的大小不能大于100MB

关于请求队列数目的限制
1.每个应用在队列中最多只能有5个未完成的传输请求.
2.每个设备上,所有应用的并发传输数目只有2个.也就是说每个手机最多只有2个传输任务在同时执行.
3.每个设备上,所有应用在传输队列中最多只能有500个传输请求
4.每个请求的HTTP标头数目最多15个
5.每个请求的所有HTTP标头不能大于16KB

其他的一些限制内容
1.后台数据传输在2G,EDGE,GPRS网络下不会执行.也就是说除非用户用的是3G网络或者连上WIFI,否则后台数据传输是不会执行的.
2.如果在3G环境下,数据传输速度低于50Kbps,或者在WIFI/USB环境下低于100Kbps,那么传输将会暂停并重试.

另外,微软还给了两个关于服务端的忠告
1.如果传输的文件大小大于5M,那么服务器应该返回内容的长度,不然会严重降低传输性能.
2.如果该次传输的内容大于5MB,那么服务器应该支持断点续传,不然会严重降低传输性能.
PS.在MSDN上这段话的原话是这么写的:
The content-length header is required on the server side for files greater than 5 MB. Servers should always return the content-length in responses. Failing to do so can result in severely degraded transfer performance.

Range headers are required on the server side for files greater than 5 MB. Servers should always support range request headers. Failing to do so can result in severely degraded transfer performance.

看到这里.应该差不多崩溃了..这不是坑爹呢嘛.限制比功能还多.但是,微软说,为了用户体验,这些都是必须的.
但是别急..还没完,如果你的应用要包含后台文件传输,还有一些UI方面的限制.不然商店审核时过不鸟的..- -(真TM想问候鲍大爷)

关于UI方面的限制
1.如果你的应用有后台传输功能,那么必须在应用的某个地方提示用户选择是否允许后台传输.
2.如果你的应用有后台传输功能,那么必须提供一个让用户可以查看所有传输状态的地方.
3.如果你的应用有后台传输功能,那么必须提供一个地方让用户可以挂起或者取消传输.

好吧,今天就先这样,下一次我们来实现一个可以后台上传文件的DEMO!!

本文章同步发表在WPDevN: http://www.wpdevn.com/showtopic-47.aspx


posted @ 2012-02-23 10:48  xpsnets  阅读(1478)  评论(0编辑  收藏  举报