تلفن ثابت
تلفن همراه

طراحی سایت در شیراز

مقایسه ی Web Forms و MVC

مقایسه ی Web Forms و MVC

برنامه نویسی وب بر اساس پروتوکل HTTP کار میکند. پروتوکل HTTP یک پروتوکل stateless است. به عبارت دیگر، هر درخواست و پاسخ بین کاربر و سرور مستقل از درخواست و پاسخ های قبلی هستند. هیچ اطلاعاتی در رابطه با درخواست و پاسخ های قبلی ذخیره نمی شود. علاوه بر این، بر خلاف برنامه نویسی ویندوز، هیچ برنامه نویسی ای بر اساس رویداد ها (event) انجام نمی شود. نقطه ی مشترک برنامه نویسی وب و برنامه نویسی ویندوز در این است که در هر دو، برنامه منتظر ورود درخواستی از سمت کاربر می ماند و سپس به آن پاسخ می دهد. به منظور رفع کردن این محدودیت ها، مایکروسافت فریم ورکی را تحت عنوان ASP.NET Web Forms معرفی کرد که در آن هم برنامه نویسی ویژوال قابل انجام بود هم برنامه نویسی بر اساس رویدادها. در قسمت بعدی از این مقاله در رابطه با ASP.NET بیشتر صحبت می کنیم.


ASP.NET چیست؟

ASP.NET یک فریم ورک برای ساخت برنامه های تحت وب است که توسط مایکروسافت معرفی شد. این فریم ورک بر اساس CLR کار می کند. با استفاده از زبان های سی شارپ و یا وی بی دات نت و یا هر زبان دیگری می تواند برنامه های تحت وب خود را با استفاده از این فریم ورک ایجاد کیند. فریم ورک ASP.NET از دو مدل برای ساخت برنامه های تحت وب پشتیبانی می کند: Web Forms و MVC.


Web Forms چیست؟

در ابتدای کار، مایکروسافت ASP.NET Web Forms را بر اساس ASP معرفی کرد. با استفاده از این فریم ورک جدید، ساخت برنامه های تحت وب بسیار ساده تر از پیش شد. برنامه نویسی stateful بر اساس پروتوکول HTTP که یک پروتوکول stateless است. این کار با استفاده از یک لایه ی abstraction انجام شد. به علاوه، برنامه نویسی رویدادگرا (Event Driven) با استفاده از این فریم ورک جدید قابل انجام بود. به اینصورت برنامه نویسانی که تجربه ی توسعه ی تحت وب را داشتند به راحتی می توانستند در سطح وب هم کار کنند. در این فریم ورک جدید مباحثی شبیه post back (ارسال داده های وارد شده در یک فرم به همان صفحه ی یکسان) و یا ViewState (که امکان ذخیره کردن داده های درون کنترلها را می دهد) معرفی شدند. در واقع مایکروسافت سعی کرد که مدل برنامه نویس ویژوال و رویدادگرا با به عرصه ی وب وارد کند. این کار با معرفی مجموعه ای از کنترلهای قابل استفاده در ساخت برنامه های تحت وب انجام شد.

 

مزیت های ASP.NET Web Forms:

NET Web Forms با معرفی کنترل هایی ساخت برنامه های تحت وب و در واقع ساخت واسط کاربری آنها را بسیار ساده کرد.
اگر با کدهای HTML به صورت مستقیم کار می کنید، می دانید که ممکن است کدی داشته باشید که در یک مرورگر درست کار کند و در مرورگر دیگری به هم بریزد. کنترل های معرفی شده در NET Web Forms با تشخیص مرورگر کاربر، HTML مورد نیاز را تولید می کند.
بسیاری از کنترل ها شبیه GridView و ListView با معرفی قابلیتی تحت عنوان Data Binding عملیات کار کردن با داده ها را بسیار ساده می کنند.

 

پشتیبانی از ViewState:

همانطور که در قسمت های قبلی این مقاله گفته شد، پروتوکول HTTP یک پروتوکول stateless است. به عبارت دیگر، مقادیر وارد شده در کنترلهای صفحه در هر درخواست و پاسخ ذخیره نمی شوند. ASP.NET Web Forms با معرفی ViewState این مشکل را برطرف کرد. در واقع این قابلیت می تواند آخرین مقادیر وارد شده در هر کنترل را در قالب یک فیلد ذخیره کند و پروتوکول HTTP را به صورت stateful به ما تحویل دهد.


