Web Uygulama Anaçatıları

  • 1,346 views
Uploaded on

Web uygulama anaçatıları üzerine sunucu yazılım teknolojileri için hazırladığım sunum.

Web uygulama anaçatıları üzerine sunucu yazılım teknolojileri için hazırladığım sunum.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,346
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
22
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Tahir Emre KALAYCI May 5, 2009
  • 2. Web Uygulama Ana¸atıları c G¨ndem u 1 Web Uygulama Ana¸atıları c Nedir? Spring, Ruby On Rails, ZK, CakePHP, Flex, GWT, Dojo 2 ˙cerik Y¨netim Sistemleri I¸ o Nedir? Drupal, Joomla!, Plone, Moodle, WordPress 3 Django
  • 3. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Nedir? Web Uygulama Ana¸atısı Nedir? c Web uygulamaları geli¸tirmek i¸in kullanılan yazılım s c ¸er¸evesidir c c Dinamik web siteleri, web servisleri ve web uygulamaları geli¸tirmek i¸in kullanılır s c Web uygulaması geli¸tirme s¨recini kolayla¸tırmak ve s u s geli¸tiricilere ara¸lar sunmak amacına sahiptir s c ¨ gin ¸o˘u veritabanı eri¸imini, ¸ablonlama deste˘i ve Orne˘ c g s s g oturum y¨netim deste˘i sunarlar. o g Temel olarak kodun tekrar kullanımı (“code reuse”) prati˘ini g desteklerler
  • 4. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Nedir? Ana¸atı Mimarileri c Model View Controller (MVC) tasarım deseni Push-based: Co˘u MVC ¸er¸evesi “push-based“ y¨ntemi ¸ g c c o kullanır. Bunlar i¸lem yapmak i¸in eylemleri kullanır, daha s c sonra veriyi g¨r¨n¨m katmanına ”iterler”. (Struts, Django, ou u Ruby On Rails, Spring MVC) Pull-based: Bile¸en temelli adı da alırlar. Bu ¸er¸eveler s c c g¨r¨n¨m katmanıyla ba¸larlar, bu katman verileri gerektik¸e ou u s c bir ¸ok denetleyiciden “¸ekerler”. Bu tip mimaride bir c c g¨r¨n¨m¨n birden fazla denetleyicisi olabilir. (Struts2, ou u u Tapestry, JBoss Seam, Wicket) ˙cerik Y¨netim Sistemleri: Sunumun ilerisinde anlataca˘ım I¸ o g i¸erik y¨netim sistemleri mod¨ler yapıyı desteklemeleri ve c o u geni¸letilebilmeleri nedeniyle farklı bir mimaride de olsa web s uygulama ¸er¸evesi haline gelmi¸lerdir. c c s
  • 5. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Nedir? ¨ Ozellikler G¨venlik: Bazı ¸er¸eveler kimlik denetleme, do˘rulama ve u c c g yetkilendirme i¸in destek sunarlar. Sayfalara eri¸imi rol temelli c s bir ¸ekilde kısıtlarlar. s Veritabanı eri¸imi ve e¸leme: Co˘u ¸er¸eve veritabanına s s ¸ g c c eri¸mek i¸in veritabanı ba˘ımsız uygulama geli¸tirme aray¨z¨ s c g s u u (API) sunar. Geli¸tiricilerin veritabanı de˘i¸tirdi˘inde kod s gs g de˘i¸tirmeden, daha y¨ksek soyutlama ile ¸alı¸masına olanak gs u c s sa˘larlar. g URL e¸leme: Kullanıcı dostu URL adresi deste˘i sunarlar. s g Web ¸ablon sistemi: Dinamik web sayfaları genellikle bir kısmı s statik web sayfalarından olu¸an yapılar i¸erir (sol tarafta s c de˘i¸meyen men¨ler gibi), ¸ablonlama sistemi yardımıyla bu gs u s ¸ekilde t¨m sayfalarda ortak olan alanların tanımlanması s u sa˘lanır. g
  • 6. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Nedir? ¨ Ozellikler ¨ Onbellekleme: Bant geni¸li˘ini daha verimli kullanmak i¸in s g c web belgelerinin ¨nbelleklenmesi deste˘i sunarlar. o g Ajax deste˘i: AJAX mimarisini desteklerler g Otomatik yapılandırma: Bazı ¸er¸eveler uygulama c c yapılandırması i¸lemini otomatikle¸tirerek yapılması gereken i¸i s s s azaltır. Web servisleri deste˘i g A¸ık standart mimarisi: Genel kabul g¨rm¨¸ a¸ık standart ve c o us c teknolojileri desteklerler
  • 7. Web Uygulama Ana¸atıları c Web Uygulama Ana¸atıları c Spring, Ruby On Rails, ZK, CakePHP, Flex, GWT, Dojo Bug¨ne kadar g¨rd¨klerimiz : Struts, JavaServer Faces u o u Spring: A¸ık kaynak uygulama ¸er¸evesi, Java ve .NET c c c platformlarını destekliyor. ZK Framework: Javascript bilgisi gerektirmeyen AJAX ana¸atısı, RIA, A¸ık kaynak, Standartlara dayanıyor, c c Geni¸letilebilir s CakePHP: A¸ık kaynak hızlı uygulama geli¸tirme PHP c s ana¸atısı. MVC’ye dayanıyor. c Flex: Adobe tarafından geli¸tirilen ve Actionscript ve Flash s tabanlı bir RIA ana¸atısı. c GWT: Google tarafından geli¸tirilen AJAX web uygulama s geli¸tirme ara¸ kutusu s c Dojo: Javascript tabanlı, AJAX ve DHTML ara¸ kutusu c
  • 8. Web Uygulama Ana¸atıları c ˙cerik Y¨netim Sistemleri I¸ o Nedir? ˙cerik Y¨netim Sistemi Nedir? I¸ o ˙cerik y¨netim sistemi adından anla¸ılaca˘ı gibi i¸erik yaratma I¸ o s g c ve d¨zenlemeyi kolayla¸tıran sistemlerdir. u s ˙cerik? (haber makaleleri, g¨nl¨k yazıları, kullanım klavuzları, I¸ u u rehberler, teknik belgeler, satı¸ rehberleri, pazarlama s bro¸urleri,. bilgisayar dosyaları, g¨r¨nt¨, ses dosyaları, s¨ ou u elektronik belgeler,....) Tamamen i¸eriklere dayalı web sitelerinin (haber siteleri, c g¨nl¨k siteleri, ...) olu¸turulmasında kullanılır. u u s Katılımcılı˘ı destekler, kullanıcılar ve rolleri tanımlanabilir, g i¸birli˘ine dayanan uretimleri ve ilgili i¸ akı¸ını destekler s g ¨ s s Otomatik ¸ablonlar, kolay d¨zenlenebilen i¸erik, ¨l¸eklenebilir s u c oc ¨zellik k¨meleri, web standartları g¨ncelleme deste˘i, i¸ akı¸ı o u u g s s y¨netimi, kullanıcı ve rol y¨netimi, belge y¨netimi, i¸erik o o o c sanalla¸tırma s
  • 9. Web Uygulama Ana¸atıları c ˙cerik Y¨netim Sistemleri I¸ o Drupal, Joomla!, Plone, Moodle, WordPress Drupal, Joomla!, Plone, Moodle, WordPress Bizi ¸u an ilgilendiren Web i¸erik y¨netim sistemleri: Geni¸, s c o s dinamik web materyalini y¨netmek ve kontrol etmek i¸in o c kullanılır. Drupal: PHP, A¸ık kaynak, mod¨ler yapı, ¨zelle¸tirilebilir, t¨m c u o s u i¸eri˘i arama, tema sistemi, rol tabanlı izin sistemi, kayıt ve c g raporlama, ¨nbellekleme, optimizasyon o Joomla!: PHP, A¸ık kaynak, eklentiler, bile¸enler, c s Plone: Zope web sunucusu ust¨nde ¸alı¸ır (Python), GPL ¨ u c s lisansı, Moodle: PHP, A¸ık kaynak uzaktan e˘itim sistemi, c g WordPress: PHP, A¸ık kaynak yayım (publishing) sistemi c (g¨nl¨k, kitap, ...) u u
  • 10. Web Uygulama Ana¸atıları c Django Django Python programlama diliyle hazırlanmı¸tır s Yeniden kullanılabilirlik, mod¨lerlik, hızlı uygulama geli¸tirme, u s Kendini Tekrar Etme (“Don’t Repeat Yourself”) kavramlarını sonuna kadar kullanır Ek olarak y¨netim ekranı sunar (CRUD ¨zelli˘i olan) o o g Veritabanı g¨d¨ml¨ web sitelerinin yaratılmasında kullanılır u u u MVC tasarım desenine yakın bir y¨ntemi kullanır o (Model-Template-View)
  • 11. Web Uygulama Ana¸atıları c Django ¨ Ozellikler Geli¸tirme ve sınama i¸in hafif web sunucusu s c HTML form verileri ve veritabanı verilerine d¨n¨¸um i¸in form o us¨ c serile¸tirme ve do˘rulama s g ¨ Onbellekleme Uluslararasıla¸tırma s XML, JSON deste˘i g Sablon sistemi ¸ Slogan: “The Web Framework for perfectionists with deadlines”
  • 12. Web Uygulama Ana¸atıları c Django ˙cerdi˘i Uygulamalar I¸ g Geni¸letilebilir kimlik denetleme s Dinamik y¨netim aray¨z¨ o u u RSS ve Atom besleme ara¸ları c Esnek yorum sistemi Tek Django kurulumunda birden fazla site barındırma deste˘i g Google Sitemaps uretim ara¸ları ¨ c Sablon k¨t¨phaneleri ¸ uu CBS (GIS) uygulamaları yaratmak i¸in destek c
  • 13. Web Uygulama Ana¸atıları c Django MVT? Model: Veritabanı soyutlaması i¸in kullanılan veri sınıflarını c barındıran katman (Django ORM) G¨r¨n¨m (View): MVC’deki denetleyicinin g¨revlerini yapan ou u o kısım, kullanıcının ne g¨rece˘ini ayarlar. Fonksiyonlar. o g Sablon (Template): Kullanıcıların g¨rmesi gerekeni ayarlar ¸ o (Django Template Engine)
  • 14. Web Uygulama Ana¸atıları c Django Python? Nesne y¨nelimli o Y¨ksek seviyeli dinamik veri tipleri u Mod¨ler ve etkile¸imli u s Girintilere dayalı, sade s¨zdizimi o Yorumlayıcı (Interpreter) kullanıyor ˙ Istisna i¸leme, betik olarak kullanılabilme, ¸ok sayıda s c k¨t¨phane, ¨˘renim kolaylı˘ı, ¨zg¨r yazılım, yo˘un kullanım uu og g o u g (Django, Zope, GIMP, Inkscape, Scribus, Paint Shop Pro, Ubuntu, Debian, Pardus, Google, NASA, CERN, YouTube, Industrial Light & Magic,....)
  • 15. Web Uygulama Ana¸atıları c Django Terimler Proje: Django’nun bir ¨rne˘i, genellikle tek bir web sitesiyle o g ili¸kilendirilebilir (blog sitesi) s Uygulama: Django i¸erisinde yazılmı¸ ve web sitesinin bir c s i¸levselli˘ini ger¸ekle¸tirilmi¸ kod k¨mesi (Bir blog sitesinde s g c s s u blog ve yorumlar iki ayrı uygulama olarak ele alınabilir) Uygulamalar tekrar kullanılabilir.
  • 16. Web Uygulama Ana¸atıları c Django Model ¨rne˘i o g
  • 17. Web Uygulama Ana¸atıları c Django G¨r¨n¨m (View) ¨rne˘i ou u o g
  • 18. Web Uygulama Ana¸atıları c Django Sablon ¨rne˘i ¸ o g
  • 19. Web Uygulama Ana¸atıları c Django Sonu¸ yerine: Web Uygulama Ana¸atılarının Avantajları, c c Dezavantajları Avantajlar Tekrarları ¨nler: Programcı zamanı olarak daha verimlidir o Otomatik olarak uretilmi¸ kod daha g¨venilir ve yapısal olarak ¨ s u daha tekbi¸imli c DRY yakla¸ımı destekleniyor s Dezavantajlar Otomatik uretilmi¸ kodun anla¸ılması zor olabilir, de˘i¸tirmesi ¨ s s gs zor olabilir Sistemler genellikle b¨y¨k ve yava¸ olabilir. u u s Bkz: “Why I hate frameworks?” (http://discuss.joelonsoftware.com/default.asp?joel.3.219431.121)
  • 20. Web Uygulama Ana¸atıları c Django Kaynaklar Tony C Shan; Winnie W Hua, ”Taxonomy of Java Web Application Frameworks,” e-Business Engineering, 2006. ICEBE ’06. IEEE International Conference on , vol., no., pp.378-385, Oct. 2006 Wikipedia “Web application framework” ba¸lı˘ı s g Wikipedia “Comparison of web application frameworks“ ba¸lı˘ı s g Wikipedia ”Web content management system“ ba¸lı˘ı s g http://www.springsource.org http://www.rubyonrails.org http://www.zkoss.org/product/zk.dsp http://cakephp.org/ http://www.adobe.com/products/flex/ http://www.drupal.org http://www.drupaldersleri.org http://www.joomla.org/
  • 21. Web Uygulama Ana¸atıları c Django Kaynaklar http://plone.org/ http://moodle.org/ http://wordpress.org/ http://www.djangoproject.com/ http://e-bergi.com/2008/Ocak/Django Wikipedia ”Python (programlama dili)“ ba¸lı˘ı s g http://www.belgeler.org/uygulamalar/python-tutorial.html http://docs.djangoproject.com/en/dev/