21. نتیجهگیری
بیایید خلاصهای از آنچه در این سند پوشش داده شده است مرور کنیم:
- مبانی برنامهنویسی وب در جاوا با استفاده از سرولتها و صفحات JSP
- مقدمهای بر معماری MVC
- مقدمهای بر معماری سهلایه
- مقدمهای بر Spring IoC
- نمونههایی برای تشریح این نکات
ما معتقدیم خوانندگانی که به این نقطه رسیدهاند اکنون آمادهاند تا برنامههای وب جاوا خود را توسعه دهند. آنها همچنین آمادهاند تا روشهای توسعه دیگری را که مشابه روشهای پوششدادهشده در این سند هستند، بررسی کنند. بیایید معماری برنامههای وب توسعهیافته در اینجا را مرور کنیم:
![]() |
برای برنامههای ساده، این معماری کافی است. وقتی چند برنامه از این نوع را نوشتید، متوجه خواهید شد که سرولتهای دو برنامهٔ مختلف:
- از همان مکانیزم برای تعیین اینکه کدام متد [doAction] باید برای رسیدگی به عملی که کاربر درخواست کرده است اجرا شود، استفاده میکنند
- در واقع تنها در محتوای این متدها با هم تفاوت دارند [doAction]
در این حالت بسیار وسوسهانگیز است که:
- پردازش (۱) را در یک سرولت عمومی که از برنامهای که از آن استفاده میکند بیخبر است، عاملیسازی کرد
- واگذاری پردازش (2) به کلاسهای خارجی، زیرا سروِلت عمومی نمیداند در کدام برنامه کاربردی استفاده میشود
- ارتباط دادن اقدام درخواستی کاربر به کلاسی که باید آن را پردازش کند، با استفاده از یک فایل پیکربندی
ابزارهایی که اغلب «چارچوب» نامیده میشوند، برای فراهم کردن این قابلیتها برای توسعهدهندگان پدید آمدهاند. قدیمیترین و احتمالاً شناختهشدهترین آنها Struts (http://struts.apache.org/) است. جاکارتا استراژ (Jakarta Struts) پروژهای از بنیاد نرمافزار آپاچی (Apache Software Foundation) (www.apache.org) است. این فریمورک در آدرس (http://tahe.developpez.com/java/struts/) توضیح داده شده است.
چارچوب Spring (http://www.springframework.org/)، که اخیراً ظهور کرده است، ویژگیهای مشابهی با Struts ارائه میدهد. در واقع، این همان ماژول Spring MVC است. نحوه استفاده از آن در چندین مقاله (http://tahe.developpez.com/java/springmvc-part1/) توضیح داده شده است.
اسپرینگ به مفهوم لایه [web] در یک برنامه سهلایه (MVC) محدود نمیشود. این فریمورک در برنامههای غیروب نیز کاربرد دارد.
بنابراین ما دوره خود را با پیادهسازی یک معماری MVC در چارچوب یک معماری سهلایه [web, metier, dao]، با استفاده از یک مثال پایهای برای مدیریت فهرست افراد، به پایان رساندیم.
![]() |
در نسخه ۱ برنامه، فهرست افراد در حافظه نگهداری میشد و هنگام خروج از برنامه وب ناپدید میشد. در نسخههای دیگر، فهرست افراد در یک جدول پایگاه داده ذخیره میشود. ما از چهار نمونه مختلف SGBD استفاده کردیم: Firebird، Postgres، MySQL و SQL Server Express.
به لطف Spring IoC، لایه [web] از نسخه ۱ میتوانست به طور کامل در نسخههای بعدی حفظ شود. بنابراین ما نشان دادیم که امکان ساخت معماریهای ntier با لایههای مستقل وجود دارد.
در نسخههایی که از پایگاه داده استفاده میکنند، ما سهم Spring را در ساخت لایههای [dao] و [service] نشان دادهایم. به لطف یکپارچهسازی Spring با iBATIS، ما توانستیم چهار نسخه بسازیم که تنها در فایلهای پیکربندی خود با هم تفاوت دارند. کلاس [DaoImplCommon] یکسان برای پیادهسازی لایه [dao] در هر چهار نسخه استفاده شد. برای رفع مشکلی خاص در نسخه Firebird SGBD، مجبور شدیم از این کلاس ارث ببریم، اما نیازی به اصلاح آن نداشتیم.
در نهایت، ما نشان دادیم که چگونه Spring به ما امکان میدهد تا تراکنشها را به صورت اعلانگونه در لایه [service] مدیریت کنیم.
از خوانندگان دعوت میشود تا طیف کامل ویژگیهای ارائهشده توسط این محصول را بررسی کنند.

