Моя компания в настоящее время переходит от традиционных веб-сервисов ASMX к веб-сервисам WCF, потому что нам нужна улучшенная обработка сложных типов, доступных в WCF.
При исследовании проблем производительности веб-страницы я обнаружил, что самая большая(в некотором смысле) провал производительности является начальным подключением к службе WCF.Когда я говорю «начальный», я имею в виду следующий фрагмент кода, каждый раз, когда он вызывается, достаточно обновления страницы, чтобы получить медленное соединение:
$client = new SoapClient("<address-to-webservice>",
array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));
Последующие вызовы методов в этом веб-сервисе выполняются быстро,однако соединение необъяснимо медленно.
На той же странице есть соединение со службой ASMX, которая размещена на том же сервере, который подключается намного быстрее.
Connection to WCF Webservice took 1.6509809494019 seconds //(this is just calling new SoapClient)
Connection to ASMX Webservice took 0.24430394172668 seconds
Calling ASMX->Method
ASMX->Method returned in 0.011564970016479 seconds
Calling WCF->Method1
WCF->Method1 returned in 0.011118173599243 seconds
Calling WCF->Method2
WCF->Method2 returned in 0.0038959980010986 seconds
Calling WCF->Method3
WCF->Method3 returned in 0.0041651725769043 seconds
Этоработает во внутренней сети, и, очевидно, подключение извне еще медленнее.Как видите, подключение к веб-сервису WCF значительно медленнее.
Есть ли способ (значительно) повысить производительность при подключении к веб-сервису WCF?
ОБНОВЛЕНИЕ:
Некоторыеинформация о клиенте WCF.Размещено на IIS 7, Windows Server 2008. Использование BasicHttpBinding (так как PHP SoapClient не поддерживает более сложную wsHttpBinding).Соединение использует ssl.
Кроме того, при соединении через WCFStorm соединение происходит намного быстрее, что позволяет мне предположить, что проблема, возможно, связана с PHP SoapClient.