مروری بر ASP.NET MVC و ASP.NET Web Forms

آشنایی با معماری MVC

معماری MVC 1، برای اولین‌بار در سال 1978 توسط Trygve Reenskaug دانشمند نروژی علوم رایانه، تحت زبان برنامه‌نویسی اسمال‌تاک در مرکز پژوهش زیراکس پالوآلتو2 مطرح شد. نخستین شرح پیاده‌سازی MVC تحت مقاله‌ای مشهور با عنوان «برنامه‌نویسی کاربردی در اسمال‌تاک-80: چگونه MVC رابه‌کار بریم؟» در دسامبر 1979 منتشر شد. این معماری تقریبا در تمام زبان‌های برنامه‌نویسی مانند: ColdFusion، Java، JavaScript،Perl، PHP، Python، Ruby، SmallTalk، XML و NET. پیاده‌سازی شده است.
کد خبر: ۳۲۴۳۱۹

در نوامبر 2002 سازمان اصلی بین‌المللی استانداردسازی وب (W3C)، این الگو را به‌عنوان بخشی از استاندارد XHTML2.0 در نظر گرفت. به‌نظر رینسکاگ دلیل اصلی استفاده از MVC، پوشش فاصله موجود بین مدل ذهنی کاربران و مدل دیجیتالی موجود در رایانه است. این الگو با پشتیبانی مستقیم درک دیداری و کنترلی انسان از اطلاعات محیط خود، ساختاری مناسب در نگاه همزمان به محتوای متفاوت یا از نقطه نظرات مختلف به یک مدل ارایه می‌کند. به بیانی واضح‌تر با استفاده از این الگو می‌توان برای اطلاعات یکسان نمایش و یا تصمیم متفاوت داشت. به شکل 1 توجه کنید.

سرواژه MVC از واژگان مدل، ویو و کنترلر تشکیل شده که هریک به‌ترتیب وظیفه نگهداری اطلاعات، نمایش اطلاعات و برقراری ارتباط بین کاربر و سیستم را برعهده دارند. شاید در ابتدا نگاه جداگانه به هر یک از این بخش‌ها و ترسیم خطوط ارتباطی موجود بین آن‌ها کمی سخت جلوه کند. با مثالی ساده به تشریح این موارد در شکل 2 می‌پردازیم.

مدل یک سند HTML است که به کاربر نمایش داده می‌شود، CSS بخشی است که به HTML شکل و جلوه‌های تصویری می‌دهد و View را شامل می‌شود و سرانجام، مرورگر کاربر در نقش کنترلر، مسوول ترکیب CSS و HTML در یک نمای نهایی و پردازش و نمایش آن به‌صورت مقدیری از پیکسل‌ها در صفحه نمایش کاربر است.

تفاوت فرم‌های وب رایج ASP.NET و MVC

در سال 2002 مایکروسافت با ارایه نسخه .Net Framework1.0 اولین کلاس از برنامه‌های تحت وب را ارایه کرد. در آن زمان، حتی برنامه‌نویسان آشنا با محیط‌های برنامه‌نویسی تحت ویندوز مانند ویژوال بیسیک6 هم قادر بودند با کمترین دانش HTML و آگاهی از تکنولوژی‌های وب و تنها با کشیدن و رهاکردن کنترل‌روی صفحه و کدنویسی رویداد مربوط به کنترل مذکور، در محیطی مشابه با محیط توسعه برنامه‌های تحت ویندوز، به توسعه برنامه‌ی تحت وب بپردازند. بنابراین توسعه برنامه‌های وب امری رایج برای اکثر برنامه‌نویسان تحت ویندوز بود.

نقاط قوت فرم‌های وب ASP.NET بدین شرح است:

یک فناوری بالغ است.

امکان توسعه بسیار مناسب RAD را فراهم می‌آورد.

از طراحی WYSIWYG در ویژوال استودیو پشتیبانی می‌کند.

وضعیت را به‌آسان مدیریت می‌کند.

امکان استفاده از کنترل‌های قوی که توسط مایکروسافت و شرکت‌های دیگر ارایه می‌شود.

نیازی اندک به دانش HTTP، HTML، CSS و در بسیاری موارد Javascript دارد.

از ViewState و PostBack پشتیبانی می‌کند.

به محیط‌های توسعه تحت وب شباهت دارد.

و نقاط ضعف:

