Makale Özeti

Nesnelerin oluşması sizin için büyük bir yükse , nesneleri önceden hazırlayıp kullanılmaya hazır halde tutabilirsiniz. Bunun için pooling özelliğini bilmeniz gerekir.

Makale

COM + da Object Pooling

 

Nesnelerin oluşması sizin için büyük bir yükse , nesneleri önceden hazırlayıp kullanılmaya hazır halde tutabilirsiniz.  Bunun için pooling özelliğini bilmeniz gerekir. Bu yazıda pooling özelliğinden bahsediyoruz.

 

Aşağıdaki şekilde özetlemeye çalıştığımız proseste ilk çağırılmayla beraber minimum sayıda belirtilen sayıda nesne otomatik olarak oluşturulur.  Sonraki isteklerde havuza bakılarak bu havuzda hazırda nesne olup olmadığına bakılır. Eğer maximum nesne sayısına gelinmişse, ve bundan sonrası için nesne oluşturulamıyorsa Timeout süresi kadar beklenir. Bu süre içinde bir nesne boşa çıktığında kullanılmay abaşlanır aksi halde hata üretecektir.

 

Can be pooled özelliği true ise , nesne ile kullanım bittikten sonra havuza geri döndürülür . False ise nesne yokedilir.

 

 

 

 

Pooling özelliğini başlatmak için component seviyesindeki özelliklerden activation tab’ına geçilir.

Aşağıdaki özellikte com uygulaması başlatıldığında hemen 5 tane nesne oluşturulup hazırda tutmaya başlar.

 

 

Bunu bir örnekte incelemeden önce kodlarımıza bakmak gerekir. Kodlarda dikkat etmemiz gereken nokta New ve Finalize metotlarıdır. Bu metotlar objenin oluşturulması ve bitirilmesi sırasında çalışacağı için bize pooling’in çalışıp çalışmayacağı hakkında bilgi verebilecek.

 

 

Şimdi de programımız çalıştıralım ve daha sonra event viewer ‘dan gelen mesajları sayalım . Örneğimizde ilk çağırmamızla birlikte 5 nesne oluşmalı , bu da 5 mesaj demektir.

 

Program çalıştırıldıktan sonra ve ikinci.dll deki bir metot çağırıldığında olay görüntüleyecisinde aşağıdaki görüntü oluşur.

 

 

Burda 7 mesajın olmasının nedeni ilk 5 nesne oluşması sırasında gelen mesajların yanında , çağırılan nesneyle iş bittikten sonra can be pool true olduğundan nesnenin tekrar havuza dönmesidir. Bu sırada nesnenin bitişi ve havuzda yeniden oluşması sözkonusudur.

 

Tabi bu sırada can be pool’un true olmasının com+ arayüzünden nasıl yapıldığına bakalım.

 

 

 

Yukarıdaki resimde ikincidll componentinde veriekleB isimli metotun özelliklerine bakılmaktadır. Automatically deactivate this object when this method returns true yapılarak metotla işimiz bittiğinde componentinde bitmesi sağlanır. Bu özellik false olsaydı aşağıdaki görüntüyü alacaktık.

 

 

 

Pooling yaptığımızda otomatik olarak JIT (Just in Time Activation) yapmış oluyoruz. JIT’in anlamı, metot çağırılana kadar nesnenin aktif  olmamasıdır. Bunu daha sonraki makalelerde daha da ayrıntılı inceleyeceğiz.

 

Atakan KESLER

atakan.kesler@bilgeadam.com