MODEL VIEW - CONTROLLER (MVC) TASARIM KALIBI



Benzer belgeler
Üst Düzey Programlama

ÖZGÜR YAZILIMLAR İLE J2EE

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.


Client Server Database

BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Üst Düzey Programlama

1.PROGRAMLAMAYA GİRİŞ

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

Veritabanı. Ders 2 VERİTABANI

Öğr. Gör. Serkan AKSU 1

Java. Hakkımızda. Java Eğitimi

Mobil Cihazlardan Web Servis Sunumu

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

C# nedir,.net Framework nedir?

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

BİT in Temel Bileşenleri (Yazılım-1)

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

İnternet Programcılığı

Film Arşiv Sistemi. Yazılım Tasarım Belgesi

Java Programlama Giriş

XAML Dili Microsoft Blend. Tasarım ve Kodlamanın. Birbirinden Ayrılması

Spring Giriş Eğitimi

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Yrd. Doç. Dr. Gökçe BECİT İŞÇİTÜRK. Gökçe BECİT İŞÇİTÜRK 1

Veritabanı Uygulamaları Tasarımı

İNTERNET PROGRAMCILIĞI - II

Web Uygulamaları Mimarileri ve Güvenliği

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

JAVA API v2.0 Belge sürümü: 2.0.2

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

PHP 1. Hafta 1. Sunum

Üst Düzey Programlama

Web Uygulama Anaçatıları. Tahir Emre KALAYCI. May 5, 2009

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Üst Düzey Programlama

Yazılım Mühendisliği 1

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

Swing ve JDBC ile Database Erişimi

Nagios XI Günümüzün talep gören kurumsal gereksinimleri için en güçlü BT altyapısı gözetim ve uyarı çözümüdür.

4. Bölüm Programlamaya Giriş

OPC Data Access (DA) Temelleri

Java Temel Özellikleri

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Programlama Yazılımı ile Web Sitesi Oluşturma

Veri Erişim ve Yönetim Kütüphanesinin Servis Tabanlı Mimari ile Tasarlanması H. Doğan Köseoğlu, S.Bozbey

MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

COĞRAFİ BİLGİ SİSTEMLERİ İLERİ SEVİYE EĞİTİMLERİ BUILDING GEODATABASE EĞİTİMİ

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Üst Düzey Programlama

Interact API v2.0 Belge sürümü : 2.0.0

COĞRAFİ BİLGİ SİSTEMLERİ İLERİ SEVİYE EĞİTİMLERİ BUILDING GEODATABASE EĞİTİMİ

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Chapter 6 Mimari Tasarım. Lecture 1. Chapter 6 Architectural design

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Üst Düzey Programlama

Asp.Net Veritabanı İşlemleri

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Bilgisayarda Programlama. Temel Kavramlar

ESİS Projesi. Kaynaklar Bakanlığı

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Web Uygulama Güvenliği Kontrol Listesi 2010

Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi. eklenmesi. KalacakYer.com

Kaspersky Open Space Security: Release 2. İşletmeniz için birinci sınıf bir BT güvenliği çözümü

Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

JavaServer Faces (JSF) Sunucu Yazılım Teknolojileri 2008

ClientAceDA Bağlantısı. ClientAce DA bağlantısı, Visual Basic.NET veya C# programcılarının rahatlıkla. serverlarla bağlantı kurabilen

Servis olarak Altyapı

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Internet Programming II

İNTERNET PROGRAMLAMA II. Tanımlar

MOBIL UYGULAMA GELIŞTIRME

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

Transkript:

