Клиент SOAP намного медленнее с .NetCore, чем .Net 4.6? - PullRequest
0 голосов
/ 09 ноября 2018

для моего последнего проекта я хочу реализовать SOAP-клиент с .NetCore для связи через веб-камеру через стандарт ONVIF.

Это работало нормально для меня, пока я не задумался о своей плохой работе. С Wireshark я мог выяснить, что проблема с производительностью не связана с моей сетью или камерой, потому что камера реагирует в ожидаемое время. Но я теряю почти ТОЧНО 1с между получением ответа и отправкой следующего запроса. (см. рисунки)
.Net 4.6.1 (быстрый)
.NetCore 2.1 (задержка 1 с между запросами)

После некоторой отладки, когда я проверял, не хватает ли мне моего кода, я проверил свой код на .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

Заранее спасибо за ваши предложения

...