Поделиться через


Развертывание службы WCF, размещенной в IIS

Процесс разработки и развертывания службы Windows Communication Foundation (WCF), которая размещается в службах IIS, состоит из следующих задач.

  • Проверка правильности установки и регистрации служб IIS, ASP, WCF и компонента активации WCF.

  • Создание нового приложения IIS или повторное использование существующего приложения ASP.NET.

  • Создание SVC-файла для службы WCF.

  • Развертывание реализации службы в приложение IIS.

  • Настройка службы WCF.

Подробное пошаговое руководство по созданию службы WCF, размещенной в IIS, см. в разделе Как разместить службу WCF в IIS.

Проверка правильности установки и регистрации IIS, ASP.NET и WCF

Для правильной работы служб WCF, размещенных в IIS, должны быть установлены WCF, IIS и ASP.NET. Процедуры установки WCF (как компонента платформы Платформа .NET Framework 3.0), ASP.NET и IIS зависят от используемой версии операционной системы. Дополнительные сведения установке WCF и платформы Платформа .NET Framework 3.0 см. в разделе Веб-установщик Microsoft .NET Framework 4.0. Инструкции по установке IIS см. в разделе Установка IIS.

В процессе установки платформы Платформа .NET Framework 3.0 выполняется автоматическая регистрация WCF с IIS, если IIS уже имеется на компьютере. Если IIS устанавливается после платформы Платформа .NET Framework 3.0, для регистрации WCF с IIS и ASP.NET требуется дополнительный шаг. Это можно выполнить указанным ниже способом в зависимости от операционной системы.

  • Windows XP с пакетом обновления 2 (SP2) и Windows Server 2003: для регистрации WCF со службами IIS используйте программу Средство регистрации ServiceModel (ServiceModelReg.exe). Для этого введите в командной строке ServiceModelReg.exe /i /x.

  • Windows Vista: установите подкомпонент "Компоненты активации Windows Communication Foundation" платформы Платформа .NET Framework 3.0. Для этого на панели управления щелкните значок Установка и удаление программ и затем значок Установка и удаление компонентов Windows. При этом активируется Мастер компонентов Windows.

Наконец, необходимо убедиться в том, что среда ASP.NET настроена для использования платформы .NET Framework 4.0. Для этого запустите средство ASPNET_Regiis с параметром -i. Дополнительные сведения см. в разделе Средство регистрации IIS ASP.NET

Создание нового приложения служб IIS или повторное использование существующего приложения ASP.NET

Службы WCF, размещенные в IIS, должны находиться в приложении IIS. Можно создать новое приложение IIS только для размещения служб WCF. Можно также развернуть службу WCF в существующее приложение, в котором уже размещено содержимое ASP.NET 2.0 (например, страницы ASPX и веб-службы ASP.NET [ASMX]). Дополнительные сведения этих возможностях см. в подразделах "Параллельное размещение WCF и ASP.NET" и "Размещение служб WCF в режиме совместимости с ASP.NET" раздела Службы WCF и ASP.NET.

Обратите внимание, что IIS 6,0 и более поздние версии периодически перезагружают изолированное приложение объектно-ориентированного программирования. Значение по умолчанию — 1740 минут. Максимальное поддерживаемое значение — 71582 минуты. Эту перезагрузку можно отключить. Дополнительные сведения данном свойстве см. в разделе PeriodicRestartTime.

Создание SVC-файла для службы WCF

Службы WCF, размещенные в IIS, представляются внутри приложения IIS в виде файлов со специальным содержимым (SVC-файлов). Эта модель подобна модели, согласно которой страницы ASMX представляются внутри приложения IIS в виде ASMX-файлов. SVC-файл содержит директиву обработки WCF (@ServiceHost), позволяющую инфраструктуре размещения WCF активировать размещенные службы в ответ на входящие сообщения. В приведенном ниже операторе показан наиболее распространенный синтаксис SVC-файла.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

Он содержит директиву @ServiceHost и один атрибут, Service. Значение атрибута Service — имя типа среды CLR реализации службы. Использование этой директивы по существу эквивалентно созданию основного приложения службы с помощью следующего кода.

      new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

Можно также создать дополнительную конфигурацию размещения, например список базовых адресов службы. Кроме того, можно применить пользовательскую фабрику ServiceHostFactory, чтобы расширить директиву для использования с пользовательскими решениями по размещению. Приложения IIS, в которых размещаются службы WCF, не отвечают за управление созданием и временем существования экземпляров ServiceHost. Управляемая инфраструктура размещения WCF создает необходимый экземпляр ServiceHost динамически при получении первого запроса для SVC-файла. Этот экземпляр не освобождается, пока он не будет явно закрыт кодом или не перезапустится приложение.

