WCF для реального мира, а не Hello World – переосмысление в среде .NET Core

Живите с WCF в ландшафте .NET Core

Фон

WCF для реального мира, а не приветственного – статья, опубликованная в 2012 году. На основе исходного кода статьи из данного репозитория GitHub можно создать проект для .NET Framework 4.8, а также некоторые примеры для .NET Core.

Введение

Согласно статье “Поддержка клиента для вызова WCF/CoreWCF с использованием System.ServiceModel 6.0 уже здесь!”, у Microsoft нет обязательств по полной поддержке WCF, но:

  1. Быстрая, хоть и не слишком чистая реализация библиотек клиента WCF, включая несколько пакетов NuGet
  2. Сообщественный проект CoreWCF

Пример клиента .NET Core для WCF

Пожалуйста, обратите внимание на следующие проекты csproj:

  1. RealWorldServiceCoreClientApi.csproj
  2. TestRealWorldCoreIntegration.csproj

Однако, в отличие от аналога для .NET Framework, файл app.config больше не используется, и этот файл конфигурации может вызвать сбой в xUnit VS Runner. Поэтому я жестко закодировал привязку и адрес для System.ServiceModel.ClientBase. Тем не менее, в реальном приложении создание конфигурации на основе json в файле appSettings.json и использование кодов приложений для создания соответствующих привязок не должно вызвать проблем.

Точки интереса

ClientBase(string endpointConfigurationName)

Поскольку файл app.config больше не используется в .NET Core, эта конструкция лишь прототип функции-зомби, которую вы действительно не можете использовать в своем приложении-клиенте .NET Core. Похоже, Microsoft начинает убирать зомби, судя по вопросу #5358.

Добрые старые времена с WCF

Мне ностальгично за добрыми старыми временами с WCF. Микросервисы были модными уже более 15 лет. Однако, по сути, я создавал микросервисы неявно, разрабатывая службы WCF:

  1. Как разработчик, я создавал библиотеки служб WCF.
  2. После выпуска, IT-специалисты решали, как их развернуть путем настройки файла конфигурации app.config:
    • Различные комбинации библиотек служб на разных хостах
    • Различные привязки
    • Различная безопасность
    • Версионирование

Выполнение связанное с работой “Службы .NET Framework / активацию XXX” будет обрабатываться .NET Framework Runtime во время выполнения. Кроме того, .NET Runtime может генерировать прямой, только вперед XML-парсер/писатель без кэша для обработки потоков SOAP.

В комплексной корпоративной среде у вас может быть установлен BizTalk, в котором компоненты WCF являются гражданами первого класса.

Однако, всё движется дальше по множеству причин, как хороших, так и плохих. Работа по созданию новых служб WCF непременно уменьшается, хотя уже существующие службы WCF, такие как PPSR и eRx, всё еще успешно поддерживаются многие годы, и появляются новые клиентские бизнес-приложения, которые взаимодействуют с этими службами SOAP.

Дефект в клиенте WCF остается

Пожалуйста, проверьте:

Согласно вопросу #4912, данный дефект пока еще не исправлен, поэтому вам может понадобиться обходное решение, которое я предложил еще в 2011 году.

История

  • 21 ноября 2023 года: Первая версия

Leave a Reply

Your email address will not be published. Required fields are marked *