MODEL VIEW - CONTROLLER (MVC) TASARIM KALIBI İyi bir yazılım: Okunabilir, anlaşılabilir olmalı; dokümantasyonu iyi yapılmalı; esnek olmalı (yani modüler ve geliştirilebilir bir yapıda olmalı) ve tabii kullanılabilir olmalı. Tasarım Kalıpları iyi bir tasarımın yapılması, yazılım esnekliğinin ve okunabilirliliğinin arttırılması, sık karşılaşılan sorunlara çözüm sunması için deneyimlerin derlenmesiyle oluşturulmuşlardır. Tasarım kalıpları herhangi bir sorunun çözümü için uygulama yapısına göre geliştirilebilecek esnek yapılardır. Sık karşılaşılan problemlerin çözümü için bu genel metotları tasarlama fikri 1980 öncesine dayanır. O zamanlarda Smalltalk programlama dili nesne tabanlı bir yaklaşım içerisindedir. Bu yaklaşım analiz aşamasında çok büyük kolaylıklar getirmiştir. Tasarım kalıplarına gelirsek: 1988'lerde kullanıcı arayüzü problemine çözüm getirmek amacıyla Smalltalk programlama dili için tasarlanan framework bir çözüm oluşturmuştur. Burada kullanıcı arayüzü tasarlanırken genel bir şablon çözüm sunulmuştur. Bu frameworkün adı da birazdan detayları anlatılacak olan MVC(Model-View-Controller) dır. Uygulamalar, verilere erişim için gerekli kodların, işlem mantığını oluşturan kod kısımlarının ve kullanıcı arayüzlerinin bir birleşimidir. Bu birleşimden dolayı da yapılmak istenen en ufak bir değişiklikte birçok sorun ortaya çıkacaktır. Çünkü bu birbiri ile ilişkili bileşenlerde herhangi birinde bir değişiklik yapılmak istendiğinde her kısmın tekrar elden geçirilmesi gerekecektir. Bu bileşenler arasındaki fazla bağlılık sınıfların yeniden düzenlenmesini zor hatta imkansız hale getirir çünkü her biri birden çok sınıf ile bağlantılı bulunmaktadır. MVC bir uygulamayı az önce bahsedilen nedenden dolayı Model, View ve Controller olmak üzere bileşene bölme işlemidir. Modüler olarak uygulamanın bu şekilde bileşenlere bölünmesi uygulama geliştirmede çok önemlidir. Programcı ile tasarımcının işlerini birbirinden ayırmakta kolaylık, geliştirilen uygulama için de iş birliğini ve hızı sağlar. Her bileşenin kendine has görevleri ve iş sahası vardır. Model işlem mantığını yürüten bileşendir. Temel veri ve fonksiyonları içerir. Kendisine gelen hareketlerden veya çıkan gösterimlerden bağımsızdır. Modelin view ve controller bileşenlerinden ayrılması aynı modelin birden çok arayüzü olmasına olanak verir. Örneğin; kimlik denetleme (authentication) işlemleri, veritabanıyla sorgu işlemleri özetle bilgi işlem mantığı Model in görev sahasındadır. View kullanıcıya sunulan arayüz bileşenidir. Bileşenleriyle modelden aldığı bilgileri kulanıcıya sunar. Modelin çeşitli arayüzleri olabilir, ancak her arayüzün ayrı bir controller bileşeni vardır. Sunum bölümünü Swing, Windows, Web v.b. arayüzleri oluşturur. Örneğin; kullanıcıdan bilgi almak için kullanılan bir Form olabilir. Controller: Controller, Model ve View arasında çalışan bir arabirimdir. Kullanıcı girdilerini alır. Bunlar genellikle olaylardır. Örneğin, fare hareketleri, butonlara tıklanması yada klavye girişi gibi. Bu olaylar view ve model için servis isteklerine çevrilir. Kullanıcı sadece controller sayesinde sistem ile etkileşim halindedir. Controller

da view ile birlikte çalışarak kullanıcı arayüzünü oluşturur. View den yapılan her isteği yakalar ve Model den bilgi işlem mantığını çalıştırıp tekrar view de arayüz için gerekli olan parametreleri üretir ve view bileşenine geri iletir. View de bunu alır ve arayüzü üretip gösterir. Neden böyle bir bileşen ayrımına ihtiyaç duyulduğunu daha detaylı bir örnekle görelim: Mesela kurumsal uygulamalar farlı tipteki kullanıcılar için farklı tipteki arabirimlere ihtiyaç duyarlar. Örneğin bir internet mağazası uygulaması web müşterileri için bir HTML (HyperText Markup Language) ön yüzüne, wireless bağlanan müşteriler için WML (Wireless Markup Language) ye, yöneticiler için Java TM (JFC) / Swing e ve sağlayıcılar için de XML (EXtensible Markup Language) tabanlı web servisine gerek duyarlar. Tek tipteki istemcileri destekleyen uygulama geliştirirken sunumu ve kontrolü için data erişimini ve işlem mantığını arayüze özel mantıkla (interface-spesific logic) geliştirmek bazen yaralı olabilir. Fakat böyle bir yaklaşım birden çok istemci tipini desteklemesi gereken kurumsal bir uygulamaya tahsis edilmek istendiğinde yetersiz kalacaktır. Her biri her tipteki istemci arayüzünü destekleyecek farklı uygulamaların geliştirilmesi gerekir. Her uygulamada arayüze yönelik olmayan kodun (Non-interface-specific code) tekrar tekrar kopyalanması, uygulamanın test ve bakım aşamasında olduğu kadar gerçeklenmesi işlemini de zorlaştırır. Arayüze özel olan ve olmayan kodlar birbiriyle içiçe olduğu için hangi kısmın seçilip tekrarlanacağının belirlenmesi maliyetlidir. Bu kopyalama çabaları da kaçınılmaz bir şekilde hatalı olacaktır. Aynı temel fonksiyonu sağlaması beklenen bu tür uygulamalar farklı sistemler için geliştirilirler. Bu tasarımın temel kısımlarıysa: 1-Farklı görünümler (örneğin:html, WML, JFC/Swing, XML) içinde sunulsalarda aynı kurumsal datalara ulaşılması gerekliliği;