Дополнительные сведения синтаксисе SVC-файлов см. в разделе @ServiceHost.

Развертывание реализации службы в приложение IIS

Для служб WCF, размещенных в IIS, используется та же модель динамической компиляции, что и для ASP.NET 2.0. Точно так же, как при использовании ASP.NET, код реализации для размещенных в IIS служб WCF можно развернуть несколькими способами в разных расположениях следующим образом.

  • В виде предкомпилированного DLL-файла, расположенного в глобальном кэше сборок или в каталоге \bin приложения. Предкомпилированные двоичные файлы не обновляются, пока не будет развернута новая версия библиотеки классов.

  • В виде нескомпилированных исходных файлов, расположенных в каталоге \App_Code приложения. Исходные файлы, расположенные в этом каталоге, запрашиваются динамически при обработке первого запроса приложения. Любые изменения в файлах в каталоге \App_Code приводят к перезапуску и повторной компиляции всего приложения при получении следующего запроса.

  • В виде нескомпилированного кода, расположенного непосредственно в SVC-файле. Код реализации может быть также размещен в SVC-файле службы после директивы @ServiceHost. Любые изменения во встроенном коде приводят к перезапуску и повторной компиляции приложения при получении следующего запроса.

Дополнительные сведения модели компиляции ASP.NET 2.0 см. в разделе Общие сведения о компиляции в ASP.NET.

Настройка службы WCF

Конфигурация размещенных в IIS служб WCF хранится в файле Web.config приложений. Для размещенных в IIS служб используются те же элементы конфигурации и синтаксис, что и для служб WCF, размещенных вне IIS. Однако для среды размещения IIS присущи следующие ограничения.

  • Базовые адреса размещенных в IIS служб.

  • Приложения, где размещаются службы WCF вне IIS, могут управлять базовыми адресами размещенных в них служб, передавая ряд универсальных кодов ресурсов (URI) базовых адресов в конструктор ServiceHost или обеспечивая наличие элемента <host> в конфигурации службы. Службы, размещенные в IIS, не могут управлять своими базовыми адресами; базовым адресом службы, размещенной в IIS, является адрес ее SVC-файла.

Адреса конечных точек для служб, размещенных в IIS

Будучи размещенными в IIS, адреса конечных точек всегда считаются относительными для адреса SVC-файла, представляющего службу. Например, если базовым адресом службы WCF является адрес https://localhost/Application1/MyService.svc со следующей конфигурацией конечной точки.

<endpoint address="anotherEndpoint" .../>

Эта конфигурация предоставляет конечную точку, которая может быть достигнута по адресу "https://localhost/Application1/MyService.svc/anotherEndpoint".

Аналогично, элемент конфигурации конечной точки, в котором в качестве относительного адреса используется пустая строка, обеспечивает конечную точку, достижимую по адресу https://localhost/Application1/MyService.svc, который является базовым адресом.

<endpoint address="" ... />

Для конечных точек служб, размещенных в IIS, следует всегда использовать относительные адреса. Предоставление полного адреса конечной точки (например, https://localhost/MyService.svc) может привести к ошибкам при развертывании службы, если адрес конечной точки не соответствует IIS-приложению, в котором размещается служба, представляющая эту конечную точку. Использование относительных адресов конечных точек для размещенных служб позволяет избежать таких потенциальных конфликтов.

Доступные типы транспорта

Службы WCF, размещенные в IIS 5.1 и IIS 6,0, могут использовать связь только по протоколу HTTP. В этих платформах IIS настройка размещенной службы на использование привязки, отличной от HTTP, приводит к ошибке во время активации службы. Для IIS 7.0 поддерживается транспорт HTTP, Net.TCP, Net.Pipe, Net.MSMQ и msmq.formatname для обратной совместимости с существующими приложениями MSMQ.

Безопасность транспорта HTTP

Размещенные в IIS службы WCF могут пользоваться средствами обеспечения безопасности транспорта HTTP (например, такими схемами проверки подлинности HTTPS и HTTP, как "Обычная проверка подлинности", "Дайджест-проверка подлинности" и "Встроенная проверка подлинности Windows"), если виртуальный каталог IIS, содержащий службу, поддерживает названные параметры. Параметры безопасности транспорта HTTP в привязке размещенной конечной точки должны соответствовать параметрам безопасности транспорта в виртуальном каталоге IIS, который содержит эту привязку.

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

См. также

Основные понятия

Размещение в службах IIS
Рекомендации по размещению в службах IIS

Другие ресурсы

Функции размещения Windows Server App Fabric