Aracılığıyla paylaş


COM+ Bağlamları

COM+ uygulamaları içinde çalışan yapılandırılmış bileşenler için bağlamlar, COM+ hizmetlerinin sağlandığı temeli oluşturur. COM+'da bağlam, bu nesneler için hizmet sağlamak için kullanılan bir veya daha fazla COM nesnesiyle ilişkili çalışma zamanı özellikleri kümesi olarak tanımlanır.

COM+'da, her COM nesnesi çalıştırılırken (etkinleştirme ve devre dışı bırakma arasında) tam olarak bir bağlamla ilişkilendirilir ve her bağlam tam olarak bir COM dairesinde bulunur. Birden çok nesne aynı bağlamda çalışabilir ve birden çok bağlam aynı dairede bulunabilir. Bir nesne etkinleştirildiğinde başlatılırken, güvenlik bağlamı özellikleri gibi bağlam özellikleri bir nesnenin çalışma zamanı gereksinimlerini temsil ediyor.

Not

COM+ hizmetlerini kullanmayan yapılandırılmamış bileşenler için bağlam, çoğunlukla yoksayılır.

 

COM+, çalışma zamanı hizmetleri sağlamak için temel olarak bağlam özelliklerini kullanır. Bu özellikler, yürütme ortamının bağlam içindeki nesneler için hizmetleri nasıl gerçekleştirdiğini belirleyen durumu tutar. Bazı durumlarda, nesne için sağlanan bir hizmetle ilgili bazı durumları belirtmek üzere doğrudan bir nesnenin bağlam özellikleriyle etkileşim kurabilirsiniz. Örneğin, otomatik bir işleme katılan bir nesne işlemin sonucuna oy verince bunu yaparsınız.

Bu kavramların COM temeli hakkında ayrıntılı bilgi için bkz. İşlemler, İş Parçacıkları ve Daireler.

Bağlam Özellikleriyle Programlı Etkileşim

Her bağlamın, özelliklerini izleyen ilişkili bir ObjectContextnesnesivardır. GetObjectContext işlevini çağırarak ObjectContext erişebilirsiniz. ObjectContexterişildikten sonra, bağlam özelliklerini işlemek için kullanıma sunulan IObjectContext arabiriminde yöntemleri çağırabilirsiniz.

Örneğin, IObjectContext::SetCompleteçağrılması, işlem tutarlılığı bitini "tutarlı" olarak ve JIT etkinleştirme bitini nesneyle ilişkili bağlamda "bitti" olarak ayarlamanın etkisine sahiptir. İşlemin işlenmesi için oyladığınız COM+ için "tutarlı" sinyaller ve "bitti" ifadesi, yöntem döndürdüğünde nesnenizin devre dışı bırakılmasına hazır olduğunu gösterir.

IObjectContextek olarak, bağlam özelliklerine erişim sağlayan diğer özel arabirimler IObjectContextInfo, IContextStateve IObjectContextActivity. Belirli bir ölçüde, ISecurityCallContext bağlam özelliklerine de erişir. ISecurityCallContextelde etmek için IGetSecurityCallContext::GetSecurityCallContextkullanabilirsiniz.

Etkinleştirme ve Kesmeyi Anlama

Genel olarak, bağlamı yalnızca bileşenleriniz için COM+ hizmetleri sağlamak için kullanılan ve bazıları ayarlayabileceğiniz veya alabileceğiniz bir dizi özelliği temsil ettiği ölçüde düşünmeniz gerekir. Ancak bazı durumlarda aşağıdaki birbiriyle ilişkili bağlam modellerini daha ayrıntılı olarak göz önünde bulundurmanız gerekebilir:

  • Bağlam etkinleştirmeveya uygun bağlamda bir nesnenin başlatılması.
  • Kesmeveya com+ öğesinin bağlam sınırındaki çağrılarda ne yaptığı.

MTS Bağlam Sarmalayıcılarıyla İlişki

Bağlamlar, MTS bağlam sarmalayıcılarının yerini etkili bir şekilde alır. Hizmet verdikleri amaç (oluşturma isteklerini tuzağa düşürerek otomatik hizmetler sağlama), artık COM+ ile tümleşik bir özelliktir. Sonuç olarak, artık SafeRef işlevini kullanmanız gerekmez. MTS'de SafeRef, nesnenize bağlam sarmalayıcısı dışında geçirilebilen bir başvuru elde etmek için kullanılmıştır. COM+'da bu gereksizdir; normal nesne başvuruları (buişaretçileri) çalışır.