|
Ejb Nedir? -2- Dağıtık Nesneler |
|
Bundan önceki yazımda (EJB NEDİR? -1) EJB bileşeninin özellikleri ve bileşen (component) model konularına değinmiştim. Bu yazının bir devamı olan şimdiki makalede EJB’nin özelliklerini anlatmaya devam edeceğim ve soyut olan kavramlardan biraz daha somut olarak bahsedeceğim. En alt kısımda bu yazıda kullanılan tüm kısaltmaların açılımını görebilirsiniz.
Bileşen model uygulama sunucu bağımsızlığını sağlar. Bu sayede herhangi bir geliştirici tarafından geliştirilen uygulamalar tüm J2EE uyumlu uygulama sunucularında çalışır. Sunuş ile iş mantığının ayrılması çoklu istemci desteği sağlar. Böylece gerçekleştirdiğimiz uygulama şu anda sahip olduğumuz veya ileride sahip olacağımız tüm istemcilerle çalışabilme garantisi verir. Sistemler dağıtıklaştıkça uygulamalar parçalara ayrıldı. J2EE platformu şu anda dört tane katmandan söz etmektedir. Bunlardan bir tanesi EJB katmanıdır. Bu katman farklı bir platformda tamamen iş mantığını gerçekleştirebileceği gibi diğer katmanlarla aynı platformda da çalışabilir. Tam Java desteği EJB’yi diğer bileşen modellerden ayırır. Java geliştiricileri çok az bir efor sarfederek EJB geliştiricisi olabilirler. Böylelikle Java’nın tüm özelliklerinden ve gücünden yararlanabilirler. Soket, RPC, Dağıtık
Nesneler RPC uygulamalarında programcı bir yordama argümanlar gönderir, yordam da ürettiği sonucu geri döndürür. Bu basit yapı nesneye dayalı programlama dillerinde sadece statik metot çağrımına karşılık gelir ve bu dillerin diğer özelliklerinin atıl kalmasına neden olur. Nesnelerin dağıtık ortamlarda kullanılmasını sağlayan dağıtık nesne teknolojileri bu yüzden ortaya çıkmıştır. Dağıtık nesneler üç parçadan oluşur. 1- İstemcide bulunan "stub"
nesnesi Basit bir dağıtık nesne
uygulaması şöyle gerçekleştirilebilir: Dağıtık nesne teknolojilerine bir örnek CORBA’dır. CORBA standardına uygun ORB’lar istemci ile sunucu arasında bir omurga kurarak bu iki platformu birbirine bağlar ve sunucu taraftaki nesneleri isimlendirme (naming) servisiyle kullanıma açar. Şekil-I:ORB-RPC
farkı *Resimde istemci tarafından bulunan nesneler gerçek nesneler değil, sunucu tarafındaki nesnelere ulaşmayı sağlayan vekil (proxy, stub vs.) nesnelerdir. Yukarıda tipik bir istemci-sunucu
etkileşimi görülmektedir. Şekil (a)’da istemci RPC’yi kullanarak sunucuda
bulunan bir yordamı çağırmaktadır. Bu yaklaşım fonksiyonel dillerde geçerlidir.
Şekil (b)’de ise çağırılan yordam her nesne için farklı sonuçlar üretir.
Bunun nedeni nesnelerin verilerini kendi içlerinde barındırmalarıdır.
Şimdi EJB ve bileşen modelin nasıl ortaya çıktığına değinmek istiyorum. Burada üç tip sunucu taraflı platformdan bahsedebiliriz. -TP (Transaction Processing)
Monitörler Bu platformların amacı yazılan uygulamaların sunucu tarafında bir çevreye (environment) gömülmesini ve istemcinin bu uygulamalara rahatlıkla ulaşabilmesini sağlamaktır. TP sistemler 1968 yılında ortaya çıkmaya başladı. Bilinen TP sistemler arasından CISC ve TUXEDO örnek verilebilir. Bu platformlarda çalışan uygulamalar Cobol gibi fonksiyonel dillerde yazılıyordu. TP monitörler güçlü sistemlerdi.Bu sistemlerin güçlü olmasının sebebi uygulamalara her türlü alt seviyeli servisleri (transaction, resource management vb.) sağlayabilmeleriydi. Bu servisler sayesinde uygulama geliştirici sadece çözmesi gereken problem üzerinde yoğunlaşıyor ve alt seviyeli işlemlerle uğraşmıyordu.TP monitörler uygulamaları çok iyi bir çevrede (environment) barındırabiliyorlardı. Sistemin dağıtıklığı ise RPC ile sağlanıyordu. RPC belli bir zaman sonra yetersiz kalmaya başladı çünkü uygulama geliştiriminde kullanılan Cobol, C gibi diller yerlerini Java, C++, Smalltalk gibi nesneye dayalı dillere bıraktı. Artık TP Monitörlerin kullandığı RPC yerine yeni bir teknoloji kullanılması gerekiyordu. Bunun sonucunda OMG CORBA standardını yazılımcılara sundu ve bu standarda uygun ORB’lar piyasaya çıkmaya başladı. ORB'la anılan bir diğer kavram da dağıtık nesneler kavramıdır. ORB ile TP’nin temel farkı TP’nin uzaktan erişimi yordam tabanlı (procedure based) RPC ile yapmasıdır. (Bkz. Şekil-I) ORB’da ise çağırım (call) statik bir yordama değil de bir nesnenin metoduna yapılır. Her nesnenin kendine ait bir kimliği olduğu için her bir objeye yapılan metot çağrımı RPC’nin aksine farklı sonuçlar verebilir. Fakat ORB programcıya TP'nin sağladığı alt seviyeli servisleri sağlamaz. Bunların yazılımını programcıya bırakır. Sadece nesnelerin dağıtık bir şekilde iletişimini sağlayan bir omurga (backbone) tanımlar. Yukarıdan da anlaşılacağı gibi iki platformda da eksiklikler vardır. Bu eksiklikleri ise CTM’ler ortadan kaldırır. CTM bir çeşit ORB-TP karışımıdır. ORB’nin dağıtık nesne yapısıyla TP’nin sağladığı servisleri bir araya getirerek daha geniş ve kapsamlı bir platform ortaya çıkartır. Günümüz uygulama sunucuları CTM’ye örnek teşkil eder. CTM’nin üç temel özelliği vardır. - Dağıtık nesneler (RMI,
RMI-IIOP, DCOM, CORBA) İlk CTM’lerden birisi MTS’dir. MTS dağıtık nesne altyapısı olarak DCOM’u kullanır. Bileşen modeli ise COM’dur. MTS Microsoft’un tescilli ürünü olduğu için sadece Microsoft’un kendi platformunda çalışmaktaydı. Bu durum da müşterilerin Microsoft’a bağımlı olmasını gerektiriyordu. Bu sıralarda diğer şirketler de kendi CTM’lerini piyasaya sürmeye başladılar. Bu sistemlerin çoğunun ortak özelliği CORBA’yı kullanmalarıydı, ama kullandıkları bileşen modeller farklıydı. Bu yüzden bir platformda çalışan bir uygulama diğer platformda çalışmıyordu. EJB Doğdu Burada bahsettiğimiz CTM ifadesi günümüzde uygulama sunucusu olarak kullanılmaktadır. EJB şu anda piyasada bulunan uygulama sunucularının beyni olarak ifade edilebilir. Tüm iş mantığı EJB bileşenleriyle birlikte uygulama sunucularına gömülerek 7x24 çalışan sunucularda binlerce istemciye servis sağlayabilmektedir. EJB aslında J2EE platformunun bir parçasıdır. J2EE uygulama geliştiricilere kompleks bir sunucu taraflı ortam sağlar. Yazılımcılar kendilerine sağlanan J2EE API’lerini kullanarak yazılımları hızlı ve kolay bir şekilde gerçekleştirebilirler ve J2EE uyumlu uygulama sunucularına gömebilirler. Kısaltmalar 1-Monson-Haefel, R.; ”Enterprise
JavaBeans”, 2nd Edition, O’Reilly & Associates, Inc., 2000 Bundan
sonraki yazımda EJB bileşen çeşitlerini(Entity Bean,Session Bean,Message-Driven
Bean) anlatmaya çalışacağım. |