Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 25.10.2002
Okunma Sayısı : 40880
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
COM,COM+,ActiveX,OLE,MTS ve Windows DNA kavramları
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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 ’component’tir.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 COM’un 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
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
3
2007
Sayın Sefer Algan. Makeleniz ve emeğiniz için teşekkür ederim. Ancak Com+ hakında yeterli bilgiye erişemedim. Daha detaylı bilgiyi nerden edinebilirim. Yardımcı olursanız sevinirim.
ŞUB
23
2004
SEFER ALGAN BU KONULAR HAKKINDA VE GELISMIS C# HAKKINDA KITAP YAZMAYI DUSUNUYOMUSUNUZ
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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