برنامه نویسی رویداد گرا(Event Driven):

برنامه نویسی رویدادگرا به صورت وسیع در ساخت برنامه های ویندوزی مورد استفاده قرار می گیرد. مایکروسافت سعی کرد که با معرفی مفاهیمی شبیه code behind، post back و viewstate این متدولوژی برنامه نویسی را وارد دنیای وب کند. در واقع با استفاده از برنامه نویسی رویدادگرا، برنامه نویس فقط کافی است که کنترلی را بر روی صفحه قرار دهد، روی آن دابل کلیک کند و سپس کد مربوط به رویداد click را بنویسد.


سرعت توسعه ی برنامه:

با استفاده از قابلیت های جدید برنامه نویسی در ASP.NET Web Forms، سرعت توسعه ی برنامه به شدت افزایش می یابد. مفاهیمی شبیه برنامه نویسی رویداد گرا، ViewState و حتی مجموعه ای غنی از کنترل ها، کار برنامه نویسی وب را به شدت آسان می کند.


نیاز به یادگیری کمتر:

برنامه نویسان تحت ویندوز با دانش ی که از برنامه نویسی ویندوز دارند می توانند در وب برنامه نویسی کنند. برنامه نویسی در وب با استفاده از ASP.NET Web Forms نیاز به دانش خیلی کمی در رابطه با HTML و JavaScript دارد.

 

معایب ASP.NET Web Forms:

- معماری پروژه: در فریم ورک Web Forms هیچ معماری یکپارچه ای برای ساخت برنامه وجود دارد. برنامه نویس می تواند بر اساس سلیقه ی خود یک معماری را انتخاب کند. اغلب افراد برنامه نویسی سه لایه را بر اساس یکی از الگوها شبیه MVP انتخاب می کنند. عده ای هم ممکن است بدون استفاده از یک معماری خاص، تمام کد برنامه را درون code behind قرار دهند که واقعاً کار خطرناکی ست.


- Unit Testing: در فریم ورک Web Forms کار Unit Testing بسیار دشوار و گاهی غیر ممکن است. به دلیل گره خوردن مستقیم code behind با Event Handler ها کار Unit Testing بسیار سخت خواهد شد. در بسته ی Unit Testing در وبسایت پرووید در رابطه با Unit Testing صبحت کردیم. جالب است بدانید که حتی با استفاده از Moq نیز کار Unit Testing در Web Forms بسیار دشوار خواهد بود.


- افت کارایی: همانطور که قبلا گفتیم در فریم ورک Web Forms با معرفی ViewState مشکلاتی که در ASP وجود داشت رفع شدند. اما استفاده از ViewState هم باعث افزایش حجم صفحه ی ارسالی به مرورگر کاربر می شود هم کارایی را کاهش می کند. به علاوه، پهنای باند بیشتر مصرف می گردد.


- قابلیت استفاده مجدد Reusability: قابلیت استفاده مجدد در Web Forms بسیار پایین است. به همین دلیل اگر قصد دارید که در برنامه ی خود از این موضوع استفاده کنید، شاید Web Forms انتخاب مناسبی نباشد.


- کنترل کمتر بر روی HTML خروجی: در Web Forms کنترل کمتری بر روی HTML نهایی که به سمت مرورگر کاربر ارسال می شود داریم. زمانی که در قسمت های بعدی این مقاله از MVC صحبت کردیم، خواهید دید که این موضوع در MVC کاملاً برعکس است.


- پشتیبانی کمتر از توسعه ی موازی پروژه: منظور از توسعه ی موازی پروژه این است که گروهی از برنامه نویسان به طور همزمان بر روی پروژه کار کنند. عده ای بر روی فایل های ASPX و تعدادی بر روی code behind پروژه کار کنند. در فریم ورک Web Forms این کار عملاً دشوار و گاهی غیر ممکن است.

 

۱۳۹۷/۰۸/۲۴     ۱۰:۲۵:۲۱
Top