2-Farklı etkileşimler üzerinden aynı kurumsal dataların güncelleme yapılması ihtiyacı: Bir HTML sayfası yada WML kartı üzerindeki link seçimleri, JFC/Swing GUI üzerindeki butonlara tıklanması işlemi ve XML de yazılan SOAP (Simple Object Access Protocol) mesajları. 3-Bu farklı tipteki görünümler ve etkileşimler, kurumsal uygulamanın çekirdek fonksiyonlarını gerçekleyen bileşenleri etkilememeli. Çözüm ise: MVC mimarisini yazılım geliştirilecek platforma ki bu yukarıdaki örnek uygulama için J2EE (Java 2 Enterprise Edition) platformuna uygulayarak temel iş model fonksiyonunu bu fonksiyonu kullanan sunum ve kontrol mantığından ayırmak. Modelview-controller şeklindeki benzer ayırma işlemleri, farklı görünümlerin aynı kurumsal data modelini kullanmalarını sağlar, ayrıca bu kurumsal dataların farklı istemciler tarafından gerçekleme, test ve bakım işlemlerini kolaylaştırır. Bu şekil ise model-view-controller kalıbının diyagrama dökülmüş halidir: Durum Sorgusu MODEL -Uygulamanın durumunu belirler -Durum sorgularına cevap verir -Uygulamanın fonksiyonlarını ortaya koyar -View u değişiklerden haberdar eder Durum değişimi Uyarıyı değiştir VIEW -Modeli temsil eder -Modellerden güncellemeleri alır -Kullanıcı hareketlerini controller a gönderir -Controller ın görünüm seçmesine olanak tanır Görünüm seçimi Kullanıcı hareketleri CONTROLLER -Uygulama hareketlerini tanımlar -Kullanıcı hareketlerini model güncellemesine çevirir -Cevap olarak bir view seçer -Tüm bunları her fonksiyon için yapar Model View Controller Diyagramı

