Статический объект клиента службы WCF или стандартный объект клиента службы WCF?

Я разрабатываю веб-сайт в ASP.NET, который использует службу WCF. Я создаю объект клиента службы, используя следующий подход:

Я использую файл глобального класса для определения этих методов.

public static WCore.Service1Client client;
public static int ConnectToWCore()
{
    try
    {
       client = new WCore.Service1Client();
    }
    catch (Exception)
    {
       return -1;
    }
    return 0;
}

Итак, мой вопрос: правильно ли использовать статический клиентский объект на веб-сайте? Потому что я не понимаю, что у него могут быть проблемы с взаимоблокировкой, потому что многие пользователи будут обращаться к одному и тому же объекту, поскольку статические объекты создаются один раз и являются общими для всех экземпляров. Подскажите, пожалуйста, какой из них будет эффективным статическим или стандартным?


person Shiva Pareek    schedule 15.11.2013    source источник


Ответы (2)


Клиенты WCF должны быть легкими и создаваться везде, где они нужны. Если вы на самом деле не измерили проблемы с производительностью от создания нескольких клиентских объектов, вам следует это сделать.

Кроме того, использование возвращаемых значений кода ошибки не является правильным способом обработки ошибок в C #. C # использует исключения, и это то, что должен использовать весь код C #.

person Anders Abel    schedule 15.11.2013
comment
Но я хочу знать, что эффективнее в случае производительности? использовать один и тот же статический клиент или разные объекты для разных пользователей? Что вы посоветуете, что я должен использовать, наконец, для веб-сайта с несколькими одновременными пользователями? - person Shiva Pareek; 16.11.2013

Я не думаю, что использование статического клиента службы для WCF - хороший шаг, поскольку я видел, что почти во всех случаях он создается по мере необходимости, а затем утилизируется.

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

Кроме того, я думаю, что веб-сайты ASP являются «экземплярами» между клиентами, причем каждый клиент имеет свою собственную отдельную копию одного и того же веб-сайта. Таким образом, вы можете столкнуться с большим количеством проблем, когда несколько клиентов одновременно пытаются получить доступ к одному и тому же клиенту службы.

person BobbyDazzler    schedule 16.11.2013
comment
Нет, экземпляры веб-сайтов ASP не создаются для каждого клиента. Есть только один сайт. Что может отличаться, так это то, что сервер запускает несколько потоков (или несколько экземпляров одного и того же процесса) для обработки каждого входящего запроса, но содержимое веб-сайта остается тем же. - person Thanasis Ioannidis; 20.09.2017