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 Grubunun, Nesne 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
:
- https://en.wikipedia.org/wiki/Component_Object_Model
- http://belgeler.cs.hacettepe.edu.tr/yayinlar/eski/DCOM_20122029.pdf
- http://www.tameroz.com/content/files/complus.pdf
- http://www.slideshare.net/PeterREgli/com-13617090
- http://www.indigoo.com/dox/wsmw/1_Middleware/COM.pdf
- http://altanmesut.trakya.edu.tr/pubs/YL_tez.pdf
- Mustafa TÜRKSEVER, R. Cenk ERDUR, “Farklı Bakış Açılarından Java RMI ve CORBA’nın Karşılaştırılması” Pamukkale Üniversitesi Mühendislik Fakültesi,Mühendislik Bilimleri Dergisi,7/1 (2001) 63-69
- https://seyfullahgenc.wordpress.com/2015/05/24/dagitik-programlama-3/
- https://en.wikipedia.org/wiki/Object_Linking_and_Embedding
Hiç yorum yok :
Yorum Gönder