MVC tasarım kalıbı kullanılmayan uygulamalarda(ki buna Model1 de denir): 1- Görünüm için kullanılan kodlarla, iş mantığının yürütüldüğü kodlar bir aradadır. Bu da uygulama esnekliğini ve modülerliğini ortadan kaldırır. 2- Arayüz tasarımcısı gereksiz kodlarla uğraşmak zorunda kalır. 3- Kod tekrarı vardır. MVC tasarım kalbı kullanılan uygulamalarda ise(ki buna Model2 de denir): 1- İş mantığı arayüz kodlarından ayrılmıştır. Buda uygulamaya esneklik kazandırmıştır. 2- Model 2, Arayüz tasarımcısının iş mantığı kodlarıyla uğraşmasını ortadan kaldırır. Tasarımcı arayüz tasarımına yoğunlaşır. 3- Kod tekrarı en aza indirilmiştir. FRAMEWORK KULLANIMI Model2 web uygulamaları geliştirmek için iyi bir tasarım kalıbıdır. Uygulama geliştiriciler deneyim kazandıkça uygulamaları içerisinde tekrar tekrar kullanabilecekleri genel kısımları belirlemeye başlarlar. Bu genel kısımlarında birçok yerde kullanılacağını zamanla görürler. Örneğin Model2 uygulamalarında oluşturulan controller servlet ler birçok benzer özelliğe sahiptir. Bu genel bölümlerde tekrar kullanılabilirliği artırır. Tasarım kalıpları da bu tür tekrar kullanılabilir kalıpların kullanımını kolaylaştırır. Böyle tekrar kullanılabilir kalıplardan oluşmuş bir koleksiyonunuz varsa, framework için bir taban oluşturulmuştur demektir. Framework, birbiriyle ilişkili ve birbirini destekleyen sınıf ve elemanların bir kümesidir, önceden hazırlanmış bu kısımlarla da uygulama geliştirme daha kolay hale getirilir. Esasında framework ler uygulama geliştirmek için altyapı sağlar, uygulamalar için üzerinde detaylarını belirleyeceğiniz bir iskelet oluştururlar. Uygulamalarımızı geliştirirken birçok web uygulama framework ü kullanabiliriz. Bunlara bir kaç örnek verecek olursak: Struts : http://jakarta.apache.org/struts adresinden ulaşılabilir. Genellikle model2 (MVC) tasarım modeline göre geliştirilecek uygulamalar için kullanılır. Açık kaynaklı bir framework tür. Velocity : http://jakarta.apache.org/velocity adresinden temin edilebilir.bir java tabanlı kalıp oluşturma aracıdır. Java kodu içerisinde tanımlanan nesnelere referans vermek için kendine has basit kalıplardan oluşmuş bir dil kullanır.

Tapestry : http://jakarta.apache.org/tapestry adresinden temn edilebilir. JavaServer Pages (JSP) ye alternatif olarak oluşturulmuştur. JSP (JavaServer Pages) deki kod üretimi ve script işlemlerinin yerini bileşen nesne modeline bırakmasını sağlamıştır. WebWork : http://sourceforge.net/projects/opensymphony adresinden temin edilebilir. Açık kaynaklı prosesler kullanılarak hazırlanmıştır, anlaşılması ve bakımı kolay olan ve kısa bir zaman içerinde hazırlanabilen kompleks web siteleri oluşturmayı sağlayan bir gurup araç ve framework sağlamak amacıyla geliştirilmiştir. Turbine : http://jakarta.apache.org/turbine adresinden temin edilebilir. E-ticaret siteleri gibi gelişmiş web uygulamaları geliştirmek için hazırlanmış büyük, açık kaynaklı ve servis tabanlı bir framework tür. STRUTS FRAMEWORK Struts model2 uygulamaları geliştirilmek için açık kaynaklı bir framework tür. Apache nin Jakarta projesinin bir parçasıdır. Struts taki fonksiyonelliğin temel alanları: Controller servlet, uygulama geliştirici tarafından hazırlanan uygun action sınıfına istekte bulunur. JSP etiket (tag) kütüphaneleri ve bununla ilişkili controller servlet teki destek, uygulama geliştiricilere interaktif form-tabanlı uygulama geliştirirken yardımcı olur. XML parse işlemini destekleyen yardım sınıfları, Java reflection API tabanlı JavaBeans in artması gibi otomatik özellikler, mesajlar ve uyarıların (promts) herkes tarafından kullanılır hale gelmesi. Struts ta bilgi akışı Model2 uygulamasıyla benzerdir. Bütün istekler framework ün bir parçası olan controller servlet tarafından yönlendirilir. Bu controller uygulaması veritabanından bağlantı veya otomatik istek yönlendirme gibi birçok alanda çalışır. Uygulamanın çalışması için uygulama geliştirici tarafından yazılmış olan action sınıfları controller tarafından yaratılır. Bu action sınıfı Struts Action sınıfından türetilerek oluşturulur. Controller ın Action ın altsınıflarını yaratacak şekilde tasarlanması tekrar kullanılabilir framework bölümüne iyi bir örnektir.

