مزایای ASP.net MVC نسبت به ASP.net WebForms
مزایای WebForms از دید مایکروسافت در سال 2002:
مایکروسافت در ابتدای عرضه ASP.net WebForms مزایای آنرا بدین شرح اعلام کرده بود، مزایایی که در حال حاضر بعضی هایشان از معایب WebForms است، از جمله ViewState:
- یک فناوری بالغ است.
- امکان توسعه بسیار مناسب RAD را فراهم میآورد.
- از طراحی WYSIWYG در ویژوال استودیو پشتیبانی میکند.
- وضعیت را بهآسان مدیریت میکند.
- امکان استفاده از کنترلهای قوی که توسط مایکروسافت و شرکتهای دیگر ارایه میشود.
- نیازی اندک به دانش
- از ViewState و PostBack پشتیبانی میکند.
- به محیطهای توسعه تحت وب شباهت دارد.
معایب WebForms:
- اولین ضعف این روش این است که دست برنامه نویس و طراح در ایجاد رابط های کاربری ابدائی کاملا بسته است و برنامه نویس ناگزیر است با Interface از پیش تعیین شده .Net کار کند.
- دومین ضعف ASP.Net Webforms یک موجودی است به نام Viewstate. از روی اسمش معلوم است که کار Viewstate چیست. کارش نگهداری آخرین state کاربر هنگام Post Back شدن صفحه است. همان طور که گفتم کنترل Request ها و Response ها از دست برنامه نویس خارج شده و خود ASP.Net Webforms نیز ارتباط بین صفحات ارسالی از سوی سرور را با Viewstate برقرار میکند. متاسفانه Viewstate که معمولا حجم بالایی دارد هر بار هنگام Response همراه محتوای صفحه به سمت کاربر ارسال می شود و هنگام ارسال Request بعدی به سمت سرور ارسال می شود. و این صفحات را بسیار سنگین تر می کند. البته می شود حجم Viewstate را با چند کار ساده کنترل کرد که برنامه نویس ها به علت تنبلی زیاد و یا عدم اطلاع از این تکنیک ها مرتب درگیر این مشکل هستند.
- در برنامه های ساخته شده با Web Forms خبری از Pretty URLs نیست که بسیار مورد توجه و علاقه موتور جستجو ها است.
اما با معرفی و کاربرد MVC در زبانهای دیگر مانند PHP مایکروسافت نیز به فکر افتاد فریمورکی بر مبنای MVC برای ASP.net ارائه دهد. در نهایت این فریمورک با Visual Studio 2008 عرضه گردید و مورد توجه ASP.net بازها قرار گرفت.
MVC:
معماری MVC 1، برای اولینبار در سال 1978 توسط Trygve Reenskaug دانشمند نروژی علوم رایانه، تحت زبان برنامهنویسی اسمالتاک در مرکز پژوهش زیراکس پالوآلتو2 مطرح شد. نخستین شرح پیادهسازی MVC تحت مقالهای مشهور با عنوان «برنامهنویسی کاربردی در اسمالتاک-80: چگونه MVC رابهکار بریم؟» در دسامبر 1979 منتشر شد. این معماری تقریبا در تمام زبانهای برنامهنویسی مانند: ColdFusion، Java، JavaScript،Perl،PHP، Python، Ruby، SmallTalk، XML و NET. پیادهسازی شده است.
ASP.NET MVC
یک فریم ورک کاملاً جدید برای ساختن اپلیکیشن های ASP.NET است که با هدف جداسازی شفاف لایه های برنامه و قابلیت تست پذیری بالا بوجود آمده است. برنامه نویسان دات نت با استفاده از ASP.NET MVC می توانند رفتار Stateless وب را درک کنند و بر روی کدهای HTML خروجی صفحات خود کنترل کامل داشته باشند. در فریم ورک ASP.NET MVC بر خلاف ASP.NET WebFroms آدرس های صفحات وب سایت به فایل های فیزیکی aspx وابسته نیستند. در این مطلب اشاره ای کوتاه خواهیم داشت به مزیت های کلی ASP.NET MVC نسبت به ASP.NET WebForms :
- Separation of Concern : فریم ورک ASP.NET MVC شما را مجبور می کند تا یک جداسازی شفاف از قسمت های مهم اپلیکیشن خود داشته باشید. شما باید کدهای مربوط به دسترسی به داده ها را در قسمت Model و کدهای مربوط به رابط کاربری را در قسمت View بنویسید و برای ایجاد ارتباط میان این دو لایه از Controllerها استفاده کنید. با این جداسازی شفاف، پیچیدگی های پروژه کمتر شده و نگهداری پروژه در درازمدت و انجام تغییرات بر روی آن آسان تر می شود.
- کنترل کامل بر روی HTML خروجی : با استفاده از ASP.NET MVC شما می توانید درخواست های کاربر را پردازش کنید و خروجی مناسب HTML را به مرورگر بفرستید. کدهای HTML خروجی شما کاملاً تمیز هستند و از کدهای عجیب و غریبی که ASP.NET WebForms برای شما ایجاد می کند خبری نیست!
- ایجاد URLهای RESTful : با کامپوننت های URL Mapping در این فریم ورک می توانید URLهایی بدون پسوند، واضح و قابل جستجو بسازید. این URLها از قوانین نام گذاری REST پشتیبانی می کنند و از نظر SEO در موتورهای جستجوگر امتیاز خوبی می گیرند.
- قابلیت تست پذیری : یکی از اهداف مهم طراحی فریم ورک ASP.NET MVC قابلیت تست پذیری بوده است. به علت جدا سازی شفاف میان کدهای منطق برنامه و کدهای مربوط به رابط کاربری، تست کردن اجزای مختلف وب اپلیکیشن های ASP.NET MVC آسان است. ASP.NET MVC با تمام فریم ورک های Testing که برای دات نت ساخته شده اند کار می کند.
- عدم استفاده از PostBack و ViewState : در ASP.NET MVC خبری از فرم های تحت سرور (یا همان runat=”server” معروف) نیست. شما رویدادی به نام PostBack ندارید و حالت کنترل های شما با استفاده از ViewState حفظ نخواهد شد! این یک مزیت است زیرا باعث ایجاد خروجی واضح تر و صفحات سبک تر می شود.
- آسان تر کردن کار تیمی : به علت جداسازی واضح میان قسمت های مختلف پروژه و قابلیت تست آسان، کار کردن به صورت تیمی را آسان تر می کند. هر یک از اعضای تیم بر اساس نوع تخصص خودشان می توانند قسمت هایی از پروژه (Model یا View) را طراحی کنند و با استفاده از Controllerها ارتباط میان لایه ها را بسازند.
- اجبار در کدنویسی مبتنی بر الگوی طراحی : ASP.NET MVC توسعه دهندگان را مجبور به رعایت الگوی طراحی MVC می کند. این اجبار باعث ایجاد یک وب اپلیکیشن با ساختار استاندارد می شود که نگهداری و توسعه آن در دراز مدت آسان خواهد بود.
- کدباز بودن : سورس کد فریم ورک ASP.NET MVC با مجوز Ms-pl که یک مجوز اوپن سورس از شرکت مایکروسافت است، منتشر می شود. کدباز بودن این فریم ورک باعث شده تا شرکت مایکروسافت فیدبک های دقیق تر و سودمندتری از جامعه توسعه دهندگان ASP.NET دریافت کند ودر نتیجه باعث پیشرفت سریعتر آن شده است.
- سرعت بیشتر در بارگذاری صفحات : همانطور که اشاره شده، با حذف کنترل های تحت سرور، PostBack و ViewState که باعث ایجاد کدهای اضافی جاوا اسکریپت می شود، سرعت لود صفحات وب در ASP.NET MVC به مراتب بیشتر از وب فرم هاست.
منابع:
http://www.dadashi.biz/?p=313
ASP.Net با تولد خود یک روش متفاوت برای طراحی صفحات وب را ارائه کرد. یک Framework متفاوت با روش های استفاده شده در سایر زبان های سمت سرور. آن روزها اسم خاصی نداشت اما امروز به آن روش Web Forms میگوییم.
http://farasun.wordpress.com/2010/07/28/asp-net-mvc-benefits
ASP.NET MVC یک فریم ورک کاملاً جدید برای ساختن اپلیکیشن های ASP.NET است که با هدف جداسازی شفاف لایه های برنامه و قابلیت تست پذیری بالا بوجود آمده است
http://bestgallery.persianblog.ir/post/35
معماری MVC 1، برای اولینبار در سال 1978 توسط Trygve Reenskaug دانشمند نروژی علوم رایانه، تحت زبان برنامهنویسی اسمالتاک در مرکز پژوهش زیراکس پالوآلتو2 مطرح شد. نخستین شرح پیادهسازی MVC تحت مقالهای مشهور با عنوان «برنامهنویسی کاربردی در اسمالتاک-80: چگونه MVC رابهکار بریم؟» در دسامبر 1979 منتشر شد. این معماری تقریبا در تمام زبانهای برنامهنویسی مانند: ColdFusion، Java، JavaScript،Perl،
PHP، Python، Ruby، SmallTalk، XML و NET. پیادهسازی شده است.
علاقه مندی ها (Bookmarks)