最进项目进行性能优化工作,主要是WCF方面的性能优化。
一丶说说我们项目的结构:
1. 安卓前台,通过创建HTTP请求调用WCF服务
2. WCF后台,主要是提供数据,以及做一些重要的业务逻辑处理
二丶传输格式
数据传输格式:后台处理安卓前台的请求,返回的对象要通过JSON转化之后才返回给前台
注意:JSON转化后的字符串长度一般在10000。
三丶WCF的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
WCF的实例模型和并发模型的设置:
1 [ServiceBehavior( InstanceContextMode = InstanceContextMode.Single,
UseSynchronizationContext = false,
ConcurrencyMode = ConcurrencyMode.Multiple,
IncludeExceptionDetailInFaults = true)]
注意:项目中每一个方法中的执行时间都不会超过一秒(项目中的代码优化已经做到很好了,一般情况下都没有问题)。
三丶尝试的解决方案
1. 字符串压缩
2. 调整限流设置 - serviceThrottling
3. 增大WCF并发时的线程数量
参考:http://www.cnblogs.com/shanyou/archive/2013/02/09/2909569.html
通过这样修改后感觉效果不是很明显。
四丶测试结果
同时开启500个线程去调用WCF服务方法,得到的数据是:
就调用一个方法,JSON转化的字符串长度为6500.
最后面是调用时间,单位为毫秒。
现象:调用的时间会一直在增加,最终的时间为200毫秒。
五丶疑问
1. 为什么调用时间一直在增加,我不是设置了并发模型了,怎么会这样?
2. JSON的大字符串传输有什么好的办法解决?
3. 有没有人有安卓调用WCF的性能优化经验?
最后希望大家给我点建议。