PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تفاوت JSF و Struts



Borna66
11th May 2012, 19:21
يكي از سوالات متداول در ارتباط با JSF تفاوت آن با Struts است.
Struts يك Web Application Framework كد باز جاوا است كه معماري اش مبتني بر MVC است و در آن request ها توسط Controller كه وظيفه مديريت اجزاء Application را به عهده دارد، توزيع مي شوند.
اما همانطور كه قبلا نيز ذكر شد، تكنولوژي JSF يك User Interface Framework است كه تنها بر لايه View از معماري MVC تاكيد دارد. با اين حال برخي عمليات هست كه هم توسط Struts و هم JSF قابل پياده سازي است. اين دو مزايا و معايبي نسبت به يكديگر دارند كه در ادامه به مهمترين آنها اشاره مي شود:
مزاياي اصلي Struts نسبت به JSF عبارتند از:


1.از آنجا كه Struts يك Web Application Framework است، از معماري پيشرفته تري در Controller برخوردار است. برنامه نويسان در Struts مي توانند با ايجاد يك Action object به Controller دستيابي پيدا كنند. در حالي كه JSF امكان دسترسي به controller را فراهم نمي نمايد.

2.Struts شامل يك Layout management framework قدرتمند به نام Tiles است كه به شما امكان ايجاد Reusable Template را مي دهد كه مي توانيد آن را در صفحات مختلف دوباره مورد استفاده قرار دهيد. لذا بدين روش، ظاهر مشابه و يكپارچه اي را براي Application شما فراهم مي سازد.

3.framework اعتبار سنجي struts شامل مجموعه بزرگتري از validator هاي استاندارد است كه بطور اتوماتيك هر دو اعتبارسنجي هاي Server-side و Client-side را بر اساس مجموعه قوانين موجود در يك فايل Configuration ايجاد مي نمايد. همچنين شما مي توانيد Custom Validator ايجاد نماييد و با افزودن definition آن به فايل configuration به راحتي در Application خود، آنها را include نماييد.


اما مهمترين مزيت JSF بر Struts مدل UI Component انعطاف پذير و قابل توسعه آن است و شامل اين موارد مي شود:


1.داراي يك API استاندارد براي تعريف وضعيت و رفتار انواع كامپوننت ها است. همچنين كاربران امكان ايجاد كامپوننت هاي جديد را نيز دارند. به علاوه كامپوننت هاي توليد شده توسط توليد كنندگان ديگر نيز در بازار، موجود و بصورت عمومي در دسترس است.

2.يك مدل rendering جداگانه براي تعريف نحوه render شدن كامپوننت ها دارد كه مي توان توسط آن نحوه render شدن كامپوننت را به روش هاي مختلف تعريف نمود. بعنوان مثال يك كامپوننت را كه براي انتخاب يك آيتم از ليست به كار مي رود را مي توان بعنوان يك menu يا radio button آن را render كرد.

3.داراي مدل event و Listener است كه توسط آن event هاي كامپوننت ها را مي توان كدنويسي نمود.

4.داراي مدل هايي براي conversion و validation داده هاي كامپوننت ها است.


از آنجا كه در JSF معماري كامپوننت از definition آن جدا است مي توان نحوه render شدن كامپوننت را به روش هاي گوناگوني فراهم نمود. حتي مي توان آنها را براي كاربران مختلف مثلا كاربران WML نيز render نمود. همچنين شما با JSF مي توانيد كامپوننت هاي جديد ايجاد نماييد. هيچ يك از اين دو، در struts امكان پذير نيست. در واقع در struts هيچ رويكردي درمورد كامپوننت هاي server-side وجود ندارد و به همين دليل نيز هيچ مدل و امكاني براي پاسخگويي به event هاي كامپوننت ها و نگهداري و بازيابي وضعيت كامپوننت ها وجود ندارد. با اين حال struts داراي يك tag library مفيد براي render كردن كامپوننت ها است كه تنها به HTML قابليت render شدن دارند.

مزيت مهم ديگر JSF اين است كه استاندارد است. منظور از استاندارد بودن اين است كه توسط JCP : Java Community Process براي integrate شدن آسان با ابزار گوناگون ايجاد شده است. در نتيجه از JSF در حال حاضر پشتيباني زيادي مي شود و امكان استفاده از آن در چندين IDE قرار داده شده است.

از آنجا كه JSF و Struts هر دو داراي مزاياي با ارزشي هستند، طراحان شايد هر دو را در application خود بطور همزمان بكار گيرند. طراحان مي توانند مدل كامپوننت JSF را به Struts Application هاي خود وارد نمايند و همچنان از معماري controller موجود در struts بهره ببرند. بطور مشابه طراحاني كه JSF Application دارند مي توانند از مكانيزم هاي قدرتمند اعتبارسنجي client-side و Tiles Layout Framework استفاده كنند. به اين هدف مي توان با استفاده از Struts_Faces integration Library نيز دست يافت.



منبع : http://javaborder.radmanitd.com/archives/cat_jsf.html