15 Temmuz 2015 Çarşamba

COM, DCOM, CORBA, OLE ile Dağıtık Programlama

Yazılım Bileşenlerinin , Nesnelerinin Ortak ve Dağıtık Olarak Kullanılması:
Nesneye Yönelik programlama(NYP) yaklaşımı ile oluşturulan nesnelerin, mimari sınırları ve ağ yapılarını aşan ,aynı ve çapraz adres evrenlerinde etkileşimi sağlayan standart bir alt yapıya sahip olmayışları,  NYP yaklaşımının değerini yitirmeye başlamasına sebep olmuştur. Oluşturulan bu nesneler arasında etkileşimin olmayışı insanları yeni teknoloji arayışlarına itmiştir. Bu arayışın sonucunda nesneler arası etkileşimi sağlayan,uygulama geliştiricilere oluşturulan paket bileşenlerinin tekrar ve her ortamda kullanılması olanağı veren COM(Component Object Model) teknolojisi ortaya çıkmıştır. COM teknolojisiyle uygulama geliştiriciler kendi fonksiyonlarını yazılım bileşenleriyle bütünleştirerek kullanabilmişlerdir. Bu durum sonucunda yazılımı oluşturacak bileşenler hazır paketler halinde alınarak yazılım geliştirilmeye başlanmıştır. Böylelikle uygulama geliştiriciler, uygulama bileşenlerini kendileri oluşturmadan hazır halde aldıkları ve her uygulamada sorunsuz kullanabildikleri için geliştirme zamanından da kazanç sağlamış oldular. Bu teknolojinin yaratılmasının arkasında bulunan düşüncelerden biri de yazılım bileşenlerinin en az iş gücü ile en verimli biçimde yeniden kullanılabilmesidir. Bu tanım bir yazılım geliştirici için daha önceden yazılmış olan bir kodun tekrar yazılmaması, bir IT yöneticisi için ise bu kodun tekrar yazılmasından kaynaklanan maliyet ve zamandan tasarruf demektir.
Yeni ihtiyaçlar doğdukça farklı teknoloji arayışları da sürmüştür. COM, ilk ortaya çıktığında aynı makine üzerinde çalışan uygulamalar arasında etkileşim sağlanabiliyordu. Dolayısıyla,COM teknolojisi de bu ihtiyaç çerçevesinde geliştirilmiş bir teknoloji olmuştur. Uygulamaların birbirleriyle etkileşimi için ise aynı makine üzerinde çalışıyor olmaları kısıtını ortadan kaldırmak amacıyla yeni çalışmalar yapılmış ve 1991 yılında IBM,Sun Microsystem gibi bazı şirketlerin de desteklediği Omg(The Object Management Group) tarafından CORBA(Common Object Request Broker Architecture) mimarisi geliştirilmiştir.Geliştirilen diğer bir mimari ise Microsoft’un geliştirdiği DCOM(Distributed Component Object Model) olmuştur.Bu mimari, COM teknolojisinin gelişmişi olarak ağ üzerinde değişik makinelerdeki nesneler arası iletişim kurmayı hedefleyen bir mimari olarak geliştirilmiştir. Bu teknolojilerde en önemli olan noktalardan biri de, bu uygulamaların farklı dillerde yazılmış olduklarında ve hatta farklı bilgisayarlar üzerinde bulunan farklı işletim sistemleri üzerinde çalışıyor olmaları durumunda bile bu component veya nesneler arası iletişimin başarıyla sağlanması olmuştur.

