• Sonuç bulunamadı

Olay Sistemi

3.4. Gezgin Etmenler

3.4.1. Tarihsel Süreç

Taşınabilirliğin evrimsel gelişme sürecinin ilk adımında dosyaların bir makineden diğer bir makineye değişik protokollerle (örneğin FTP) transferi amaçlanmıştır. Bu protokollerde karşı makineye bağlanarak gerekli güvenlik kontrollerinden sonra istenilen dosyanın yerel makineye indirilmesi sağlanmaktadır. Ancak genel kabul gören hiyerarşik ilerlemede şu dört ana yapı kullanılmaktadır, Uzaktan Yordam

Çağırma, Uzaktan Değerlendirme, Talepte Kod Alma ve Gezgin Etmenler. Bir hesaplamanın

yapılması için:

görevi tanımlayan yapabilme bilgisinin18, • hesaplama için kullanılacak kaynakların, ve görevi yerine getirecek çalışan birimin,

aynı hesaplama ortamı üzerinde bulunmaları gerekmektedir.

Aşağıda detaylandırılacak olan taşınabilir yapıları incelemeden önce temel bir problemi gösterilerek, bu problemle ilgili yapıların nasıl çözüm getirdikleri incelenmektedir. Temel problem şudur. “Aslı ve Bilge, birlikte çalışma ve etkileşimle bir çikolatalı kek yapmak istemektedirler. Bir kekin yapılabilmesi için (hizmetin sonucunu almak):

• bir tarife ihtiyaç vardır (hizmet ile ilgili yapabilme bilgisi), • kek için gerekli malzemeye (taşınabilir kaynaklar),

• keki pişirmek için bir fırın (taşınması güç bir kaynak),

• ve malzemeleri, tarife göre birleştirecek bir kişiye (kodu çalıştırmaktan sorumlu hesaplama bileşenine) ihtiyaç vardır.

18 know-how

İstemci Sunucu parametreler(veri)

sonuç(veri)

Keki hazırlamak için (hizmeti vermek /görevi yerine getirmek için) bütün bu elemanların aynı yerde toplanmaları gerekmektedir.” Verilen örneklerde A, Aslı bileşenin rolünü yerine getirmektedir. Aslı etkileşimi başlatan ve hazırlanan çikolatalı keke (hizmet sonucuna) ulaşmak isteyen kişidir. Tablo 3.1’de bu bileşenlerin ilgili yapılarda çalışmadan önce ve sonra nerede bulundukları gösterilmiştir. Bu yapıların detayları devam eden kısımlarda açıklanmaktadır.

Tablo 3.1. Taşınabilir Kod Paradigmaları

Önce Sonra Paradigma SA SB SA SB İstemci Sunucu A Yapabilme bilgisi Kaynak B A Yapabilme bilgisi Kaynak B REV Yapabilme bilgisi

A Kaynak B A Yapabilme bilgisi Kaynak B Talepte Kod Kaynak Yapabilme bilgisi B Kaynak Yapabilme bilgisi A B Gezgin Etmen Yapabilme bilgisi A Kaynak --- Yapabilme bilgisi Kaynak B

3.4.1.1. Uzaktan Yordam Çağırma

Uzaktan Yordam Çağırma (Remote Procedure Call-RPC) işlemiyle, basit dosya transferinden öte çalışan bir programın, çalışma akışında kontrolün sunucu makineye geçmesi sağlanmıştır. Bu modelde istemci, sunucu üzerindeki bir metodu çağırırken, o metodun ihtiyaç duyduğu parametreleri de karşı tarafa göndermektedir (Şekil 3.3). Sunucu bu parametreleri aldığında artık çalışan programın kontrolü kendi elindedir. Diğer taraf sunucudan gelecek olan sonuç değerini beklemektedir.

Şekil 3.3 : Uzaktan Yordam Çağırma Bu paradigma gerçek hayatta şu şekilde örneklenebilir.

