.NetCore的SOAP客户端比.Net 4.6慢得多?

时间:2018-11-09 14:16:54

标签: performance wcf soap .net-core onvif

对于我的最新项目,我想使用.NetCore实现SOAP客户端,以通过ONVIF标准与网络摄像头进行通信。

这对我来说很好,直到我怀疑自己的表现不佳。使用Wireshark,我可以发现性能问题与网络或摄像机无关,因为凸轮会在预期的时间内响应。但是在获得响应和发送下一个请求之间,我损失了几乎1s的时间。 (参见图片)
.Net 4.6.1 (fast)
.NetCore 2.1 (1s delay between requests)

经过一些调试,检查了我的代码是否缺失后,我已经用.Net 4.6.1测试了我的代码,令人惊讶的是,性能提升非常疯狂。

这是我简化的测试代码:

static void Main(string[] args)
{
    //PREPARATION START
    var messageElement = new TextMessageEncodingBindingElement()
    {
        MessageVersion = 
           MessageVersion.CreateVersion(EnvelopeVersion.Soap12,
                            AddressingVersion.None)
    };

    HttpTransportBindingElement httpBinding = new 
       HttpTransportBindingElement()
    {
        AuthenticationScheme = AuthenticationSchemes.Digest
    };

    var binding = new CustomBinding(messageElement, httpBinding);
    var factory = new ChannelFactory<Device>(binding, new 
        EndpointAddress("http://1x.x.x.x/onvif/device_service"));

    //create Onvif device client
    var client = factory.CreateChannel();
    //PREPARATION END

    var start = DateTime.Now;
    Console.WriteLine($"Starting ...");
    //PERFORMANCE TEST (just ask 50 times for capabilities)

    for (int i = 0; i < 50; i++)
        client.GetCapabilities(new GetCapabilitiesRequest(new
            CapabilityCategory[] { CapabilityCategory.All }));

    Console.WriteLine($"Finished task... it took {DateTime.Now-start}");
}

所以我的问题是,如何增强.NetCore的实现? .NetCore是否有无法正常工作的东西?

提示:我对SOAP / WCF很陌生
提示2:已在Win10(Core和4.6.1)和Ubuntu 18.04上进行了测试

提前感谢您的建议

0 个答案:

没有答案