Struts vs Struts2
Struts (мөн Apache Struts эсвэл Struts 1 гэгддэг) нь Java хэл дээр бичигдсэн, Java EE вэб програмуудыг хөгжүүлэхэд зориулагдсан платформ хоорондын нээлттэй эхийн хүрээ юм. Энэ нь Java EE вэб програмын анхны хүрээнүүдийн нэг байсан. Гэвч хэдэн жилийн дараа Struts2 (эсвэл Struts хувилбар 2) ирсэн бөгөөд энэ нь огт өөр, маш сайжруулсан вэб програмын хүрээ байсан юм. Энэ нь анхны хувилбарт дутагдалтай гэж үзсэн цөөн хэдэн асуудлыг хөндсөн. Одоо Struts2 нь дэлхий даяар Java EE програмуудыг хөгжүүлэхэд маш их ашиглагдаж байна.
Struts гэж юу вэ?
Struts (Struts 1) хүрээ нь Java EE вэб программуудыг хөгжүүлэх анхны вэб програмын хүрээний нэг байсан. Struts framework нь MVC (Model-View-Controller) архитектурыг ашиглахыг дэмждэг. Энэ нь Java Servlet API-ийн өргөтгөл юм. Крейг МакКланахан бол Struts-ийн анхны үүсгэн байгуулагч юм. Анх үүнийг Жакарта Струтс гэж нэрлэдэг байсан бөгөөд Apache програм хангамжийн сангийн Жакарта төслийн хүрээнд хадгалагдаж байсан. Энэ нь Apache License 2.0 дагуу гарсан. Struts фреймворкийг хүсэлтэд суурилсан фреймворк гэж нэрлэдэг бөгөөд энэ нь хүсэлт гаргагч, хариу зохицуулагч, шошго номын сан гэсэн гурван үндсэн бүрэлдэхүүн хэсгээс бүрдэнэ. Стандарт URI (Нэгдмэл нөөцийн танигч) нь хүсэлт гаргагчтай таарч байна. Хариултын зохицуулагч нь хяналтыг шилжүүлэх үүрэгтэй. Маягт бүхий интерактив програмуудыг үүсгэхийн тулд шошгоны номын сангийн санал болгож буй функцуудыг ашиглаж болно. Struts REST програмууд болон SOAP, AJAX гэх мэт төрөл бүрийн технологийг дэмждэг.
Struts2 гэж юу вэ?
Struts framework-ыг тухайн үед Java EE хөгжүүлэгчид тодорхой хязгаарлалтуудыг (танилцуулгын давхарга, хүсэлтийг боловсруулах давхарга болон загвар хоорондын ялгаагүй) агуулсан гэж үздэг байсан бөгөөд үүний үр дүнд хэдэн жилийн дараа Struts2 гарч ирэв. Үнэндээ Struts2 нь Struts-аас тэс өөр байсан. Үнэн хэрэгтээ тэд ижил кодын баазыг ч хуваалцаагүй, учир нь Struts2 нь зүгээр л WebWork 2.2 хүрээний нэрийг өөрчилсний үр дүн байсан (жишээ нь, хэсэг хугацаанд тус тусад нь ажилласан WebWork болон Struts нийгэмлэгүүд эцэст нь Struts2-ийг гаргахын тулд гар нийлж байсан). Одоогийн тогтвортой хувилбар нь 2011 оны 5-р сард гарсан 2.2.3 хувилбар юм.
Struts болон Struts2 хоёрын ялгаа нь юу вэ?
Struts framework-ийн олон асуудлын нэг нь интерфейсийн оронд хийсвэр ангиудыг програмчлах хэрэгцээ байсан юм. Үүнийг Struts2 хүрээгээр шийдсэн. Жишээлбэл, Struts framework нь хийсвэр үндсэн ангиудаас Action ангиудыг өргөтгөх шаардлагатай байсан ч Struts2 Actions нь Action интерфейсийг хэрэгжүүлж чадна. Хоёр хувилбарын хоорондох урсгалын загварын ялгаатай байдлаас шалтгаалан Struts фрэймворк дээр Action объектуудтай холбоотой аюулгүй байдлын асуудал Struts2 framework дээр гардаггүй. Шалтгаан нь Struts2 Action объектуудыг хүсэлт тус бүрээр үүсгэсэн байдаг бол Struts дахь Action хүрээ нь тухайн Үйлдлийн бүх хүсэлтийг шийдвэрлэх ганцхан жишээтэй байдаг. Struts дахь Actions framework-ээс ялгаатай нь Struts2 Actions нь Servlet API-ээс хамаардаггүй.
Struts2 хүрээний туршилтын чадвар нь Struts framework-ээс харьцангуй өндөр байна. Та Struts2 Actions-ийг 3 алхамыг дагаж тест хийж болно: жишээ болгох, шинж чанарыг тохируулах, аргуудыг дуудах. Action шинж чанаруудыг хоёрдахь оролтын объектыг хадгалахгүйгээр оролтын шинж чанар болгон ашигладаг тул Struts2 framework дээр оролтыг хураах нь илүү хялбар байдаг. Struts2 хүрээ нь JSTL интеграцчлалыг дэмжихээс гадна (энэ нь Struts-д байдаг) OGNL (Object Graph Notation Language) илүү хүчирхэг, илэрхийлэлтэй ашиглах боломжтой. Төрөл хувиргахдаа Strut болон Strut2 нь Commons-Beanutils болон OGNL-ийг тус тус ашигладаг. Эдгээр сайжруулалтуудын улмаас Struts2 хүрээ нь маш боловсорсон хүрээ гэж тооцогддог бөгөөд Java EE програмистуудын дунд маш их алдартай байдаг. Нөгөөтэйгүүр, Struts framework одоо хуучирсан гэж тооцогддог.