Dağıtılmış nesneye dayalı sistemler için dağıtılmış bileşik nesne modeli

Dağıtılmış sistemler bilgisayar ağlan üzerinden sistem kaynaklarının ve bilginin paylaşımım sağlarlar. Bu sistemleri çekici yapan en önemli tasarım konusu dağıtım ile ilgili tüm ayrıntıların kullanıcılara saydam olarak gerçekleniyor olmasıdır. Fakat ne yazık ki, sistem kaynaklarım kullanıcılar arasında saydam bir şekilde paylaştıran ve yöneten genel amaçlı, geniş alana yayılmış dağıtılmış sistemler neredeyse yok denecek kadar azdır. Var olan bazı sistemler de kısıtlı ölçüde kolaylıklar sağlamaktadırlar. Dağıtılmış sistemlerde saydamlık genelde yerel alan sistemleri için sağlanmıştır ve bu sistemler için bulunan çözümler geniş alana ölçeklenememektedirler. İnternet üzerinden veri paylaşımı gibi geniş alanlı uygulamaların geliştirilmesi için genellikle çok fazla emek sarf etmek gerekmektedir. Bu durum, üzerinde çalışılan işletim sistemi ve diğer sistem çözümlerinden gerekli haberleşme desteğinin sağlanamamış olmasından kaynaklanmaktadır. Günümüzde iyi bilinen birçok dağıtılmış sistem uzaknesne modelini benimsemişlerdir. Bu modelde, nesne tek bir alana yerleştirilir ve bu nesnenin kullanıcısına bir vekil arayüzü üzerinden nesneye saydam erişim olanağı sağlanır. Bu yöntemde nesne en iyi durumda kullanıcısını haberdar etmeksizin bir başka alana göç edebilir. Bununla beraber, uzaknesne modelinin genelde ölçeklenebilme eksikliğinden kaynaklanan birçok dezavantaj lan bulunmaktadır. Kullanıcılara farklı nesne çağrı yöntemlerini gerçekleyecek bir destek sunmamaktadır. Uzaknesne modeli ile desteklenen bir dağıtım saydamlığı, paylaşılan bir nesnenin kullanımını ve gerçeklenmesini basitleştirmekle birlikte, bilgili tasarımcıların dağıtımın getirdiği avantajdan yararlanmalarını da önler. Bazı uygulamalar paylaşılan bir nesneye ait verinin veya kodun, çok sayıdaki alan üzerine başarım, kullanılabilirlik, koruma ve yük dengeleme amacıyla dağıtılmasına gereksinim duyulabilirler. Ancak, uzaknesne modeli bu konuda destek sağlamaz. Bir uzaknesne belirli bir alan üzerinde bulunur ve kendisine sadece o alanda erişilebilir. Halbuki, dağıtılmış uygulamaların ölçeklenebilirliği ve başarımı için yerellik büyük önem taşır. Paylaşılan nesnelerin farklı alanlara kopyalanması, etkin yerel erişim ve kullanılabilirlik açısından önemli yararlar sağlar. İnternet ortamında işbirliğiyle yürütülen dağıtılmış uygulamalar genellikle iri ya da orta taneli nesneler üzerinde çalışmalarına rağmen, bu tip uygulamaların kullanıcıları çoğunlukla nesnelerin küçük bir parçasıyla ilgilenmektedirler. Eğer büyük bir nesne daha küçük alt nesnelere bölünebilirse ve kullanıcı alanına nesnenin yalnızca erişim steğinin hedefi olan parça gönderilirse, hem belleğin verimli kullanımı söz konusu olacak, hem de farklı alanlar arasında aktarılacak olan verinin miktarı azalacağından, çalışan uygulamanın başarımı da yükselecektir. Alt nesnelerin sağlayacağı bir diğer yarar da, kopyalanmış nesnelerin güncellenmesi sırasında ortaya çıkacaktır. Nesnenin tümünün değil de, bir parçasının güncellenmesi, doğrudan ağda aktarılacak veri miktarını azaltacaktır. Ayrıca, bölünmüş haliyle bir paylaşılan nesne, alt nesnelere paralel erişimin en yüksek düzeyde gerçekleşmesini de sağlayacaktır. Tezde bu noktalar göz önüne alınarak, uzaknesne modeline alternatif olarak, kopyalamaya dayalı yeni bir model olan Dağıtılmış Bileşik Nesne modeli önerilmektedir. Ayrıca, önerilen DBN modelinin dağıtılmış ortamda Java programlama dili üzerinden kullanımına imkan sağlayacak bir Dağıtılmış Bileşik Nesne Tabanlı Ortamın tasarım ve gerçekleme ayrıntıları da sunulmaktadır. DBN modelinin arkasında yatan temel fikir, çok sayıdaki alt nesnenin bileşiminden meydana gelmiş olan bir bileşik nesnenin farklı alanlar üzerinde fiziksel olarak dağıtılmasıdır. Önerilen modele göre, dağıtılmış ortamdaki uygulamalar bileşik nesneler üzerinden haberleşirler ve birbirleri ile etkileşimde bulunurlar. Bu amaçla, her bir paylaşılan nesne bir arayüz üzerinden kullanılabilen bir metotlar kümesi sunar. Nesneler pasiftir. Etkinlik, nesneleri paylaşan ve onların metotları üzerinde eş zamanlı olarak çağrı yapabilen uygulama programları tarafından sağlanır. Bir dağıtılmış bileşik nesnenin iki görünüşü vardır: Kullanıcının bakış açısına göre, tekil paylaşılan bir nesnedir. Farklı adres alanlarında bulunan çok sayıdaki istekçi uygulamaları tarafından paylaşılmaktadır. Bu nesneye programcı-tanımlı bir arayüz üzerinden erişilir. Onun bileşenleri ve özellikle de nasıl dağıtıldıkları görünemez. Tasarımcısının bakış açısına göre ise, bir dağıtılmış bileşik nesne, birlikte çalışan bir alt nesneler kümesinden oluşmaktadır. Bu yapıdaki her bir alt nesne merkezi bir gösterilime sahiptir. Yürütme sırasında, kullanıcı istekleri doğrultusunda, bir bileşik nesnenin alt nesneleri farklı adres alanlarına kopyalanarak dağıtılmış bir nesne yapısını oluştururlar. Dağıtılmış bileşik nesneyi oluşturan alt nesneler ve bunların yapılan yalnızca bu nesnenin tasarımcısı tarafından bilinir. Kullanıcılar ise, nesne hakkında kendilerine sunulan istekçi arayüzü dışında başka bir bilgiye sahip değildirler. Nesne üzerinde bir metot çağrısı yürüttüklerinde, çağrının gerçeklenme aşamalarından haberdar olmazlar. Önerilen modeli gerçeklemek üzere, dağıtılmış bileşik nesneyi oluşturan alt nesnelerin farklı alanlar üzerinde rahatlıkla bağlanabilmesi amacıyla bir bağlantı nesnesi ve alt nesne kopyalarının senkronizasyon ve tutarlılığının sağlanabilmesi amacıyla da bir kontrol nesnesi tasarlanmıştır. Bağlantı nesnesi ile dinamik bağlanma sağlanırken, kontrol nesnesi ile, dağıtılmış bileşik nesnenin alt nesneleri bazında düzenlenebilen çeşitli tutarlılık ve senkronizasyon mekanizmaları kurulabilmektedir. Dağıtılmış bileşik nesnenin farklı alanlarda bulunan alt nesne kopyalan arasında, alt nesne bazında düzenlenebilen çeşitli tutarlılık ve senkronizasyon mekanizmaları kurulabilmekte ve tüm gerçekleme ayrıntıları kullanıcıya saydam olarak kontrol nesnesi ve DBNTO ara katman yazılımı tarafından sağlanmaktadır. Bileşik nesneyi oluşturan alt nesneler, bu nesnelerin farklı alanlar üzerinde kopyalanma ayrıntıları, kopyalar arasında yürütülen tutarlılık protokolleri, eşzamanlılık kontrolünün X111sağlanması gibi gerçekleme ile ilgili ayrıntılar nesnenin bir parçası olarak onun arayüzünün arkasına gizlenmiştir. DBN modelinin gerçeklenmesi için sunulan DBNTO ara katman yazılımı dağıtılmış bileşik nesneleri desteklemek için tasarlanmış Java paketlerinden oluşmaktadır. DBNTO özellikle internet çapma yayılmış bilgisayar destekli müşterek uygulamalar geliştirecek olan kullanıcılar için Java programlama dili üzerinden erişilebilen bir arayüz sağlamak amacıyla tasarlanmıştır. DBNTO birçok uygulama için gerekli olan nesne paylaşımı, dağıtımı, kopyalama, tutarlılığın sağlanması, uygulamanın dinamik olarak yüklenmesi gibi temel mekanizmalar sunmaktadır. DBNTO ara katman yazılımım kullanarak, programcılar merkezi bir ortamda çalışıyor görüntüsü altında dağıtılmış uygulamalar geliştirebileceklerdir. Daha sonra, üretilen kod üzerinde herhangi bir değişiklik yapılmaksızın, uygulama dağıtılmış ortamda çalışacak şekilde düzenlenecektir. Bu esnek yapı, dinamik bağlama, senkronizasyon fonksiyonları ve tutarlılık protokolleri gibi kolaylıklar sağlayan kod parçalarının otomatik olarak alt nesnelere eklenmesi suretiyle elde edilmektedir. Bağlantı ve kontrol nesnelerinin üretildikleri sınıf tanımlamaları alt nesne sınıflarının arayüz tanımlamalarından yararlanılarak, bir sınıf üreteci tarafından otomatik olarak üretilmektedir. Otomatik sınıf üretme işleminde tasarımcıya düşen görev, sadece bir alt nesne metodunun nesne verilerine hangi düzeyde eriştiğini belirlemek ve arayüz tanımlama dosyasını ona göre hazırlamaktır. Önerilen DBN modelinin başaranını ölçme ve benzer diğer sistemlerle karşılaştırmak amacıyla, DBNTO ara katman yazılımı üzerinde bir takım testler uygulanmıştır. Aynı testler uzaknesne modeline dayanan ve literatürde iyi bilinen Java RMI yapısı üzerinde de yapılmıştır. Her iki sistemden elde edilen ölçüm sonuçları karşılaştırıldığında, DBN modelinin internet üzerinde müşterek uygulama geliştirmek amacıyla uygun bir yapı sunduğu görülmüştür. xıv