COM (Component Object Model-Bileşen Nesne Modeli):
Yazılım bileşenleri için, yeni bileşenler oluşturmak veya var olan bileşenleri uygulama programları veya başka bileşenler içerisinden kullanmak için Microsoft Firması tarafından 1993 yılında tanımlanmış bir Binary-Interface(BI) standardıdır. Bu standart ; Bileşen Nesne Modeli, nesnelerin yaratılması ve istemci-nesne arasındaki bağlantıyı standart mekanizmalar şeklinde tanımlamıştır. Bu mekanizmalar, bilinen Nesneye Yönelik programlama ortamından farklı olarak uygulamalardan ve bu uygulamaların oluşturulduğu dilden bağımsızdır. Bileşen Nesne Modeli’nin işletim sisteminden,donanım ortamından, uygulama dilinden bağımsız olması İkili Yapı Standardı(BI) ile sağlanmıştır.Ağ ortamında da kullanılan bu yapı mimariden bağımsız bir iletişim ve protokol yapısı ile farklı ortamlarda oluşturulan nesnelerin birbirleriyle etkileşimini sağlamaktadır. Bu yapı kullanıldığı sürece, nesneler birbirlerinin gerçekleştirimine bakmadan sadece nasıl bağlantı kurulacağı ve verinin nasıl aktarılacağını bilerek birbirleriyle etkileşim içinde olabilirler. Bu yapıyı kullanan metotlardan oluşan arayüz (yazılım bileşenlerinin anlaşmalarını sağlayan işlemler kümesi ) COM içeriğinde tanımlanarak yazılımlara sağlanmıştır. Her arayüz(interface) yazılımlar için ortak özelliklere sahip bir bağlantı noktası konumundadır. Uygulama geliştiriciler bu bağlantı yapılarını özelleştirerek kendi nesne yapılarını oluştururlar.
COM genel olarak karmaşık uygulamaların farklı ortamlardaki uygulamalarla etkileşim sorununu çözmek için yeni bir anlayış ortaya çıkarmıştır. Bu etkileşim sorunu çözülünce, COM teknolojisi uygulama geliştiriciler tarafından oluşturulmuş olan nesnelerin yeniden kullanılabilirliğini sağlamıştır. Yeniden kullanabilirlik, uygulama geliştiricilere sistem oluşturmada kolaylık sağlayan ve bu şekilde oluşturulmuş farklı kuruluşların sistem bileşenlerinin standart bir yapıyı kullanarak birbirleriyle iletişim kurmasına olanak veren önemli bir özelliktir. Temel olarak aynı yapıya sahip COM teknolojisini kullanabilen nesnelerin, bu yapıya uygun özelliklerinin fazla esnek olmaması, sistem bakımını ve nesnelerin farklı COM yapısını kullanan ortamlara uyum sağlamasını kolaylaştırır. COM teknolojisi,uygulama geliştiricilere standart bir uygulama geliştirme arayüzü tanımlamıştır. Bu arayüzle uygulama geliştiricilerin COM yapısını kullanabilen nesneler oluşturması ve bu nesneleri özel uygulamalarda kullanarak değişik uygulamalardaki nesnelerle etkileşim sağlayabilmesine olanak verilmesi hedeflenmiştir.
 Şekil 1 : COM(Component Object Model) in evrimsel gelişimi.

DCOM(Distributed Component Object Model- Dağıtık Bileşen Nesne Modeli):
DCOM, Bileşen Nesne Modelinin(COM) bir uzantısıdır. Microsoft tarafından bilgisayarlar arasında dağıtılmış uygulamaların daha rahat oluşturulabilmesi ve çalışabilmesi için yazılmıştır. COM’un ağ üzerinde farklı bilgisayarlarda bulunan bileşenlerin iletişim kurmasını sağlamak üzere geliştirilmiş sürümüdür. COM aynı makinedeki farklı görevlere istemcinin erişmesine olanak verirken, farklı makinelerde haberleşmeyi sağlayamaz. İstemci görev ve bileşenler ayrı makinelerde olduğu zaman DCOM yerel Inter-process haberleşmesini ağ protokolü ile sağlar. DCOM’un sağladığı altyapı ile uygulamalar ağ üzerinde dağıtılabilir. DCOM ile bileşenin bulunduğu yer bilgisi istemciden gizlenir. Bu sayede istemci bileşenin türü ne olursa olsun bileşene bağlanmak için aynı kodu kullanır. DCOM, COM programlama modeline yerden bağımsızlık, yeni güvenlik mekanizmaları, bileşen yönetimi ve bellek yönetimi konularında ilave yetenekler getirmektedir. COM ile istemci uygulamaları sunucunun paketleme türü ne olursa olsun aynı programlama modelini kullanmaktadır. COM nesneleri istemci prosesi içerisine yüklenebileceği gibi aynı makine üzerinde farklı bir proses olarak da yüklenebilir. DCOM bu konum saydamlığı özelliğini daha da genişleterek bileşenlerin ağ üzerinde herhangi bir bilgisayarda olmasını olanaklı kılmaktadır.
DCOM Microsoft IDL(MIDL- Microsoft Interface Defination Language ) olarak bilinen ikili arayüzlerin tanımlandığı bir tablo kullanmaktadır. Her arayüz(interface) 128 bitlik uniq bir belirtece sahiptir.(Interface Identifier-IID) DCOM nesneleri bir sınıfın örneği olarak yaratılır. Bu nedenle aslında DCOM sınıf nesneleri olarak da tanımlanabilir. Bütün nesneler standart bir nesne arayüzü uygularlar. Bir nesne yaratıldığı zaman sınıf nesnesi bu arayüze bir gösterge döndürür. Ayrıca her nesne sınıfının da kendine ait uniq referansı vardır(CLSID). İstemci taraf için nesneler üzerinde kendi adres alanındaymış gibi işlem yapılır. Yani; istemci taraf başka bir makinede işlem yapıldığını anlamaz. Çağrılan yöntemler ve kullanılan nesne bileşenleri sanki kendi adres alanındaymış gibi işlem yapar. DCOM’ da istemcinin yeniden çağrılan bir nesneye referansı bir arayüz göstergesidir. İstemci bu arayüz göstergesini referans gösterilen arayüzde metot çağırmada kullanır. İki görev arasında iletişim bu göstergeler sayesinde olur. Bir göstergeyle işlem yapmak demek aslında o göstergenin ait olduğu arayüzün uniq olan IID(Interface Identifier)si ile işlem yapmak anlamına gelir.
Şekil 2 : Görev yönünden DCOM şeması
DCOM da, COM’un devamı olarak dilden bağımsızdır. DCOM bileşenleri her dilde oluşturulabilir ve oluşturulan bileşenler farklı dillerde ve araçlarda da kullanılabilir. Dil bağımsızlığı sayesinde geliştiriciler kendi dilleriyle gerçekleştirim yapabilir, yeni bir dil öğrenmek zorunda kalmazlar. C++, Microsoft VJ++, Object Pascal (Delphi), Visual Basic ve Cobol gibi dillerle DCOM bileşenleri geliştirilebilir. Ancak yine de dil bağımsızlığında bazı kısıtlamalar vardır. Örneğin, DCOM Java’nın sadece Microsoft tarafından geliştirilmişiyle çalışır.
DCOM; TCP/IP, UDP IPX/SPX ve NETBIOS gibi birçok iletişim protokolüyle çalışabilmektedir. Böylelikle uygulamanın belirli bir platforma bağlı kalması önlenir. DCOM bu protokollerin hepsinde güvenlik iskeleti sağlamaktadır.

