Struts1 ile Struts2 Farkları


Struts yeni versiyonu Struts2 ile önceki versiyonu olan Struts1'in farklılıklarına değinmeye çalıştım.


ÖzellikStruts1Struts2
Action Sınıfları Struts1, Action sınıfını Ana sınıftan kalıtsal olarak yaratır. Struts1'deki problem, “Arayüzler” (İnterface) kullanmak yerine, ana sınıflar kullanmasınıdır. Struts 2'de Action sınıfı, Action arayüzlerini uygular. Bunun yanında çoğunlukla kullanılan arayüzleri ActionSupport Sınıfında uygulatır.
Action sınıfı için herhangi bir arayüz uygulamasına gerek yoktur. Basit bir POJO sınıfı da Action, execute metodu olmak şartı ile, olarak kullanılabilir.
Threading Modeli Struts1 Action sınıfları Tekil(Singleton) sınıflardır. Bu yüzden, Thread-safe olmak dumundadırlar. Çünkü, sınıfın tek bir yaratımı sınıfa ulaşan bütün talepleri yönetir.

Tekil yaratım stratejisi, Struts1 i sınırlandıran bir özellik. Kod yazımı sırasında, sınıfı Thread-safe bırakabilmek için ekstra dikkat gerektiriyor.
Struts 2'nin Thread-Safe olma gibi bir problemi yoktur. Her bir istemde, Action Sınıfları baştan yaratılır.
Servlet Sunucusu her bir talep için bir çok obje yaratır. Bu yaratılan objeler bir performans problemi yaratmaz.
Servlet Bağımlılıkları Action sınıfları Servlet APIS'sine bağlıdırlar. Çünkü Her bir action Sınıfı metoduna HttpServletRequest ve HttpServletResponse objesi parametre olarak aktarılır. Servlet Sunucusu, Struts 2 Action Sınıfına ve Servlet sınıflarını ay kefeye koyup ikisine de aynı davranışı sergilemez.



Servlet kontekst'leri Struts2 Action Sınıflarında basit Java Map'leri olarak yer bulurlar. Böylece, Servlet Response ve Request objeleri hala ulaşılabilir durumda olurlar. Diğer yapısal sınıfların böyle bir ulaşım hakları mevcut değildir.
Test Edilebilirlik Action sınıfları Servlet objelerine bağımlı olduğu için, Struts1 uygulamalarının test edilme aşamasında büyük problemleri vardır.



Struts1 TestCase Objesi bu problemi Mock objeleri ile çözer
Struts2 Action Sınıflarını test edebilmek için onları yaratmanız, özelliklerini yüklemeniz ve metodları çalışıtmanız yeterlidir.



Bağımlılık enejksiyonu mekanizması test edilebilirliği daha da kolaylaştırır.
Girdi Verilerini Toplamak Struts1 istemciden gelen girdileri ActionForm Objesi aracılığı alır. Action sınıfları gibi ActionForm sınıfı da bi ana sınıfı kalıtsal olarak alır. Diğer JavaBean objeleri ActionForm olarak kullanılamaz. Bu durum, geliştiricilerin girdi değerlerini almak için daha fazla sınıf yaratmalarına sebep olur. DynaBean ActionForm yerine kullanılabilecek iyi bir alternatiftir. Struts 2 Action'ı, yerel değişkenlerini girdi değeri olarak kullanır. Bu durum gereksiz ikinci bir sınıf yaratımını engeller.



Bu girdi değerleri, farklı girdi türlerinde olabilir.



Geliştiriciler Action sınıfı yerel değişkenlerine Web Sayfasından Struts Tagleri ile ulaşabilirler.
Struts 2, ActionForm sistemini ve POJO Form objelerini de desteklemektedir.
Betik Dili Struts1 JSTL ve JSTL-EL ile entegredir.
EL basit düzeyde obje graf gezimini destekler. Ama yığınlarda ve indeksli değişkenlerde zayıftır.
Struts 2, JSTL'yi destekler ama ondan daha güçlü olan OGNL'yi de destekler.
Değerleri görünüş'e(View) bağlama Struts1 objeleri standart JSP mekniazması ile Sayfa içeriğine bağlar. Struts 2, değişken değerlerini Tag'lere bağlarken View aşamasına geçmeden ValueStack mekanizmasını kullanarak değerleri tag'lere bağlar. Bu durum, View'leri tekrar kullanılabilir duruma getirir.
Tür Dönüşümü Struts1 ActionForm değişkenlerinin neredeyse tamamı String türündedir. Tür Dönüşümü için Commons-Beanutils kullanılır. Dönüştürücüler her sınıf için farklıdırve her bir yaratım Için ayarlanabilir değildir. Struts 2, tür dönüşümü için OGNL ve Dönüştürücüler kullanır.
Basit genel ve primitiv türler için dönüşümler yapabilir.
Doğrulama(Validation) Struts1 doğrulama işlemini ActionForm sınıfındaki validate metodu ile yapar veya Commons Validator kullanır. Aynı sınıf doğrulaması için farklı doğrulama kontekstleri kullanır. Alt objeler için doğrulama mümkün değildir. Struts 2, doğrulama işlemi için validate metodunu veya Xwork Doğrulama altyapısını kullanabilir.
Xwork doğrulama altyapısı zindirleme bir şekilde obje ve alt objeler için doğrulama yapmanız olanak sağlar.
Action Çalıştırma Mekanizması Struts1'de her modülün , istemcinin talebine istinaden ayrı bir hayat döngüsü vardır. Modül içindeki her Action sınıfı da ynı hayat döngüsünden geçmek zorundadır. Struts 2'de her bir Action Sınıfı için interceptor Stack mekanizması aracılığı ile farklı hayat döngüleri yaratılabilir

Yorum Gönder

0 Yorumlar