Веб-служба SOAP в ASP.NET - множественные подключения - статические значения - API XMLRPC - PullRequest
0 голосов
/ 10 июня 2011

Иметь веб-службу SOAP, которая инкапсулирует вызовы стороннего API ... так что наше приложение может просто вызвать мой сервис, а затем мой сервис обрабатывает все различные вызовы API.Работает просто отлично.

Однако мы столкнулись с проблемой, когда API-интерфейс, к которому мы подключаемся, позволяет в любой момент времени использовать максимум 10 соединений для данного набора учетных данных.

Соединенияна обработку уходит максимум пара секунд, но когда мы начнем жить, теоретически у нас могут быть пользователи, которые максимально этого добиваются.Итак, мы создали несколько учетных записей (5) для API, что дает нам 50 подключений к 5 пользователям.

Как ASP.NET обрабатывает подключения к веб-службе?Я знаю, что он работает асинхронно, но порождает ли он несколько экземпляров моего класса или повторно использует один и тот же класс.Будут ли переменные сохраняться между экземплярами (т.е. будут ли работать статические переменные)?

Что мне нужно сделать, так это то, что на клиенте 1 происходит сбой вызова API, происходит переход на клиент 2 (или клиенты [0], клиенты [1]) и т. Д. К сожалению, у меня нет возможности обнаружить, еслиу данного Клиента нет связи в любой данный момент.Я мог бы опросить его с помощью тестового вызова, но это потребовало бы времени и не было бы никакой гарантии, что клиент имеет доступное соединение, когда я выполняю вызов.

API, который я вызываю, через прокси-класс XMLRPC (CookComputing).Выполняется ли «соединение» при создании Клиента или при совершении вызова, передавая учетные данные?

public static IVoicestar GetClient(string userID, string password)
{
    IVoicestar client = XmlRpcProxyGen.Create<IVoicestar>();
    client.Credentials = new NetworkCredential(userID, password);
    return client;
}

Из этого следует, что учетные данные просто «едут», пока я не позвоню через Клиент.MethodCall (), а затем соединение установлено.

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Если вы используете веб-службы ASP.NET (asmx), то для каждого запроса будет создаваться новый экземпляр класса веб-службы. В случае веб-служб на основе WCF вы можете управлять экземплярами / параллелизмом, используя атрибуты / конфигурацию (см. Эту статью ), - у вас есть три возможных режима создания экземпляров - для вызова, для сеанса и для одного номера.

Независимо от того, что вы используете, вы всегда можете реализовать свой собственный механизм объединения в пул для подключения к API. У вас уже есть фабричный метод для получения клиента API - просто вызовите уровень пула внутри метода.

0 голосов
/ 14 марта 2012

Обычно Windows XP и Windows 7 имеют ограничение в 10 одновременных соединений TCP / IP.Может быть, это все.Обязательно работайте в версии Windows Server.

...