SİTE
İÇİ ARAMA |
|
Blogroll |
|
|
|
COM,COM+,ActiveX,OLE,MTS ve Windows DNA kavramları |
|
Gönderiliyor lütfen bekleyin... |
|
|
COM, COM++, ActiveX, OLE ve DCOM gibi bir çok kelimeyi
bir çok defa duymuşsunuzdur, COM/COM+ programlamaya başlamadan önce bu kavramları
açığa kavuşturacağız. Aslında bu isim karmaşıklığı Microsoft firmasının devamlı
kavramların isimlerini değiştirmesinden kaynaklanıyor, mesela OLE sözcüğünün
tanımı üç defa değişmiştir. Bu yazının sonunda artık bütün bu kavramları öğrenmiş
olacaksınız ve artık kafanız karışmayacak.
COM
Aslında bütün yukarıda bahsettiğimiz kavramlar COM teknolojisinin bulunmasıyla
ortaya çıkmıştır.COM, programlama dilinden bağımsız, yazılım componentlerini(program
parçacıkları) geliştirmek için belirlenen standartlar topluluğudur. Eğer bir
programlama dili COM uyumlu ise bu spesifikasyonları uygulamış demektir. Şimdi
asıl önemli olan Software Component dediğimiz program parçacıklarını anlayalım.
Bir component, COM spesifikasyonlarına uyumlu herhangi biri dille yazılmış
binary olan ve uygulamamızı geliştirmek için kullandığımız yapı bloklarıdır.Burda
uygulama ve component kavramlarını birbirlerinden iyi ayırmak gerekir. Mesela
MS Word programı bir uygulamadır. Fakat aynı zamanda MS Word bir componenttir.MS
Word programının API(Application Programming Interface) dediğimiz özelliği sayesinde
MS Wrodü rapor yazmak içinde kullanabilirsiniz.Yani MS Wordün API arayüzü
sayesinde başka uygulamamızda rahatlıkla rapor yazmak için kullanabiliriz.Böylece
COM teknolojisi ile kodların tekrar kullanılabilirliği sağlanmıştır. Bu sayede
birbirinden bağımsız binary program parçaları oluşturup ana uygulamamızda veya
başka uygulamalarda kullanabiliriz.Component ler bir sunucu içinde dağıtılır.
Sunucu Dinamik Bağlı Kütüphaneler(DLL) şeklinde olabileceği gibi çalıştırılabilir(EXE)
de olabilir. DLL tabanlı bir sunucua "in-process server" denir. Çünkü
DLL ler istemci ile aynı proses içinde çalışırlar. Çalıştırılabilir sunuculara
ise istemci ile farklı proseslerde çalışabildikleri için "out-of process
server" denir. Farklı prosesleri birbirleri ile etkileştirmek çok zor ve
komplike bir iştir ama dll gibi yapıları çalışan bir prosese bağlamak (link)
COM teknolojisinin standartları çerçevesinde çok daha basittir.
Şimdi
de COM teknolojisinin en önemli özelliği olan dilden bağımzsızlığını konuşalım.
Yukarıda da dediğimiz gibi COM daki temel amaç farklı programlama dilleri ile
yazdığımız parçacıkları rahatlıkla kullanmak.COM blokunun hangi dille yazıldığı
veya sizin hangi ortamda COM blokunu kullandığınız önemli değildir.Eğer uzun
zamandır programlama yaptıysanız muhtemelen farklı dilleri kullanarak oluşturulmuş
bir uygulama görmüşsünüzdür.Her programlama dilinin kendine özgü yapısı vardır.Fonksiyon
çağrımları, hata ayıklama işlemi ve en önemlisi veri tipleri her programlama
dilinde farklıdır, bu yüzden farklı iki dili aynı uygulama içinde kullanabilmemiz
nerdeyse imkansızdır. Peki insanların binary formda uygulamalarını programlama
dilinden bağımsız nasıl paylaşabilirler.Bunun çözümü uygulama arayüz standartı
oluşturmaktır. Bu standartlar binary seviyesinde iki programın nasıl iletişime
geçeceğini açıklamalıdır.Programlama dillerini oluşturan firmalar dillerini
bu standartlara uyumlu hale getirdiğinde artık istediğimiz dilde Component geliştirip
istediğimiz ortamda kullanbiliriz. Tahmin ettiğiniz gibi COM standartları yukarıda
bahsettiğimiz standartların tamamını kapsar.COM standartları uygulamaların binary
düzeyde birbirleri ile nasıl ilişkiye geçeceğini tanımlar. COM çalışma prensibini
daha iyi anlamak için aşağıdaki şemayı iyice inceleyin.
Microsoft gibi bir çok firmanın ürünler COM paketleri şeklindedir. Mesela Microsft
firmasına ait Speech API leri ve DirectX COM paketleri şeklindedir. Bu sayede
herhangi bir programdan bu paketler içindeki fonksiyonlara kolayca ulaşabiliriz.
COM teknolojisine benzer CORBA(Common Object Request Broker Architecture) teknolojiside
mevcuttur. CORBA, COM teknolojisine konsept olarak çok benzemekle beraber COM
dan farklı yönüde vardır. Bu farklardan en önemlisi CORBA nın başlangıçta farklı
platformlar arası iletişimi kurmaya yönelik teknoloji olmasıdır. Oysaki her
ne kadar şimdi COM bütün platformları desteklesede başlangıç olarak sadece Windows
platformları hedeflenmiştir.
DCOM
DCOM
kelimesi Distrubuted Component Object Model kelimelerinin kısaltılmasından gelir.
DCOM, COM u ağ yapılarında kullanabilme özelliğine verilmiş özel bir addır.
Aslına bakarsanız DCOM sözcüğü çok gerekli bir tanımlama değildir, zaten COM
un temel amacı platformlardan(network ortamı dahil) ve programlama dillerinden
bağımsız bir geliştirme ortamı sunmaktır, bu yüzden ağ yapısında kullanılan
COM diye bir tanımlama yapmak çok gerekli değildir. Hatta siz bu sözcüğü şimdiden
unutabilirsiniz bile :) DCOM un sağladığı en büyük özellik ise güvenliktir.
İstemci ve Sunucunun aynı makinada olduğu çalışmalarda güvenlik önemli olmayabilir
ama sunucunun başka makinalarda olduğu çalışma ortamlarında herşeyden öenmlisi
sizde takdir edersinizki güvenliktir. DCOM un COM a kattığı en büyük şey dolyısıyla
güvenliktir diyebiliriz. Şimdi diyeceksiniz madem DCOM bu kadar önemli neden
az önce bu kelimeyi unutabilirsiniz dediniz. Evet, hala öyle diyorum siz bir
programlama diline bir kütüphane eklediğinizde yeni bir dil oluşturmadan zenginleştirmiş
olursunuz o dili, DCOM da bunu benzer birşeydir(teşbihte hata olmasın sakın).
MTS
(Microsoft Transaction Server)
MTS, Microsoft firmasının geliştirdiği en önemli COM
tabanlı teknolojidir. DCOM, dağıtık
yapıdaki uygulama yapmamıza olanak sağlamıştı, MTS ise bunun en belirgin ve
en önemli uygulamasıdır. Fakat malesef DCOM gibi , MTS de kötü isimlendirilmiştir.
MTS(Microsoft Transaction Server) için en güzel isim COM uygulama sunucusu olurdu
herhalde. Neyse madem bu ismi koymuşlar bizde bundan böyle MTS diye kullanacağız.
Oracle gibi diğer firmalar bu tür uygulamalarına sunucu uygulaması adı vermiştir.
"Transactions" olayı ise sadece MTS in yapabileceği işlerden biridir.
MTS olmadan önce yapacağımız dağıtık uygulamalardaki veri güvenliğini sağlamak,
transaction olaylarını ve kaynakları yönetmek için uzunca kodlar yazmamız gerekiyordu.
MTS bize bu gerekli kodları yazmadan işimizi yapmamızı sağlıyor.
MTS ile Windows NT güvenlik API lerini direkt olarak kullanarak istediğimiz
güvenlik önlemlerini alabiliriz. MTS in sağladığı en önemli faydası ise "çok
kullanılabilirlik" tir. Mesela bir sunucu üzerinde bulunan COM parçacığına
10.000 kişinin aynı anda bağlandığını düşünelim.10.000 kullanıcı aynı anda bizim
COM nesnesine ait bir referansı içerebilir fakat aslında aynı anda bu kullanıcılardan
sadece birkaçı aynı anda COM nesnesinin bir metodunu çalıştırıyordur. Her kullanıcıya
COM nesnesine ait bir referans verildiğini ve sadece ilgili nesneye ait metodun
çağrılması sırasında gerçek nesnenin yaratıldığını düşünelim, bunu yapmak gerçekten
güç bir iştir. MTS ile biz bu işlemleri rahatlıkla gerçekleştiririz.
Birde ilginç ama MTS in sağladığı şu iş vardır. Bildiğiniz gibi istemci/sunucu
mimarilerinde sunucuya ait kaynakların sistemin kararlılığı için büyük önemi
vardır. Mesela veritabanı bağlantılarının gerçekleşmesi diğer işlemlere göre
daha uzun zaman alır. Ve aynı zamanda veritabanı bağlantıları maddi olarakta
pahalıdır. Bildiğiniz gibi bazı firmalar veritabanı sistemlerini o sisteme yapılan
bağlantı ile ücretlendirirler. Mesela veritabanına günde 1000 kişi bağlantı
yapıyorsa 10 milyon, 100 bağlantı yapılıyorsa 1 milyon ödüyorsunuz, bu durumda
sistem kaynaklarının maddi açıdan da önemi büyür. Mesela rastgele bağlantılar
açmak mali açıdan şirketinizi güç duruma sokabilir. MTS bu konuda da bizi yalnız
bırakmaz. Sisteme ait kaynakların boşa harcanmasını engeller. Bir örnek verecek
olursak; MTS, OLEDB ve ODBC ile beraber çalıştığı için sunucuya yapılan bağlantılar
için bir "bağlantı havuzu" oluşturulur. Yeni bir bağlantı oluşturulmak
istendiğinde MTS sayesinde oluşturulan bağlantı havuzu kontrol edilir ve o an
için işe yaramayan ve tekrar kullanılabilir bağlantı varsa yeni bir bağlantı
açılmadan eski bağlantı üzerinden işlemlere devam edilir. Böylece hem gereksiz
bağlantılar engellenmiş olur hemde maddi olarak tasarruf edilmiş olunur. Son
olarak dağıtık yapıdaki sistemlerde farklı veritabanları üzerinde çalışıyorsak
transaction olaylarını MTS sayesinde kolaylıkla yönetebiliriz. Transaction farklı
sunucularda bulunan farklı veritabanlarında aynı anda senkronize bir çalışma
şeklidir. Mesela bir banka hesabından başka bir hesaba para aktarırken farklı
suncularda bulunması olası iki veritabanı ile işlem yapılır. İki işlemin de
bitmeden bağlantının herhangi bir sebepten bozulması para transferinin gerçekleşmediğini
gösteriri, bağlantının tekrar sağlanması durumunda bu işlemlerin kontrol edilmesi
ve varsa hataların düzeltilmesi gerekir. Bu işlemleri MTS sayesinde gerçekleştiririz.
Windows
DNA
Windows DNA, Windows Distrubuted interNet Applications Architecture kelimelerinin
kısaltılmış halidir. Kısaca WinDNA, dağıtık Windows
platformlarında dağıtık
yapıda uygulamlar geliştirmek için geliştirilmiş bir modeldir.Bu fikrin temeli
windows platformları için geliştirilen iş uygulamalarının temel olarak 3 mantıksal
katmandan oluşturmak için oluşmuştur. Bu katmanlar kullanıcı arayüzü, uygulama
ve veri depolamadır. Bu uygulamalar entegrasyon teknolojisi olarak COM u IIS,
MTS ve IE kullanarak işlerin WWW ortamına aktarırlar. Ve elbette geliştirme
ortamı olarakta Visual Studio kullanılır. Sakın Windows DNA nın satın alanıbilecek
ve kurulabilecek bir program olarak algılamayın. Windows DNA sadece yukarıdaki
söylediklerimizi içeren bir modelin ismidir.
COM+
COM+, COM teknolojisinin ikinci
jenerasyonudur. COM teknolojisine yeni özellikler eklenerek dağıtık yapıda
sınıflar içeren uygulamalrın geliştirilmesi kolaylaşmıştır. COM+, DCOM üzerine
kurulmuş ve COMun son versiyonu olarak algılanabilir. COM+ ile, MTS ve işletim
sistemi arasında sıkı bir bağ kurulmuştur. Aslında "MTS 3.0 + yeni özellikler =
COM+ " şeklindeki bir denklem çok doğru olacaktır.
ActiveX
ActiveX, Microsft firmasının COM teknolojisini kullanarak geliştirmiş olduğu
ve çoğunluka internette kullanılmak için geliştirilen programlara verilen addır.
Üzgünümki bu isimlendirme diğerlerinden de kötü bir isimlendirme olmuştur. Mesela
ben ActiveX başlıklı bir kitap hiç görmedim, çünkü ActiveX kavramı şimdilerde
değişti ve insanların kafası karışmasın dieye kimse ActiveX başlıklı bir kitap
yayınlanmıyor(istisnalar her zaman mevcuttur). ActiveX kavramı ilk çıktığında,
internette kullanılan COM tabanlı teknolojilere verilen isim olarak bilindi.
1995 yılında Bill Gates internetin iyi birşey olduğunu görünce, Microsoft ActiveX
kavramının internet ortamında aktif içerik transferinin sağlanmasına vermeyi
uygun gördü. Terminolojik olarak aktif içerik, statik HTML sayfalarının aksine
sunucuda bir programı çalıştıran içeriklerdir. Java Appletler ve ActiveX kontrolleri
bu tür içeriklerdir. Daha sonra internet ile alakalı COM teknolojisine Active
teknolojileri denmeye başlandı. Sonuna bir X koyarakta ismi daha çekici bir
hale gtirdiklerini düşünüyorlardır. Ve nihayetinde internetle alakası olmayan
bütün COM tabanlı teknolojilere ActiveX denmeye başladı ve isim amacında çıkmaya
başladı. Mesela Visual Basic 6.0 ı açtığınızda ActiveX DLL ve EXE diye iki proje
tipi görürsünüz. Bu proje tiplerinin açık bi şekilde internetle alakalı olmadığı
görülmektedir. Gördüğünüz gibi ActiveX kavramı kısacık tarihi boyunca çeşitli
amaçlara hizmet etmiştir. :) Bizde sizin kafanızdaki karışıklıkları silmek için
bu yazıyı yazdık. Umarım azda olsa bir fikri sahibi oldunuz, son olarak yine
çok kafa karıştıran OLE kavramına değineceğiz.
OLE(Object
Linking and Embedding)
ActiveX ikinci bir defa kılık değiştirdi ve bu seferde OLE adını aldı. OLE,
COM tabanlı teknolojilerden oluşan bir Birleşik Döküman(Compound Document) oluşturma
teknolojisidir. Bunun en iyi anlamak için MS Word programını açın, sonrada MS
Excel den bir tabloyu Word belgesinin içine kopyalayın.Göreceksinizki Word belgesinde
bulunan menüler değişecek ve Exceldeki bir görünüme gelecek, sanki Word belgesi
içinden bir Excell belgesi açmış gibi olduk. Eminim daha önce çoğumuzu bunun
MS Word programının bir özelliği olduğunu düşünürdük. Halbuki öyle değil, bu
OLE teknolojisinin en öenmli gerekliliğidir. Yani COM dilinde buna compound
document(birleşik belge) hazırlama denir. COM teknolojisi bu tür uygulamalar
hazırlamak için çeşitli arayüzler sağlamaktadır. Visual C++ ta bu tip şablonlar
oluşturmak için sihirbazlar mevcuttur. Kafanız karışmadan değinegim OLEDB kavramı
compound document ile alakası olmayan COM tabanlı data erişim teknolojilerne
verilen addır. Buna rağman başında OLE ekinin bulunması Microsoft firmasının
bir handikapıdır. Bu yüzden eğer kafanızda hala bir takım sorular varsa hiç
endişelenmeyin bu sizden değil Microsoftun kötü isimlendirmesinden kaynaklanıyor.
Bu yazımızın sonuna geldik. Birsonraki yazımızda Nesne Yönelimi, sınıflar, nesneler
ve arayüzler hakkında geniş bilgi alacağız. COM teknolojisini anlamak için bu
kavramlara ihtiyacımız olacak.
Makale:
COM,COM+,ActiveX,OLE,MTS ve Windows DNA kavramları C#, Visual C# ve .NET Sefer Algan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|
|