CORBA (Common Object Request Broker Architecture-Ortak Nesne İstem Aracısı Mimarisi) :
CORBA, OMG (Object Management Group-Nesne Yönetim Grubu) tarafından geliştirilmiş dağıtık nesne mimarisi standardıdır. Nesne Yönetim GrubununNesne Yönetim Mimarisi‘nin (OMA-Object Management Architecture) ana bileşenlerinden birisidir. OMG, bilgisayar endüstrisinde yer alan 800’den fazla kuruluş tarafından desteklenen bir çalışma grubudur. Microsoft, söz konusu destekçi kuruluşlar arasında bulunmamaktadır. Bunun nedeni Microsoft’un DCOM (Dağıtık Bileşen Nesne Modeli) adında kendine özgü dağıtık nesne mimarisini geliştirmiş olmasıdır.
Nesne Yönetim Mimarisi Nesne Modeli ve Referans Modelinden oluşur. Nesne Modeli heterojen bir ortamda dağılmış nesnelerin nasıl tanımlanabileceğini belirler. Referans Modeli ise nesneler arası etkileşimleri tanımlar. Dolayısıyla Nesne Yönetim Mimarisi heterojen ortamlara dağılmış beraber işleyebilen dağıtık nesnelerin geliştirilmesine yardımcı olur. CORBA sayesinde programcılar kullandıkları nesnelerin hangi dilde yazıldığına, dağıtık olup olmadıklarına, işletim sistemlerine ve iletişim protokollerine bakmaksızın yazılım uygulamalarını geliştirebilirler. Dağıtık nesnelerin istemci ve sunucu olmak üzere iki yönü vardır. İstemci ve sunucu arasındaki ilişki şöyle gerçekleşir; Sunucu, uzak bir ara yüz (remote interface) sağlar ve istemci de sağlanan uzak ara yüzü çağırır. Bu ilişki RMI ve CORBA gibi birçok dağıtık nesne standartlarında benimsenen bir yaklaşımdır. Bu bağlamda, sunucu ve istemci terimlerinden kastedilen uygulama düzeyindeki etkileşimlerden ziyade nesne düzeyindeki etkileşimlerdir. Yani bir uygulama, herhangi bir nesne için sunucu olabilirken başka bir nesnenin istemcisi olabilir.

