Поведение домена приложения для компонентов .net, доступных через COM-взаимодействие - PullRequest
1 голос
/ 06 марта 2012

Я искал на сайте похожий вопрос, но не нашел ничего близкого. Мои извинения сообществу, если я пропустил это.

Настройка:

  • Windows 2008, 64-битный сервер
  • Классические приложения ASP (некоторые из них) развернуты в одном пуле приложений под IIS
  • Некоторые страницы в этих классических приложениях ASP создают и получают доступ к компонентам .Net, которые отображаются как компоненты COM.

Что мы видим (мы убедились в этом, зарегистрировав информацию о текущем процессе и домене приложения из компонентов .net, предоставляемых через COM):

Компоненты .Net, предоставляемые через COM-взаимодействие, загружаются в одном домене приложений в рамках рабочего процесса, созданного IIS для пула приложений, независимо от того, какое классическое приложение asp из пула приложений вызывает их. По сути, он ведет себя так, как будто IIS создает один домен приложений для компонентов взаимодействия COM, который используется всеми приложениями в этом пуле приложений. (под «общим» я подразумеваю, что все эти вызовы .Net направляются IIS в этот единственный домен приложения независимо от того, какое веб-приложение в пуле приложений инициирует вызов). Я ожидал, что IIS загрузит компоненты взаимодействия COM в домене приложения каждого веб-приложения.

[Если мы развернем классические приложения ASP в разных пулах приложений в IIS, то (очевидно) компоненты .Net будут загружены в домен приложений в рамках каждого рабочего процесса, запускаемого IIS для каждого пула приложений.]

Мне было интересно, видел ли кто-нибудь еще такое поведение и является ли оно известным поведением в компонентах IIS 7.x и .Net COM.

1 Ответ

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

Это нормальное поведение. Когда внешний COM-клиент создает экземпляр компонента COM Visible .NET, этот компонент .NET загружается в AppDomian по умолчанию для этого процесса. Если домен приложения по умолчанию не существует, он создается.

Хотя в IIS7, работающем со встроенным конвейером, можно было бы изменить это поведение, оно нарушило бы существующие веб-сайты ASP, которые могут быть перенесены на IIS7, которые зависят (даже если это непреднамеренно) от этого поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...