controller (mvc) tasarım kalıbı

Transkript

controller (mvc) tasarım kalıbı
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 JavaTM (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