Controller servlet, sınıflar (action ları sarmalamak için) ve altyapı (web uygulamaları içinde bilgi iletimi için) yı içeren bir framework Bu action örnekleri etki alanına özel(domain-spesific) aktiviteler çalıştıran model beans i oluşturur. Bu akivitelere örnek olarak: iş mantığını yürütme, veritabanına bağlanma ve diğer bean metodlarını çağırma. Model beans Model2 tasarım kalıbında olduğu gibi asıl iş mantığını içerisinde bulundurur. Bu action örnekleri model beans i kullanarak çalışır, o da controller sayesinde modeli göndererek view bileşeninin oluşmasını sağlar. View, model beans ten aldıklarının görsel olan kısımlarını kullanıcıya sunar. Göründüğü üzer bu da Model2 deki bilgi akışının aynısıdır. Bu bilgi akışının sağlanmasında da struts iyi bir altyapı oluşturmaktadır. Struts uygulama geliştirmenin diğer detaylarınıda gerçkleştirir. View un gerçeklenebilmek için framework birçok temel JSP etiketlerinide içerir. Ayrıca da database bağlantı seçimi esnek kayanak gösterimi gibi internasyonel getirilme işlemlerine yardım için class lar sağlar. Struts Model2 yi kullanarak geliştirilecek olan web uygulamlarını kolaylaştırmak için oluşturulmuş hafif bi framework tür. Model2 tasarım kalıbını destekleyecek şekilde Struts kullanılarak geliştirilen bir uygulama kullanılmadan geliştirilene göre %35-40 oranında harcanan enerjiyi kullanımını azaltacaktır. Struts ın güç yanlarından biri ise Model2 ye uygun uygulama geliştirirken dışarıya servis vermemesidir kendi iç bağları daha sıkıdır. Diğer framework ler ise bu konular açısından daha genişletilebilirlerdir, örneğin Turbine...

COCOON Cocoon sadece bir framework tipi değildir. Diğer web framework lerinin sağladığı kolaylıkların yanında publishing framework özelliğine sahiptir. Cocoon istenildiği takdirde otomatik olarak döküman dönüştürebilmektedir. Web sitelerini benzersiz bir esneklikle oluşturmak için XML teknolojisinin gücünü de kullanarak yeni bir uygulama servisi sunar. MVC tasarım kalıbının diğer bir boyutunu kullanarak view işlemlerini otomatik olarak framework üzerinde yapar.( Extensible Stylesheet Transformation Language ) XSLT gibi XML teknolojilerinden yararlanan kompleks bir framework tür. Çünkü çok fazla konfigürasyon ve gelişim sorunları vardır. Cocoon un bu yayınlama yani dökümantasyon ve web uygulama framework bölümleri çekirdek seviyesinde birbiriyle ilgilidir fakat uygulama kısımda görülmezler. Bu da şunu gösterirki web framework ü publishing framework ün bir görünümüdür. Mimarinin amacı da bu iki framework ü farklı elemanlar olarak göstermektir. The publishing framework Publishing framework genel olarak istemcilere özel dokümantasyonun otomatik olarak oluşturulmasını sağlayan bir araçtır. Aşağıdaki şekilde iki ayrı istemci cihaz web uygulaması çalıştıran publishing framework ten istekte bulunuyorlar. Browser dokümanı ister. Publishing framework de istekte bulunan kullanıcıyı ve istenen kaynakları fark eder (ki bu istekte HTTP başlık bölümünün bilgisidir). Kaynakların gönderilmesine başlamadan önce kaynaklara XSLT dönüşümü uygular ve browser a uygun HTML dökümanı hazırlar. Cep telefonu gibi bir kablosuz cihaz aynı publishing framework ten aynı kaynak için istekte bulunur. Ancak kullanıcının farklı olmasından dolayı farklı XSLT dönüşümü uygulanır ve cep telefonu WML ( Wireless Markup Language ) dokümanı alır. Publisheing Framework, isteği yapan cihaza bağlı olarak otomatik dönüşümler yapar