بخش منطق و کد تلفیق شده است.

به‌دلیل ترکیب فایل‌های حاوی کد انجام
unit test سخت‌تر است.

از ViewState و PostBack پشتیبانی می‌کند.

مدیریت وضعیت کنترل‌ها در بسیاری موارد منجر به حجم بالای صفحات وب می‌شود.

همان‌طور که می‌بینید، پشتیبانی از PostBack و ViewState از مزایا و معایب فرم‌های وب
ASP.NET هستند. ViewState روشی برای نگهداری وضعیت و مقدار کنترل است. استفاده از ViewState به‌دلیل ماهیت Stateless محیط وب ضروری است (Stateless بدین معنا که وقتی یک درخواست جدید برای سرور ارسال می‌شود، سرور هیچ اطلاعی از درخواست قبلی ندارد، بنابراین برای تبدیل به یک محیط شبه پایدار، نیاز است برخی اطلاعات راجع به درخواست قبلی برای سرور ارسال شود). این کار با استفاده از فیلدهای «input /» پنهان انجام می‌شود که منجر به افزایش حجم صفحه می‌شوند. به‌ویژه وقتی برخی کنترل‌ها مثل GridView به صفحه اضافه می‌شود، این افزایش حجم بسیار نمایان می‌شود.

PostBack نیز با تولید جاواسکریپت مورد نیاز برای کنترل رویدادهای یک کنترل، سعی بر کاهش اطلاع برنامه‌نویس از جزییات و نحوه ارتباط مرورگر با سرور دارد.

ASP.NET MVC

در واقع ASP.NET نیاز به کنترل دقیق خروجی HTML توسط برنامه‌نویسان را قربانی شباهت برنامه‌های وب به ویندوز کرد که این امر از سویی رضایت توسعه‌دهندگان متوسط وب و از سوی دیگر نارضایتی توسعه‌دهندگان حرفه‌ای که قصد تولید برنامه‌های مدرن و پرتعامل با کاربر را داشتند، در پی آورد. از این‌رو بسیاری از توسعه‌دهندگان به‌سمت بسترهایی چون روبی و PHP روی آوردند که با ارایه کنترل‌های سطح بالا و پشتیبانی از مدل برنامه‌نویسی MVC برای برنامه‌های پیچیده وب نیاز آن‌ها را برطرف می‌ساخت. در نتیجه این نیازها، مایکروسافت در پاییز2007 رسما ارایه بستری مدرن مبتنی بر هسته ASP.NET تحت فریم‌ورکی به‌نام ASP.NET MVC، برای پشتیبانی از نیاز توسعه‌دهندگان حرفه‌ای وب همراه با کنترل آزمون‌‌پذیری کامل خروجی ارایه شده به مرورگر ارایه داد. توسعه‌دهندگان علاقمند به این فریم‌ورک، نیازمند آشنایی با مفاهیم
HTTP ،HTML ،CSS و جاواسکریپت هستند و به‌دلیل عدم پشتیبانی از PostBack و ViewState نگهداری وضعیت برعهده ایشان است و مدیریت رویدادها بدلیل تفاوت با فرم‌های وب نیازمند مطالعه برخی مفاهیم است. بی‌شک تشریح مزایای MVC در این بحث نمی‌گنجد و دراینجا تنها به برخی اشاره می‌کنیم:

کاهش چشمگیر حجم صفحات وب به‌دلیل نبود ViewState

جداسازی بخش‌های مختلف

امکان unit testing در سطح برنامه کاربردی

توانایی پشتیبانی از موتور نمایش مختلف همچون Brail، NHaml، NVelocity، XSLT و...

قابلیت آدرس‌دهی منطقی و پویا برحسب نیاز

پشتیبانی از تمام امکانات هسته ASP.NET از جمله احرازهویت، حافظه نهان و ... .

پشتیبانی از MVC به‌طور پیش‌فرض در ویژوال‌استودیو2010 وجود دارد ولی درصورتی که شما از نسخه‌های قدیمی‌تر آن استفاده می‌کنید با مراجعه به سایت رسمی مایکروسافت امکان دریافت نسخه دوم ASP.NET MVC به‌صورت رایگان وجود دارد.

محمد غفاری

منابع

msdn.microsoft.com، Codehorror.com، encode.com و asp.net

پی‌نوشت‌ها

1. Model View Controller

2. Xerox PARC

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها