Makale Özeti

Bu makale dizinsinde COM+'ın ne olduğu, ne işe yaradığını anlatan temel bir dökümanı 9 bölümde inceleyeceğiz. Makale serisinin sonunda COM+ ın temel özellikleri hakkında bilgiye sahip olacak ve kolaylıkla kullanabilir halde olacağız.

Makale

COM+ Runtime Architecture (COM+ Çalışma Zamanı Mimarisi)

COM+ çalışma zamanı servisleri uygulamanın kodunu surrogate (Com objeler için çalışan host process) ortamda barındırır. COM+ çalışma zamanı kodun doğru servisleri kullandığını içinde bileşen genel durumu ve durdurucu metodların çağrılmasını sağlan bir metodun dahil olduğu birçok mekanizma kullanarak garanti altına alır. Bu mekanizmaların nasıl çalıştığının iyi anlanması daha verimli COM+ uygulamaları yazabilmek anlamına gelmektedir.

COM+ ve .NET Terminolojisi

COM+ uygulamalarında iki çeşit bileşen vardır. Bunlat configured componenet ve serviced component dır.

Configured component  aslında COM+ ortamında çalışan, uygulamasına dahil olan COM uygulamalarıdır. Bu uygulamayı yükledikten sonra COM+ servislerini kullanabilmesi için COM+ kataloğunda bazı ayarlar yapmak gerekmektedir. Bir COM bileşeni DLL(Dynamic Link Library) veya EXE dosyası olabilirken COM+ bileşenleri sadece DLL dosyalardan oluşmaktadır. COM bileşenleri oluşturmak için Microsoft Visual Basic 6.0 veya Microsoft Visual C++ 6.0 kullanılabileceği gibi diğer araçlardanda faydalanılabilir. Yaratılan bu bileşenler .NET Framework tarafından unmanaged code olarak algılanacaklardır.

Serviced Component ise .NET Framework mantığına göre Common Language Specification (CLS)’e uygun bir biçimde yazılmış ve System.EnterpriseServices.ServicedComponent Classından türemiş bir classtan başka bir şey değildir. Bu şekilde oluşturulmuş class lar COM+ uygulaması içinde yer alabilirler ve tüm servisleri kullanabilirler. Aynı zamanda serviced componenet bir configured component tır. Tüm .NET Framwork classları COM ile iletşim sağlayabilecek şekilde olduğundan Serviced components ile unamanged components arasındaki iletişimde aynı mantıkta olacaktır.

Bileşen

Configured Component

Managed/Unmanaged

Visual C++ 6.0 Bileşenleri

Evet

Unamanged

Visual Basic 6.0 Bileşenleri

Evet

Unamanged

Diğer COM Bileşenleri

Evet

Unmanaged

Serviced Components

Evet

Managed

COM+ Uygulamaları

COM+ uygulamaları configured bileşenlerin bir araya gelmesinden oluşmaktadır. COM+ uygulamaları aynı zamanda bir güvenlik sınırını yapısı olarak koyar. COM+ uygulamaları Server Uygulaması ve Library uygulaması olmak üzere iki çeşitte olabilir.

Surrogate çalıştırılabilir bir görevdir ve DLL olarak oluşturulmuş bir COM bileşenini barındırabilir. Surrogate Exe uygulamasını çalıştırmak suretiyle uzaktaki bir bilgisayardaki DLL sunucusunu çalıştırılabilir.

Bir server uygulaması kendisine özel tahsis edilmiş işlemde çalışır. COM+ server uygulamalarını barındırmak için Dllhost.exe’yi kullanır. Her bir server uygulaması kendi Dllhost.exe örneğinde çalışmaktadır.

Dllhost.exe surrogate’i COM+ çalışma zamanının çekirdeğini oluşturur. Bileşenlere servisleri kullanabilmek için gerekli olan thread yönetimi, eş zamanlı bağlantı yönetimi gibi hizmetlerin altyapısını sunar. Server uygulaması COM+ servislerinin tamamını desteklemektedir.

Library uygulamaları client in işleminde aktive olurlar.Client işlemi unmanaged bir işlem olabilir. Örneğin IIS üzerinde çalışan bir asp uygulamasının configured bileşeni çağırabilir. Çoğu durumda bu işlem DllHost.exe nin bir örneği olmasına karşın üzerlerindeki sınırlamalardan dolayı COM+ ‘ın bazı özelliklerini kullanamazlar.

Kitaplık uygulamalarının sunucu uygulamalarına göre daha iyi performans sağlamalarının sebebi kitaplık uygulamasında bulunan bir nesneye erişim süresinin işlemler ve bilgisayarlar arasında dolaşarak erişebilecek bir nesneye erişme süresinden çok daha kısa olmasıdır. Ancak kitaplık uygulamalarındada connection pooling, queued bileşen yüklenememe, bazı güvenlik ayarlarının çağırıcıdan yani classımızdan türetilmesinden dolayı bir kısım güvenlik ayarlarını kullanamama gibi bazı sınırlandırmaları vardır.Ayrıca bir işlemde hata oluşması durumunda sunucu uygulama sadece dllhost.exe yi sonlandıracak ve diğer çalışmakta olan işlemlere bir zarar gelmeyecektir. Ancak kitaplık uygulamasındaki hata istemci tarafındaki işlemlerin tamamen durmasına sebep olacaktır. Bu sebepten dolayı server uygualamaları çoğunlukla tercih edilmektedir. 

Her iki tip uygualamanında birbirine üstünlüklerini inceleyecek olursak Sunucu uygulamalar, hata oluşturabilecek bir koda karşı izolasyon geliştirilmiştir, queued bileşenleri ve object poolingi destekler ancak  işlemler arası metod çağırmalar çok maliyetlidir. Kitaplık uygulamalarında ise metod çağırımları daha hızlı olmasına ve istemciye özel bazı kaynaklara erişilebilmesine rağmen, sunucu uygulamalarındaki avantajları sağlamamaktadır.

COM+ ın yeni versiyonu olan 1.5 numaralı versiyonu geliştirilmiş bir sunucu uygulamayı windows servis olarak kullanabilme olanağı sunar. Bu ise bilgisayar yeniden başladığında belirtilen kullanıcı veya sistem hesabının o işlemi yeniden başlatacağı böylece uygulamamızın sürekli çalışır halde olacağı anlamına gelmektedir. Bileşenleri Windows Service olarak çalıştırabilmek için My Application Properties  penceresinden ve Activation tabından Server Application’ a tıklandıktan sonra Run Application As NT Service işaretlenmelidir.

COM+ Uygulamalarının İzlenmesi Ve Yönetilmesi

Bilgisayarda yüklü olan COM+ uygulamalarının görülmesi ve yönetilmesi için Component Services Yönetim Aracı adı verilen araç kullanılır. Bu araç sayesinde bileşen veya uygulama bazında değişiklik yapılabilir veya bazı uygulamalar durdulup yeniden başlatılabilir. Bu araç  Control Panel’den Administrative Tools altından Component Services tıklanarak açılabilir..

Bu pencerede bilgisayarda yüklü olan COM+ uygulamalarını görmek için sol tarafta bulunan  Component Services klasörü geneişletildikten sonra sırası ile Computers, My Computer, COM+ Applications klasörleride genişletilir. Sol tarafta gördüğümüz uygulamaların hangi bileşenlerden oluştuğunu ve bu bileşenleri görmek için sol taraftan uygulamayı seçtikten sonra Components klasörü çift tıklanır.

Bu bileşenin interfacelerini görmek için interfacelerini görmek istediğimiz bileşen seçildikten sonra Interfaces klasörü çift tıklanır.

Uygulama tipinin server uygulamamı yoksa kitaplık uygulamasımı olacağının belirlenmesi için aynı pencerede tipini değiştirmek istediğimiz uygulamaya sağ tıklanır ve Properties menüsü seçilir. Açılan pencerede Activation tabı seçilir ve Library Application veya Server Application seçeneklerden biri seçildikten sonra OK basılarak pencere kapatılır.

Server uygulaması kendisine tahsis edilmiş işlemde çalıştığından bu işlemin durdurup başlatma gibi opsiyonların olduğu çok açıktır. Ancak COM+ 1.5 ile birlikte artık server uygulamalarını duraklatıp yeniden başlatmak mümkün hale gelmiştir. Ayrıca herbir kitaplık veya sunucu uygulamasını veya herbir bileşeni tek tek disable veya enable etme yeteneğinide beraberinde getirmiştir. Duraklarma ve disable etme opsiyonları kullanımında yeni bir bileşen aktive olmayacaktır ama halihazırda kullanılmakta olan bileşenler çalışmalarına devam edeceklerdir. Bir uygulamayı disable ederek o andaki mevcut işlemleri etkilemeden yeni bir versiyon yüklemek veya bazı düzenlemeler yapmak mümkündür ve bu işlemleri yaparken hata alma olasılığı düşük olacaktır. Uygulamayı disable ettiğinizde sunucuyu yeniden başlatsanız bile yeni aktivasyonlar kabul edilmeyecektir, yani sunucu bir önceki durumunu hatırladığından uygulamayı yeniden enable etmek gerekmektedir.

Uygulamaları durdurmak, başlatmak, enable, disable etmek Component Services Yönetim aracı sayesinde yapılmaktadır. Bu işlemlerin yapılması istenilen bileşen seçilir ve sağ tıklanarak açılan menüden ilgili işlem seçilir.

Çalışan uygulamaları bazı hata oluşan durumlarda sadece hata oluşturan işlemi incelemek istediğinizde uygulamayı duraklatıp o bileşen üzerinden debug işlemi gerçekleştirmek isteyebilirsiniz. Bu durumda yeni Component Services Yönetim Aracı’nda Running Processes seçilir ve o an çalışmakta olan işlemlerin arasından duraklatılmak istenen işlem sağ tıklanır ve açılan menüden pause seçilir.

Applications, Assemblies And Classes (Uygulamalar, Assemblyler ve Sınıflar)

Bir uygulama birçok assembly’den birçok class  barındırıyor olabilir. Bir bileşen bir COM+ uygulamasında kullanılmaya ayarlandıktan sonra başka bir COM+ uygulamasında kullanılmamalıdır. Bir assembly birden fazla uygulamaya class  sağlıyor olabilir. Bunu bir örnek şekil üzerinden inceleyecek olursak.

 



oztamer@hotmail.com
tamer.oz@yazgelistir.com
oztamer@hotmail.com