ASP .NET MVC یا ASP .NET WebForm
سه شنبه 5 آبان 1394بسیاری از افراد تصور می کنند که MVC به عنوان جایگزین Web Form ها ارائه شده است. آیا واقعا این چنین است؟
ASP .NET MVC یا ASP .NET WebForm
همواره بحث های بسیاری در بین معماران نرم افزار در رابطه با استفاده از تکنولوژی های مختلف در توسعه نرم افزار داشته و دارد. بحث هایی در استفاده از ORM ها یا Stored Procedures ، مقایسه SOAP با REST و …. با ارائه Microsoft ASP .NET MVC شبه هایی در رابطه با استفاده از ASP .NET Web Form در مقایسه با ASP .NET MVC بوجود آمده است. بسیاری از افراد تصور می کنند که MVC به عنوان جایگزین Web Form ها ارائه شده است. آیا واقعا این چنین است؟
در واقع این طور نیست و MVC به عنوان یک گزینه جدید در اختیار برنامه نویسان وب قرار گرفته است و هیچ یک از این دو دیدگاه جایگزین یکدیگر نخواهند شد. افراد در انتخاب بین این دو می توانند به صورت آزادانه عمل کنند و هریک از این دو روش که با آن راحتر هستند را انتخاب کنند.
مشکلات ASP .NET Web Forms
اما مشکلات ASP .NET Web Form چیست؟ چرا مایکروسافت به ارائه گزینه جدیدی در توسعه نرم افزارهای تحت وب روی آورده است؟ در واقع مایکروسافت با ارائه Web Form ها سعی در تطبیق دادن مدل توسعه سیستم های تحت ویندوز به سیستم های تحت وب را دارد. به همین جهت بسیاری از برنامه نویسان که پیش از این برنامه های تحت ویندوز تولید می کردند (به ویژه برنامه نویسان VB6) به سادگی و بدون نیاز به کسب دانش فنی بالا در خصوص ساختارهای وب و HTTP شروع به توسعه سیستم های تحت وب کردند. برنامه نویسانی که تا قبل از ASP .NET Web Form به استفاده از کنترل ها ، مدیریت رویدادها و ساختار نرم افزارهای تحت ویندوز عادت کرده بودند، حالا برنامه نویس وب بودند و سیستم های تحت وب تولید می کردند.
مایکروسافت برای شبیه سازی توسعه سیستم تحت ویندوز در وب ، وب فرم ها ساختاری برپایه رویدادها Event -Driven را معرفی و دو مفهوم View State و Post Back را ارائه کردند. در نتیجه وب فرم ها ساختار طبیعی Stateless وب را شکستند. هر دو ماهیت View State و Post Back باعث به وجود آمدن بسیاری از مشکلات و افزودن پیچیدگی توسعه نرم افزارهایی تحت وب شدند. تولید بسیاری از صفحات وب که دارای صدها کیلوبایت از View State که باعث افت بازدهی و سنگین شدن عملکرد نرم افزارهایی تحت وب شد. برنامه نویسان دیگر کنترلی بر خروجی HTML تولید شده از سوی صفحات نداشتند و عملا کنترل های تحت سرور (Server Controls) به تولید تگ های غیر استاندارد و استفاده از In-line Style ها می پرداختند. همچنین تولید کدهای JavaScript با توجه به ساختار نامگذاری نامناسب Server Control ها بسیار سخت و پیچیده می شد. همچنین به جهت پیچیدگی این ساختار و ترکیب شدن خروجی نمایشی صفحات با پیچیدگی های کد نرم افزار عملا امکان Unit Test غیر ممکن شد.
امروزه با مشخص ترشدن اهمیت Unit Test در توسعه نرم افزار به ویژه با ارائه متدلوژهایی همچون Agile مشکلات بسیار برای تهیه و استفاده از Unit Test ها بیشتر احساس میشد. امروزه بسیاری از توسعه دهندگان وب به دلیل ماهیت Stateless وب در تعامل با ساختارهای نامناسب رویدادگرای Web Form ها به مشکلات بسیاری در توسعه سیستم های تحت وب ، علی الخصوص با ارائه مرورگرهای مدرن برخورده اند. و به همین دلایل و دلایل بسیار دیگر مایکروسافت به ارائه ASP .NET MVC اقدام کرد.
روش کار ASP .NET MVC
ASP .NET MVC با حذف کردن انعطاف پذیری Web Formها و ساده سازی آن عملکرد بسیار مناسبی ایجاد می کند. این روش که با پیاده سازی الگوی Model-View-Controller که طی سالهای متمادی یکی از بهترین روش های پیاده سازی UI بوده است ، امکان توسعه نرم افزارهای تحت وب با ساختار کاملا مستقل از هم را فراهم می نماید. الگوی MVC نرم افزار را به سه بخش Model، View و Controller تقسیم می نماید.
View مسئولیت ارائه ساختار نمایشی نرم افزار را به عهده دارد و با استفاده از ساختارهای HTML و اطلاعات پاس شده از طریق Controller به ارائه صفحات نمایش اقدام می نماید.
Model به پیاده سازی منطق نگهداری داده های سیستم می پردازد و مسئولیت نگهداری اطلاعات را به عهده دارد.
Controller ها هم وظیفه کنترل کردن درخواست ها و تعامل های کاربران را به عهده دارند. تمامی درخواست هایی که از Client به سرور منتقل می شوند توسط Controller بررسی و با کنترل نسبت به استفاده از Model مربوطه و نمایش View مرتبط تصمیم گیری می نماید.
در MVC استفاده از رویدادها با Action های یک Controller جایگزین می شود. در واقع مهمترین مزیت استفاده از MVC جدا سازی بخش های مختلف سیستم از یکدیگر و امکان انجام Unit Test ها با توجه به این ساختار می باشد. همچنین مدیریت بهینه URL ها و خروجی های تولید شده HTML توسط View ها و کمک به بهینه سازی خروجی وب سایت برای موتورهای جستجو گر می باشد. در ساختار MVC دیگر مفهومی به نام View State ، Post Back و Server Control وجود ندارد و به همین جهت برنامه نویس به طور کامل بر روی خروجی تولید شده از صفحات مسلط می باشد.
مقایسه
مزایای ASP .NET MVC
مجزا سازی بخش های مختلف نرم افزار
کنترل کامل بر روی خروجی های تولید شده HTML
امکان توسعه نرم افزار به صورت TTD
مدیریت بهینه URL ها
امکان یکپارچه سازی مناسب با فریم ورک های جاوا اسکریپت
امکان استفاده از View Engine ها مختلف
عدم وجود View State و Post Back
استفاده از استانداردهای وب
قابلیت توسعه پذیری بالا
ایده آل برای سیستم های Web 2.0
مزایای ASP .NET Web Form
ساختار شبیه به نرم افزارهای تحت ویندوز
توسعه سریع نرم افزار
امکان استفاده از کنترل های غنی تحت سرور
نتیجه گیری
در واقع انتخاب هریک از این دو گزینه می تواند برای شما و تیم تان مناسب باشد. اگر شما به دنبال مدیریت کامل بر روی خروجی های صفحات خود هستید ، اگر به دنبال توسعه نرم افزار به روش TDD هستید ، اگر آدرس های تولید شده صفحات و بهینه سازی موتورهای جستجو برای شما دارای اهمیت است و البته اگر به دنبال استفاده از فریم ورک های جاوا اسکریپ هستید ، ASP .NET MVC گزینه مورد نظر شماست.
در سوی دیگر اگر شما از ساختارهای نرم افزارهای تحت وب، استانداردهای وب و HTTP اطلاعاتی ندارید ، ویا اگر به دنبال استفاده از کنترل های مختلف و توسعه نرم افزار به روش رویدادگرا هستید قطعا استفاده از ASP .NET MVC برای شما مناسب نمی باشد و بهتر است از ASP .NET Web Form استفاده کنید.
برگرفته از
http://weblogs.asp.net/shijuvarghese/asp-net-mvc-vs-asp-net-web-form
- ASP.net MVC
- 2k بازدید
- 3 تشکر