.NET远程处理(Remoting)与WCF的性能对比(2)

本文承接上一篇,背景资料不再重述。

我按照我实际项目的需求,抽取其网络通讯的部分,用.NET远程处理和WCF分别实现,然后测量所耗时间,以此判断两者在我的场景中的性能。

心急的直接跳到最后,有图表和结论。

测试配置

WCF和.NET远程处理都用tcp信道,信道不加密,不使用app.config文件。都是用release编译,不优化。

测试中,客户端向服务端获取进入条件,然后申请进入服务端。服务端收到客户端进入申请后,检查客户端的密码和身份资料,然后让它进入。序列图如下。Profile包括一幅139KB的图片。

.NET远程处理(Remoting)与WCF的性能对比(2)_第1张图片

测量方法

上面所述的过程在程序中进行20次。我编写了一个批处理文件,令程序每隔30秒运行一次,共运行8次。所以上述过程一共执行20×8=160次。

客户端程序一共启动8次,而服务端程序只启动一次。(为先后8个客户端服务。)

进行三组测试。第一次客户端、服务端在一台机器上,访问、监听localhost;第二次客户端、服务端在一台机器上,访问、监听本机的真正IP地址;第三次分机测试。

所得数据



  WCF .NET远程处理 WCF .NET远程处理 WCF .NET远程处理
参数 ip port path (本机) localhost port path
分机调用
  288 109 280 1131 2972 791
  1116 92 1103 1136 1133 591
  348 110 864 1118 1366 606
  852 109 822 1155 1217 580
  859 109 899 1130 1183 591
  857 110 837 1149 1295 581
  866 87 856 1115 1323 502
  829 88 832 1127 1463 560
平均 751.88 101.75 811.63 1132.63 1494.00 600.25
标准差 283.45 10.66 233.31 13.87 606.45 83.36


.NET远程处理(Remoting)与WCF的性能对比(2)_第2张图片

结论

只要不使用localhost,.NET远程处理的效率就约是WCF的2.5倍。此结论与Marcin Celej测出的结论相似。

而不是msdn.microsoft.com说的WCF效率比.NET远程处理高25%,微软论坛上用户测出的“差不多”。

求验证

测试代码在这里下载,各位可以自己测试下,看看结果是不是和我测试出来的一样,测试中是不是有哪里做得不公平?

你可能感兴趣的:(加密,.net,测试,Path,WCF,通讯)