Как обмениваться свойствами между экземплярами пула приложений COM+?

У меня есть приложение COM+, написанное на C# (ServicedComponent.) Размер пула приложений> 1 во всех случаях. Я использую SharedPropertyGroups для хранения и обмена данными. Из моего тестирования не ясно, все ли запущенные экземпляры приложения имеют одинаковые значения.

Являются ли свойства, хранящиеся в SharedPropertyGroup, общими для всех экземпляров одного и того же приложения COM+?

1 ответ

Решение

Каждый пул приложений (процесс DLLHost) получит свой собственный менеджер общих свойств. Из концепции COM+ Shared Property Manager:

"Общие свойства, хранящиеся в SPM, доступны только для объектов, запущенных в одном процессе".

Таким образом, менеджер общих свойств позволит вам совместно использовать переходное состояние внутри одного приложения (экземпляра пула).

Если вы хотите обмениваться состоянием между несколькими процессами, вы, возможно, захотите взглянуть на подход к кэшированию вне процесса (например, Windows Server AppFabric Caching или база данных в зависимости от требований).

Также посмотрите .NET Enterprise Services и COM+ 1.5 Architecture, где они описывают некоторые проблемы при использовании пула приложений:

Память, используемая диспетчером общих свойств (SPM), зависит от процесса. Пул приложений может повлиять на любое приложение, которое предполагает, что оно использует единственный экземпляр SPM на этом компьютере. Больше не существует общего хранилища данных высшего уровня (поскольку компоненты могут охватывать процессы) для всех экземпляров компонента COM + с использованием пула приложений. Кроме того, вы можете использовать кэшированную базу данных среднего уровня для хранения общего состояния, которое будет охватывать не только экземпляры процесса, но и процессы. При этом вы можете рассмотреть возможность использования компонента пула, который поддерживает постоянное соединение с базой данных специально для операций сериализации среднего уровня. На самом деле это гораздо лучший выбор даже без объединения приложений из-за проблем, связанных с блокировкой и производительностью SPM.

Другие вопросы по тегам