Şekil 3 : Farklı dillerde yazılmış CORBA bileşenlerinin iletişimi
CORBA nesneleri bilgisayar ağı üzerinde herhangi bir yerde bulunabilmektedir. Uzak istemciler bu nesnelere metod çağrımları yolu ile erişebilmektedirler. İstemcilerin, sunucu nesnelerinin bilgisayar ağı üzerindeki yerini bilmesine gerek yoktur. Sunucu nesnelerinin hangi dille yazıldığı da istemciler açısından önemli değildir. Örneğin, bir sunucu nesne C++ sınıfları olarak veya uzun bir COBOL programı olarak gerçekleştirilmiş olabilir. İstemci açısından önemli olan sunucu nesnenin dışarıya sunduğu arayüzdür. Sunucu nesne arayüzünde, uzak istemcilere sunulabilecek servisler belirlenmektedir. Bu nedenle sunucu nesne arayüzü uzak istemciler ve sunucular arasında geçerli olan bir kontrata (anlaşmaya) benzetilebilir. Bir nesnenin başka bir nesneden servis isteyebilmesi için, o nesnenin dışarıya sunduğu arayüzü bilmesi gerekir. IDL (Interface Definition Language-Arayüz Tanımlama Dili), CORBA nesnelerinin arayüzlerini tanımlamak için kullanılan dildir. IDL ile yazılan arayüzlerde bulunan metod, CORBA’nın desteklediği (CORBA ile bağlanabilen) C, C++, Ada, Smalltalk, COBOL, Java dillerinde yapılabilmektedir. Diğer dillerin de desteklenmesi için çalışmalar devam etmektedir. IDL, yukarıdaki Şekil 3’de de görüldüğü gibi işletim sistemi ve programlama dilinden bağımsız arayüzler tanımlanmasını sağlayarak farklı dillerde yazılmış istemci ve sunucuların içten-işletilebilirliğine (interoperability) izin vermektedir. IDL dili, C++ dilinin bir alt kümesi olarak tasarlanmıştır. Bu alt küme, kalıtım (inheritance), aykırı durum yönetimi (exception handling) gibi özellikleri de içermektedir.
Şekil 4 : CORBA Mimarisinin Temel Elemanları
CORBA mimarisi; yukarıdaki Şekil 4 de de görüldüğü gibi dört temel elemandan oluşmaktadır. Bu elemanlar;
ORB (Object Request Broker) : Nesnelerin birbirlerinin yerini, gerçekleştirim dillerini, alt düzey iletişim mekanizmalarını bilmeden saydam (transparent) olarak birbirlerinden istekte bulunabilmelerini ve yanıtlar alabilmelerini sağlamaktadır.
CORBA servisleri (CORBA Services): CORBA servisleri, IDL ile yazılmış arayüzler biçiminde paketlenmiş sistem düzeyinde servisler topluluğudur.
CORBA’nın uygulama seviyesinde hizmetleri(CORBA Facilities): “CORBA Facilities”, uygulama nesnelerinin doğrudan kullanabileceği ve IDL ile tanımlanmış olan uygulama düzeyi çerçeveler (frameworks) topluluğudur. Gezgin etmenler (mobile agents), güvenlik duvarları (firewalls), uluslararası yapma (internationalization) “CORBA facilities” implementasyon örnekleri arasında sayılabilmektedir.
Uygulama Nesneleri : Uygulama nesneleri kullanıcıların geliştirdiği uygulamaya ilişkin nesnelerdir.

OLE (Object Linking and Embedding ) : 1990 ‘lı yıllarda Microsoft tarafından  geliştirilen özel bir teknolojidir. Kaynak nesne referansını, gömülü olarak başka nesne içerisinden çağırmamızı sağlar. Yani; kaynak dosyadaki veriler değiştiğinde hedef dosyadaki(link alınmış dosyadaki) verilerin güncellenmesi isteniyorsa, bağlantılı nesneler(OLE nesneleri) kullanılabilir. OLE nesneleri kullanıldığında özgün bilgiler kaynak dosyada depolanmış olarak kalır. Özgün veriler ile olan bağlantıları koruyabilmek için mutlaka ilgili OLE nesnesinin bulunduğu dosya, bulunulan networkte kullanılabilir olarak kalması gerekmektedir. Kaynak dosyada ki veriler değiştirildiğinde otomatik olarak güncellenerek hedef dosyada ki verilerin değiştiği görülebilir. Geliştiriciler için, OLE denetimi Uzantısı “OCX” ’tir.

Kaynaklar :




Hiç yorum yok :

Yorum Gönder