Nesne Havuzlama Nasıl Çalışır?

Bir bileşeni havuza alınacak şekilde yapılandırdığınızda, COM+, bileşeni isteyen tüm istemciler için etkinleştirilmeye hazır bir havuzda bu bileşenin örneklerini korur. Tüm nesne oluşturma istekleri havuz yöneticisi aracılığıyla işlenir.

Havuzlar bileşen bazında yapılandırılır ve korunur. Havuz, aynı CLSID'yi paylaşan homojen nesnelerden oluşur. Tek istisna, bir işlem beklemedeyken işlem bağına sahip nesneleri içeren alt havuzların tutulduğu işlem nesneleridir.

Uygulama başlatıldığında, nesne oluşturma başarılı olduğu sürece havuz, yönetici olarak belirttiğiniz en düşük düzeye kadar doldurulur. Bileşen için istemci istekleri geldikçe, havuzdan ilk gelen ilk hizmet temelinde karşılanır. Havuza alınan nesne yoksa ve havuz henüz belirtilen en yüksek düzeyde değilse, istemci için yeni bir nesne oluşturulur ve etkinleştirilir.

Havuz üst düzeye ulaştığında istemci istekleri kuyruğa alınır ve havuzdan kullanılabilir ilk nesneyi alır. Hem etkinleştirilen hem de devre dışı bırakılan nesneler de dahil olmak üzere nesne sayısı hiçbir zaman maksimum havuz değerini aşamaz. İstemcilerin nesne oluşturma için ne kadar süre bekleyeceğini kontrol edebilmeniz için, nesne oluşturma istekleri, yönetim tarafından belirtilen bir süre sonra zaman aşımına uğrayacaktır. Zaman aşımı hatası olduğunda, istemci CoCreateInstance'den E_TIMEOUT hatasını alır.

Mümkün olduğunda, bir istemci onu serbest bıraktıktan sonra, COM+ nesneyi havuz en üst seviyeye ulaşana kadar yeniden kullanmaya çalışır. Nesnesi, yeniden kullanılıp kullanılamayacağını belirlemek için durumunu izlemekle sorumludur ve IObjectControl::CanBePoolediçin uygun bir değer döndürmelidir.

Havuza alınmış bir nesne oluşturulduğunda, nesnenin ömrünü yönetecek daha büyük bir sistemin parçası haline gelir. Dış nesne, nesnenin yaşam döngüsünde uygun zamanlarda IObjectControl yöntemlerini şu şekilde çağırır:

  • Activate yöntemi, nesne belirli bir bağlamda etkinleştirildiğinde ve bir istemciye döndürüldüğünde çağrılır.
  • Deactivate yöntemi, istemci tarafından bir nesne serbest bırakıldığında veya JIT etkinleştirilmiş bir nesne devre dışı bırakıldığında çağrılır.
  • CanBePooled yöntemi, bir nesne genel havuza döndürülürken çağrılır. Nesne, yeniden kullanılabilir bazı kaynakların hatalı durumda olduğunu algılarsa, bu yöntem için FALSE döndürmelidir ve havuz yöneticisi nesneyi atar.

Bir nesnenin IObjectControluygulaması gerekmez. Eğer öyle değilse, havuzun maksimum seviyesine ulaşılana kadar örnekler her zaman yeniden kullanılır.

Havuza alınacak bileşenleri yapılandırma hakkında ayrıntılı bilgi için bkz. Bileşeni Havuza Alınacak Şekilde Yapılandırma.

COM+ Nesne Oluşturucu Dizeleri

Nesne Ömrünü ve Durumunu Denetleme

Nesne Havuzu ile Performansı Artırma

İşlemsel Nesneleri Havuzlama

Havuza Eklenebilir Nesneler için Gereksinimler