Значения атрибутов синхронизации
Атрибут синхронизации — это декларативное свойство, указывающее тип синхронизации, который должен иметь компоненты при активации. При включении атрибута синхронизации COM+ обрабатывает сведения о синхронизации от вашего имени; Вам не нужно делать никаких других звонков.
В зависимости от требований объект может совместно использовать синхронизацию вызывающего объекта, требовать новую синхронизацию или работать без синхронизации.
COM+ предоставляет следующие значения атрибутов синхронизации:
Disabled. При отключении атрибута синхронизации COM+ игнорирует требования к синхронизации компонента в определении контекста для объекта. В результате объект может или не может предоставлять общий доступ к контексту вызывающего объекта (и синхронизации).
Как правило, следует использовать это значение атрибута, если вы знаете, что компонент никогда не обращается к диспетчеру ресурсов. При переносе com-компонентов в COM+необходимо отключить атрибут синхронизации, чтобы сохранить то же поведение, что и ненастройанный COM-компонент. Ненастройанный компонент — это com-компонент, который не был установлен в приложении COM+.
Не поддерживается Объект с этим значением никогда не участвует в синхронизации, независимо от состояния своего вызывающего объекта. Этот параметр доступен только для компонентов, не являющихся транзакциями, и не используйте службу активации COM+ JIT.
Поддерживается. Объект с этим значением участвует в синхронизации, если он существует. Вы объявляете это значение, если требуется, чтобы объект совместно использовать в синхронизации вызывающего объекта, но не требует синхронизации собственного.
Веская причина, по которой атрибут синхронизации имеет значение "Поддерживается", заключается в том, что этот параметр может быть менее дорогим с точки зрения системных ресурсов. Тем не менее, сложнее написать компонент из-за необходимости защитить его от одновременных вызовов. Последствия настройки атрибута синхронизации в Supported заключается в том, что при определенных обстоятельствах экземпляр объекта может быть создан таким образом, чтобы он не синхронизировался. Если модель потоков компонента является бесплатной или обе, необходимо защитить данные экземпляра с помощью определенного типа механизма блокировки. Если модель потоков является квартирой (STA), вам не потребуется защитить данные экземпляра.
Обязательный. При установке этого атрибута COM+ гарантирует, что все объекты, созданные из компонента, будут синхронизированы. По сути, каждый раз, когда COM+ создает экземпляр компонента, он гарантирует, что в данный экземпляр выполняется только один поток.
Так как COM+ активирует объект, он смотрит на состояние синхронизации вызывающего объекта. Если вызывающий объект синхронизирован, COM+ передает границу синхронизации вызывающего объекта, чтобы включить новый объект. В противном случае COM+ начинает синхронизацию.
Требуется создать. Объект с этим значением должен участвовать в новой синхронизации, где COM+ управляет контекстами и квартирами от имени всех компонентов, участвующих в вызове. COM+ автоматически инициирует новую синхронизацию, которая отличается от синхронизации вызывающего объекта.
Веская причина, по которой атрибут синхронизации имеет значение "Требовать новое", заключается в том, что этот параметр позволяет более эффективно выполнять внешние вызовы к экземпляру компонента. Однако он также вызывает объект и объект, который создал его более дорогим с точки зрения системных ресурсов.
Например, предположим, что объект и его объект создателя используют ту же границу синхронизации. Если клиент A вызывает объект creator и клиент B вызывает объект, второй вызов придется ждать, пока первый вызов не будет завершен. Если задано значение "Требуется новое", объект создается в отдельной границе синхронизации. В этом случае вызовы из других объектов можно обрабатывать одновременно. Однако вызовы объекта creator к объекту требуют больше системных ресурсов, так как они должны пересекать границы синхронизации.
См. также