“Aslı çikolatalı kek yapmak istemektedir, fakat elinde kek tarifi olmadığı için nasıl yapıldığını bilmemektedir. Aynı zamanda evinde ne gerekli malzeme ne de fırın bulunmamaktadır. Ancak bilmektedir ki arkadaşı Bilge, çikolatalı kekin nasıl yapıldığını bilmekte ve evde iyi hazırlanmış bir mutfağı bulunmaktadır. Bilge’nin talep gelmesi durumunda kek hazırlamaktan memnun olacağını bildiği için, Aslı Bilge’ye telefon açmakta ve ona “kendisi için bir kek yapıp, yapamayacağını”

sormaktadır. Bilge keki hazırlamakta ve daha sonra bunu Aslı’ya göndermektedir.”

3.4.1.2. Uzaktan Değerlendirme

Her ne kadar uzaktan yordam çağırma modelinde “uzak bir makinedeki metot çağrısının yerel makinedeki metot çağrısı gibi yapmak” amacı gerçeklenmesi basit bir amaç olsa da bu model bilgisayar biliminde yeni yaklaşımlar için güçlü bir etkiye sahip olmuştur. Bunun üzerine bir sonraki adım olarak ta basit bir veri (parametre) transferi yerine, çalışacak programın karşı tarafa gönderilmesi fikri ortaya çıkmıştır. Şekil 3.4’te görüldüğü gibi, sunucu makinede çalıştırılması istenen program parçası, parametre olarak gönderilerek bu program parçasının çalıştırılması ve sonucunun istemciye gönderilmesi beklenir. Bu model Uzaktan Değerlendirme (Remote Evaluation-REV)[50] olarak adlandırılmaktadır.

Şekil 3.4 : Uzaktan Değerlendirme

Uzaktan değerlendirme paradigmasında programı çalıştıran bileşen, istemci, görevin yapabilme bilgisine (know-how) sahiptir, fakat bunu yerine getirilmesi için ihtiyaç duyulan kaynak uzaktaki bir makinededir (sunucu). Bu nedenle istemci, kendisindeki yapabilme bilgisini sunucuya göndererek, bu program parçasının karşı tarafta çalıştırılıp sonucun kendine gönderilmesini bekler. Sunucu gönderilen kodu çalıştırarak kendi yerel verilerine daha hızlı erişim ile istenen sonuca ulaşarak, bunu istemciye gönderir.

Bu paradigma gerçek hayatta şu şekilde örneklenebilir.

“Aslı çikolatalı kek yapmak istemektedir. Elinde kek tarifi olmasına rağmen, ne malzemesi ne de fırını evinde bulunmamaktadır. Arkadaşı Bilge ise evinde bu ikisine sahip bulunmakta, ancak kendisinde kek tarifi bulunmamaktadır. Aslı Bilgenin yeni tarifleri denemekten mutlu olacağını bilmekte ve telefon ederek ona “Benim için bir çikolatalı kek yapar mısın? Tarifi şu şekildedir: 3 tane yumurta al....” şeklinde yol göstermektedir. Bilge bu tarife göre keki hazırlamakta ve daha sonra bunu Aslı’ya göndermektedir.”

3.4.1.3. Talepte Kod Alma

Talepte Kod Alma (Code on Demand-COD) paradigmasında, istemci kendi kaynaklarına yerel erişim hakkına sahiptir. Ancak görevi yerine getirmesi için gereken yapabilme bilgisine sahip değildir. Bu nedenle istemci bu bilgiye sahip olan

İstemci Sunucu

parametreler(kod) sonuç(data)

sunucudan, ihtiyaç duyduğu yapabilme bilgisine Şekil 3.5’te görüldüğü gibi erişir ve kendi görevini sonlandırır.

Şekil 3.5 : Talepte Kod Alma Bu paradigma gerçek hayatta şu şekilde örneklenebilir.

“Aslı çikolatalı kek yapmak istemektedir. Evinde hem kek için gerekli malzeme hem de fırın bulunmakta, ancak kek yapmak için gerekli tarif bulunmamaktadır. Aslı bilmektedir ki, arkadaşı Bilge bu tarife sahiptir ve ihtiyaç duyulması durumunda arkadaşlarına bunu (ödünç) vermektedir. Aslı, Bilge’ye telefon açarak ondan kek tarifini ister. Bilge tarifi verir ve Aslı’da bu tarife göre çikolatalı keki hazırlar.”

