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


Общие сведения об интеграции с приложениями COM+

Служба Windows Communication Foundation (WCF) предоставляет среду с широкими возможностями для создания распределенных приложений. Если уже используется логика приложения на основе компонентов, размещенного на COM+, инфраструктура WCF позволит расширить существующую логику вместо ее переписывания. Стандартный сценарий — предоставление доступа существующему приложению COM+ или бизнес-логике Enterprise Services службы через веб-службы.

Когда доступ к компоненту COM+ предоставляется через веб-службу, спецификация и контракт таких служб определяются путем автоматического сопоставления, которое выполняется во время инициализации приложения. В следующем списке показана концептуальная модель такого сопоставления:

  • для каждого из классов COM, к которым предоставляется доступ, определяется одна служба;

  • контракт для службы получается напрямую из определения интерфейса выбранного компонента с определенной в конфигурации возможностью исключения определенных методов;

  • операции в контракте получаются напрямую из методов в определении интерфейса компонента;

  • параметры этих операций получаются напрямую из типа COM-взаимодействия, который соответствует параметрам метода компонента.

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

ms734723.note(ru-ru,VS.100).gifПримечание
Контракты для предоставляемых веб-служб остаются постоянными, если только не изменяются интерфейсы COM+ и конфигурация. Изменение нескольких интерфейсов не приводит к автоматическому обновлению доступных служб и требует повторного запуска программы настройки модели служб COM+ (ComSvcConfig.exe).

Требования проверки подлинности и авторизации приложения COM+ и его компонентов остаются в силе и при использовании приложения через веб-службу.

Если вызывающий объект инициирует транзакцию веб-службы, компоненты, помеченные в качестве транзакционных, включатся в список в области транзакции.

Чтобы предоставить доступ к интерфейсу компонента COM+ через веб-службу без изменения компонента, необходимо выполнить следующие действия.

  1. Определите, можно ли предоставить доступ к интерфейсу компонента COM+ через веб-службу.

  2. Выберите подходящий режим размещения.

  3. С помощью программы настройки модели службы COM+ (ComSvcConfig.exe) добавьте веб-службу для нужного интерфейса. Дополнительные сведения использовании программы ComSvcConfig.exe см. в разделе Как использовать программу командной строки настройки модели служб COM+.

  4. Задайте необходимые дополнительные параметры службы в файле конфигурации приложения. Дополнительные сведения настройке компонентов см. в разделе Как настроить параметры службы COM+.

Поддерживаемые интерфейсы

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

  • интерфейсы, которые передают в качестве параметров ссылки на объекты; ограниченный подход к передаче ссылок на объекты описан в разделе "Ограниченная поддержка ссылок на объекты";

  • интерфейсы, которые передают типы, несовместимые с преобразованиями COM-взаимодействия .NET Framework;

  • интерфейсы приложений, для которых при размещении в COM+ включено объединение приложений в пул;

  • интерфейсы компонентов, которые помечены в приложении как закрытые;

  • интерфейсы инфраструктуры COM+;

  • интерфейсы системных приложений;

  • интерфейсы компонентов Enterprise Services, не включенные в глобальный кэш сборок.

Ограниченная поддержка ссылок на объекты

Поскольку некоторые развернутые компоненты COM+ используют объекты, передаваемые по ссылкам, например при возврате объекта ADO Recordset, интеграция с COM+ включает ограниченную поддержку передачи параметров, являющихся ссылками на объекты. Эта поддержка ограничивается объектами, которые реализуют интерфейс COM IPersistStream. Она включает объекты ADO Recordset и может быть реализована для COM-объектов, относящихся к конкретному приложению.

Для включения такой поддержки у программы ComSvcConfig.exe имеется параметр командной строки allowreferences, который отключает обычный параметр подписи методов и проверяет, что выполняется эта программы, чтобы убедиться, что не используются параметры с ссылками на объекты. Кроме того, типы объектов, передаваемых в качестве параметров, должны быть указаны и определены в элементе конфигурации <persistableTypes>, который является дочерним для элемента <comContract>.

Если включен этот режим, служба интеграции COM+ использует для сериализации и десериализации экземпляров объектов интерфейс IPersistStream. Если экземпляр объекта не поддерживает интерфейс IPersistStream, создается исключение.

