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-ի ընդլայնումն է: Craig McClanahan-ը Struts-ի սկզբնական ստեղծողն է: Սկզբում այն հայտնի էր որպես Jakaratha Struts և պահպանվում էր Apache Software Foundation-ի Ջակարտայի նախագծի ներքո: Այն թողարկվել է Apache License 2.0-ով: Struts-ի շրջանակը կոչվում է հարցումների վրա հիմնված շրջանակ, և այն կազմված է երեք հիմնական բաղադրիչներից՝ հարցումների մշակող, պատասխանների մշակող և պիտակների գրադարան: Ստանդարտ URI (միասնական ռեսուրսների նույնացուցիչ) քարտեզագրվում է հարցումների մշակողի հետ: Պատասխանների մշակողը պատասխանատու է վերահսկողության փոխանցման համար: Ձևաթղթերով ինտերակտիվ հավելվածներ ստեղծելու համար կարող են օգտագործվել պիտակների գրադարանի կողմից առաջարկվող հնարավորությունները: Struts-ն աջակցում է REST հավելվածներին և տարբեր տեխնոլոգիաներին, ինչպիսիք են SOAP, AJAX և այլն:
Ի՞նչ է Struts2?
Struts շրջանակն այն ժամանակ ընկալվում էր որպես որոշակի սահմանափակումներ (հիմնականում ներկայացման շերտի, հարցումների մշակման շերտի և մոդելի միջև տարանջատման բացակայություն) Java EE մշակողների կողմից, և, հետևաբար, մի քանի տարի անց Struts2-ը եկավ:Իրականում, Struts2-ը լրիվ տարբերվում էր Struts-ից: Իրականում, նրանք նույնիսկ չէին կիսում նույն կոդերի բազան, քանի որ Struts2-ը պարզապես WebWork 2.2 շրջանակի անվանափոխության արդյունքն էր (այսինքն՝ WebWork և Struts համայնքները, որոնք որոշ ժամանակ առանձին աշխատեցին, ի վերջո, ձեռքերը միացան՝ Struts2-ը ստեղծելու համար): Դրա ներկայիս կայուն թողարկումը 2.2.3 տարբերակն է, որը թողարկվել է 2011 թվականի մայիսին։
Ո՞րն է տարբերությունը Struts-ի և Struts2-ի միջև:
Struts Framework-ի բազմաթիվ խնդիրներից մեկը ինտերֆեյսի փոխարեն վերացական դասերի ծրագրավորման անհրաժեշտությունն էր: Սա լուծվել է Struts2 շրջանակի միջոցով: Օրինակ, Struts Framework-ը պահանջում էր Action դասերի ընդլայնում վերացական բազային դասերից, սակայն Struts2 Actions-ը կարող է իրականացնել Action ինտերֆեյս: Երկու տարբերակների միջև թելերի մոդելի տարբերությունների պատճառով Struts շրջանակում ի հայտ եկած թելերի անվտանգության խնդիրները Action օբյեկտների վերաբերյալ չեն առաջանում Struts2 շրջանակում: Պատճառն այն է, որ Struts2 Գործողությունների օբյեկտները տեղադրվում են յուրաքանչյուր հարցման համար, մինչդեռ Action in Struts շրջանակն ունի միայն մեկ օրինակ՝ այդ Գործողության բոլոր հարցումները կարգավորելու համար:Ի տարբերություն Actions in Struts շրջանակի, Struts2 Actions-ը կախված չէ Servlet API-ից:
Struts2 շրջանակի ստուգելիությունը համեմատաբար ավելի բարձր է, քան Struts շրջանակը: Դուք կարող եք ստուգել Struts2 Actions-ը, պարզապես հետևելով երեք քայլերին. օրինակացում, հատկությունների կարգավորում և մեթոդների կանչ: Ներածման հավաքումն ավելի հեշտ է Struts2 շրջանակում, քանի որ Action հատկությունները օգտագործվում են որպես մուտքային հատկություններ, առանց երկրորդ մուտքային օբյեկտ պահելու: Բացի JSTL ինտեգրման աջակցությունից (որը առկա է Struts-ում), Struts2 շրջանակը կարող է օգտագործել ավելի հզոր և արտահայտիչ OGNL (Օբյեկտի գրաֆիկի նշման լեզու): Տիպի փոխակերպման համար Strut-ը և Strut2-ն օգտագործում են համապատասխանաբար Commons-Beanutils և OGNL: Այս բարելավումների պատճառով Struts2 Framework-ը համարվում է շատ հասուն շրջանակ և այն շատ տարածված է Java EE ծրագրավորողների շրջանում: Մյուս կողմից, Struts-ի շրջանակն այժմ համարվում է հնացած։