Publishing framewok ün faydaları iki gurupta incelenir. İlk olarak: yazılım geliştiricileri farklı donanımlar için farklı tipte içerik oluşturma derdinden kurtarır. Yazılım geliştiriciler XML dokümanları oluştururlar. Stylesheet geliştiriciler de uygulamanın desteklemesi gereken farklı tipteki cihazlar için XSLT stylesheet oluştururlar. Bu adım içeriğin oluşturulması adımından tamamıyla farklıdır. Publishing framework kullanmanın diğer faydası ise yazılıma getirdiği esnekliktir. Yeni bir cihaz ortaya çıktığında içeriği oluşturan kişiler uygulamada herhangi bir değişiklik yapma gereği duymazlar. Bu yeni cihazı desteklemek için gereken tek şey yeni bir stylesheet tir. Bu yaklaşımla ilgili iki sorun vardır: İlki, dönüştürme işleminin servlet motorunda aşırı derecede kaynak tüketilmesine neden olmasıdır. XML in ayrıştırılması ve dönüşüm işlemi çok fazla işlemci gücü gerektirir. Diğer sorun da XSLT stylesheet lerinin karmaşıklığıdır. Yazılım geliştiriciler için de öğrenilmesi zor bir dildir. Şuanda bu stylesheet oluşturma işlemini kolaylaştıran araçlar yeterli değildir. Bu yüzden de yazılım geliştiriciler styleshhet leri elleriyle yazarlar. Bunu yapan geliştiricilerin de az bulunmasından dolayı publishing framework ün pratikte yayılması sınırlanmıştır. Araçlarla desteklenmesi arttıkça işlemlerin gerçeklenmesi kolaylaşacaktır. The web framework Bir web framework olarak Cocoon aynı zamanda bir publishing framework tür. Cocoon u her duruma göre içeriğe farklı stylesheetler uygulayarak HTML dokümanları oluşturacak şekilde yapılandırabiliriz. Eğer Cocoon sadece bir web framework olsaydı zamanımızın çoğunu uygulamamızı her cihaza uygun hale getirmeye harcardık. Buna ek olarak her stylesheet i kendimiz yazmak zorunda kalacaktık. Bu nedenle her içeriğe uygun bir stylesheet gurubunun oluşturulması ve farklı cihazlar için birinin uygulanması daha kolay olacaktır. İşte Cocoon bu görevi yerine getirir. Öncelikle hazır olan sınıf ve stylesheetleri kullanarak MVC kalıbına uygun web uygulamaları geliştiririz ve ardından da bunları farklı durumlar için özelleştiririz. Aşağıda Cocoon un web framework olarak yapısı görülmektedir:

Bir cocoon web uygulamasında kullanıcı Cocoon servlet e bir istekte bulunur. Bunun ardından servlet sitemap aracılığıyla gelen isteğin web uygulamasının içeriğine ait olduğunu anlar ve uygun işlemi gerçekleştirir. Bu yapıda sitemap, Struts ayar (konfigürasyon) dokumanı gibi çalışır. Bu action model bean lere referans eder ve işlemleri gerçekleştirir.sonuç bilgisi standart bir web kolleksiyonu formunda paketlenerek Cocoon servlet ine tekrar gönderilir. Servlet de sitemap ten uygun arayüz ve dönüşüm tipini seçer. Seçilen dönüşüm uygulandıktaktan sonra cevap kullanıcıya geri yollanır. Cocoon Extensible Server Pages (XSP) konseptini oluşturmuştur. Bu sayfalar JSP ye benzer fakat daha katı bir XML sentaksı ve bazı farklı yapılandırıcılar kullanır. RUBY Ruby 'hızlı ve kolay', nesneye yönelik yazılım geliştirmeye yarayan ve yorumlanan bir betik (script) dilidir. Ruby nin sentaksı Ada ve Perl dillerinden etkilenmiştir. Bu nedenden ötürü Perl dilini bilen kişiler Ruby nin sentaksına kolaylıkla alışabilmektedirler. Bu dilin yaratıcısı Yukihiro "Matz" Matsumoto dur.1995 yılında ilk sürümü yayınlanan Ruby nin şu anki sürümü 1.8.4 tür ve şu anda 1.9 sürümünün geliştirilmesi üzerine çalışılmaktadır. Ruby nin doğrudan işletim sistemi çağrıları yapabilmesi, güçlü dizi işlemleri ve ifadelerinin düzenli olması, geliştirme sırasında anında geri besleme yapabilmesi onu güçlü kılan özellikleridir. Ruby aynı zamanda kolay ve hızlı bir dildir. Değişken bildirimleri gerektirmemesi, değişken türlerinin olmayışı, sözdiziminin basit olması onu hızlı ve kolay kullanılabilir bir dil yapmıştır. Ruby tamamiyle nesneye dayalı bir dildir. Ruby de her şey nesnedir. Sınıflar, kalıtım, yöntemler, yineleyiciler ve sonlandırıcılar bulunmaktadır. Fakat Ruby çoklu kalıtıma (multiple inheritance) izin vermemektedir. Ruby nin özellikleri: Nesneye dayalıdır, Değişkenler dört seviyede tanımlanabilir: global, sınıf, instance ve yerel, İstisna yakalama, Perl gibi dil seviyesinde düzenli ifadeler bulundurur, Operatör aşırı yükleme vardır (operator overloading), Otomatik çöp toplama vardır ( garbage collecting ), Taşınabilir, Tüm platformlarda multi-threading e izin verir,