Внутри клиентского приложения для передачи объектов службе и возврата объектов можно использовать методы объекта PersistStreamTypeWrapper.

ms734723.note(ru-ru,VS.100).gifПримечание
Поскольку способ сериализации определяется конкретной платформой, такой подход лучше всего использовать при взаимодействии между клиентами WCF и службами WCF.

Выбор режима размещения

Модель COM+ предоставляет доступ через веб-службы с использованием одного из следующих режимов размещения.

  • Размещение в службах COM+

    Веб-служба размещается в выделенном процессе приложения на сервере COM+ (Dllhost.exe). При использовании этого режима приложение должно быть явным образом запущено, прежде чем оно сможет получать запросы веб-службы. Чтобы избежать перехода приложения и его службы в режим ожидания, можно использовать параметры COM+ "Запустить как службу NT" или "Не останавливать при ожидании". В этом режиме обращаться к приложению можно как через веб-службу, так и через доступ DCOM.

  • Размещение на веб-сервере

    Веб-служба размещается в рабочем процессе веб-сервера. В этом режиме служба COM+ не обязательно должна быть активной при получении первого запроса. Если приложение неактивно при получении первого запроса, оно автоматически активируется перед обработкой запроса. В этом режиме доступ к серверному приложению также может осуществляться через веб-службу или технологию DCOM, однако при обработке запросов веб-службы будет происходить переход процесса. Обычно для этого необходимо включить олицетворение на клиенте. В WCF для этого можно воспользоваться свойством AllowedImpersonationLevel класса WindowsClientCredential, которое доступно в качестве свойства универсального класса ChannelFactory, а также в виде значения перечисления Impersonation.

  • Внутрипроцессное размещение на веб-сервере

    Веб-служба и логика приложения COM+ размещаются внутри рабочего процесса веб-сервера. Это позволяет автоматически активировать режим размещения на веб-сервере без перехода процесса при запросах веб-службы. Недостаток такого подхода заключается в том, что к серверному приложению невозможно обратиться с помощью технологии DCOM.

Вопросы безопасности

Как и в случае других служб WCF, администрирование параметров безопасности службы, к которой предоставляется доступ, осуществляется через параметры конфигурации канала WCF. Обычные параметры безопасности DCOM, например разрешения DCOM уровня компьютера, не действуют. Чтобы включить роли приложений COM+, для компонента необходимо включить режим авторизации "Принудительная проверка доступа на уровне компонента".

При использовании незащищенной привязки возможно искажение передаваемых данных или раскрытие информации. Во избежание этого рекомендуется использовать защищенную привязку.

При размещении в служба COM+и на веб-сервере клиентское приложение должно разрешать серверному процессу олицетворять клиентского пользователя. Для этого можно в клиентах WCF установить уровень олицетворения Impersonation.

Если используются службы IIS или службы активации Windows (WAS) с транспортом HTTP, можно с помощью средства Httpcfg.exe зарезервировать адрес конечной точки транспорта. В других конфигурациях важно обеспечить защиту от поддельных служб, которые выдают себя за настоящие службы. Чтобы избежать запуска поддельной службы в выбранной конечной точке, можно настроить настоящую службу на выполнение в качестве службы NT. В результате настоящая служба утвердит адрес конечной точки до того, как это сможет сделать какая-либо поддельная служба.

При размещении приложения COM+ с настроенными ролями COM+ в качестве службы на веб-сервере необходимо добавить в одну из ролей приложения "Учетную запись для запуска IIS". Эта учетная запись (обычно она имеет имя IWAM_имя_компьютера) должна добавляться, чтобы можно было безопасно отключить объекты после использования. Не следует предоставлять этой учетной записи какие-либо дополнительные разрешения.

Функции перезапуска процессов COM+ невозможно использовать в интегрированных приложениях. Если приложение настроено на использование перезапуска процессов, а компоненты выполняются в процессе служб COM+, запустить службу не удастся. Это требование не распространяется на службы, использующие внутрипроцессное размещение на веб-сервере, поскольку параметры перезапуска процессов в этом случае не действуют.

См. также

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

Общие сведения об интеграции с приложениями COM