当前位置: 移动技术网 > IT编程>开发语言>.net > 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)

大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)

2018年11月27日  | 移动技术网IT编程  | 我要评论

电动风量调节阀,字贴,康庄美地小学

近来在考虑一个服务选型,dotnet提供了众多的远程服务形式。在只考虑dotnet到dotnet的情形下,我们可以选择remoting、wcf(http)、wcf(tcp)、wcf(restful)、asp.net core(restful)
其中我考察的重点是前4项的效率差异,而在我的测试项目中他们共用同一个接口定义

[servicecontract]
public interface icalc
{
    [operationcontract]
    [webinvoke(method = "post",
            requestformat = webmessageformat.json,
            responseformat = webmessageformat.json,
            bodystyle = webmessagebodystyle.bare,
            uritemplate = "cmd")]
    calcinfo calc(calcinfo pinfo);
}

 

先来对比传入较为简单的calcinfo,该类的json只有如下,其中集合items是空的

{
    "id": 0,
    "method": "test",
    "para1": 0,
    "para2": 0,
    "result": 999,
    "items": []
}

测试从客户端将一个calcinfo的实例传入服务端,服务端稍加修改method返回给客户端的过程,主要测试序列化与传输的用时。记录执行10000次请求的总用时

remoting用时 3.76s
wcf(http) 用时 21.92s
wcf(tcp)用时 5.96s
wcf(restful)用时 2.26s
asp.net core(restfull)用时 16.59s 

 

再来一下比较传输一个较大的calcinfo,该类的json如下,其中items集合有100个子实例

{
    "id": 0,
    "method": "test",
    "para1": 0,
    "para2": 0,
    "result": 999,
    "items": [
        {
            "name": "test 1",
            "para1": 1,
            "para2": 0
        },
        {
            "name": "test 2",
            "para1": 2,
            "para2": 0
        }
//....共有100个子项
    ]
}

remoting用时 12.94s
wcf(http) 用时  47.38s
wcf(tcp)用时 9.2s
wcf(restful)用时 10.67s
asp.net core(restfull)用时 26.08s

把两个时间放在一起对比一下就很有意思了。小流量时remoting比wcf强,wcf(tcp)莫名的高用时,比json的还要高。在大流量的时候wcf的优势体现出来了,基本符合网上大致的观点。其中wcf(restful)让kevin-y印象深刻,几乎与tcp一样的成绩

小流量

remoting用时 3.76s
wcf(http) 用时 21.92s
wcf(tcp)用时 5.96s
wcf(restful)用时 2.26s
asp.net core(restfull)用时 16.59s 

大流量

remoting用时 12.94s
wcf(http) 用时  47.38s
wcf(tcp)用时 9.2s
wcf(restful)用时 10.67s
asp.net core(restfull)用时 26.83s

测试的源代码来这
https://files.cnblogs.com/files/kevin-y/srvspeed2.zip

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网