Çoğu platformda DLL (Dynamic Link Library) ve ortak kütüphanelerin dinamik olarak çağrılmasına izin verir, Standart olarak büyük bir kütüphaneye sahiptir. Örnek Ruby Uygulaması: # Sayının faktöriyelini bulan yazılım def fact(n) if n == 0 1 else n * fact(n-1) end end print fact(argv[0].to_i), "\n Ruby nin desteklediği işletim sistemleri: UNIX tiplerinin çoğu,dos, Microsoft WINDOWS 95/98/NT/2000/XP/2003, OS X, BeOS,AMIGA,Acorn Risc OS, OS/2,Syllable. Mac Ayrıca Ruby nin RoR (Ruby on Rails ) adlı web uygulama framework ü de vardır. Bu framework MVC kalıbına sağdık kalınarak hazırlanmıştır. Daha az kod ve ayarlamayla gerçek uygulamalar hazırlanmasına izin veren bu framework Ruby nin desteklediği metaprogramming özelliğinden faydalanmaktadır. Bu da rahat okunabilir bir sentaksının olmasını sağlamıştır. Rails RubyGems aracılığıyla yayınlanmaktadır. RubyGems, Ruby nin resmi paketleme ve kütüphaneleri için dağıtım kanalıdır. MVC Açısından RUBY ON RAILS Veritabanı içeren MVC kalıbındaki web uygulamalarında Model kısmında ilişkisel veritabanındaki tabloları temsil eden sınıflar yer alır. RoR da Model sınıfları ActiveRecord tarafından değerlendirilmektedir. Bundan ötürü programcının sadece ActiveRecord un alt sınıflarını oluşturması yeterlidir. Bundan sonra program otomatik olarak veritabanındaki hangi tabloları kullanacağını ve bunlarda hangi kolonların yer aldığını bulur. İşin View kısmı ise RoR tarafından farklı şekillerde halledilebilir. Bunun için gömülü Ruby içeren RHTML dosyaları kullanılabilir. Bu dosyalar HTML ve Ruby kodlarının birlikte kullanılmasıyla oluşturulmuş ve sentaksı JSP ye benzeyen dosyalardır. Web tabalı MVC uygulamalarda Controller methodları kullanıcı tarafından web browser aracılığıyla çalıştırılırlar. Ruby on Rails da controller işlemleri Action Pack tarafından değerlendirilmektedir. Bu işlemler için Applicationcontroller sınıfının alt sınıfları tanımlanır ve içinde web uygulaması tarafından çalıştırılacak methodlar oluşturulur.

KAYNAKLAR Art Of Web Development,Greenwich,Neal Ford,Manning Publications,2004 Essential ActionScript 2.0,Colin Moock,O REILLY Model View Controller (MVC) and Casabac,Casabac Technologies Jacarta Struts Cookbook, By Bill Siggelkow, O'Reilly, February 2005 Jakarat Struts For Dummies, Mike Robinson and Ellen Finkelstein,Wiley Publishing, Indianapolis,2004 Jacarta Struts Live, Richard Hightower, Colorado,2004 Struts Tutorial, Stephan Wiesner,2002 Struts in Action Building web applications with the leading Java framework, Ted Husted, Cedric Dumoulin, George Franciscus, David Winterfeldt,Manning,Greenwich,2003 Model-View-Controller (MVC) Architecture,John Deacon Agile Web Development, Dave Thomas David Heinemeier Hansson, The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas Jakarat Pitfalls,Bill Dudny,Wwilley Publishing,2003 Web Tabanlı J2EE Uygulamalarında Struts Framework & Hibernate Desteği,Çanakkale Üniversitesi Dokümaları ModelViewController and Object Teams: A Perfect Match of Paradigms,Technical University Berlin http://rd13doc.cern.ch/atlas/notes/004/note004-7.html http://ootips.org/mvc-pattern.html http://www.vico.org/pages/patronsdisseny/pattern%20model%20view%20contr oller/ http://en.wikipedia.org/wiki/model-view-controller http://c2.com/cgi/wiki?modelviewcontrollerasanaggregatedesignpattern http://builder.com.com/5100-6386-1049862.html