3.4.1.4. Gezgin Etmen

Taşınabilir kodun bir örneği olarak gezgin etmen [51] kavramı kullanılmıştır. Bir etmen, görevi ile ilgili karar alınmasında ve görevin idamesinde kullanıcı ile her zaman doğrudan bir etkileşim göstermeden farklı özerk derecelerinde çalışabilen aktif bir yazılım varlığıdır. Bir gezgin etmen ise ağ üzerinde farklı makinelerde dolaşabilen ve konak makinelerinin özkaynaklarını ve hizmetlerini Şekil 3.6’da gösterildiği gibi kullanabilen etmenlerdir.

Şekil 3.6 : Gezgin Etmen Bu paradigma gerçek hayatta şu şekilde örneklenebilir.

“Aslı çikolatalı kek yapmak istemektedir. Elinde gerekli malzeme ve kek tarifi bulunmaktadır, ancak temini güç ve pahalı olan fırını bulunmamaktadır. Aslı bilmektedir ki arkadaşı Bilge’nin fırını vardır ve kullanım ücreti düşük olan bu fırını arkadaşlarına kullandırmaktadır. Aslı kekin hamurunu hazırlar ve bununla beraber Bilge’lere giderek çikolatalı kekini orada pişirerek kekiyle beraber tekrar evine döner.”

İstemci Al(kod) Sunucu

İstemci Sunucu İstemci Program Sunucu Program İstemci Sunucu İstemci

Program Program Sunucu Gezgin

Etmen

kod + veri sonuç

Gezgin etmen taşınabilir, esnek, özerk, dinamik ve verimli bir yapıya sahiptir. Bir görev kodu kendi içine yerleştirildiği zaman, uzaktaki bir makineye kendi ana makinesinden gönderilir ve bu makinede görevini tamamladıktan sonra ulaştığı sonucu asıl makineye bir mesajla gönderirler veya doğrudan kendisi gelerek sonucu iletir. Gezgin etmen kavramı aynı zamanda dağıtılmış ortamlarda ve Internet’te paralel çalışmaya da olanak sağlamaktadır. Görevler ufak ve çok sayıda gezgin etmen içine gömülerek daha sonra çalışmaları için ağ üzerindeki farklı makinelere gönderilirler. Her etmen kendine yüklenen görevi yerine getirmek için bağımsız olarak çalışır ve ulaştıkları sonuç bir ana sunucu üzerinde veya yönetici etmen üzerinde toplanır. Bu sayede paralelleştirilebilen görevlerde hızlı sonuç elde edilebilmesine olanak sağlanmaktadır [46].

Bu şekildeki kompleks aktif varlıkların aşağıdaki adımları izlemeleri gerekmektedir: 1. Program akışı durdurulur.

2. Göç ettirilecek varlığı durum değişkenleri toplanır.

3. Program kodu ve durum değişkenleri gidilecek uca gönderilir. 4. Kod ve değişkenler yeni makinede eski hallerine getirilir. 5. Program çalışmaya yeniden başlatılır.

Taşınabilir sistemler aslında homojen yapıda sistemler için ortaya çıkmışlardır. Bunlarda verilerin ikili (binary) gösterimleri ve sistem özellikleri aynı olmasına rağmen yine de bazı problemlerle karşılaşılmaktadır. Günümüzdeki heterojen ortamlara doğru olan genişleme göz önüne alındığında, taşınabilirlik daha da zor bir problem olarak karşımıza çıkmaktadır. Buna cevap olarak bulunan bir yol ise Java programlama dilidir. Java nesneye yönelik programlama stilini, bir ara kod dönüşümü ile sekizli kodlarına (byte code) çevirmekte ve bu kod JVM e sahip her platformda aynı şekilde yorumlanmaktadır.