وبلاگ تفریحی

دانلود آهنگ، دانلود فیلم، دانلود عکس، اس ام اس

وبلاگ تفریحی

دانلود آهنگ، دانلود فیلم، دانلود عکس، اس ام اس

بررسی Local Storage - قابلیت جدید HTML5

               

                    


 نگاهی به ASP.NET MVC و بررسی ساختار آن                                 


            

8 اردیبهشت 1391

MVC یا Model View Controller معماری بود که مایکروسافت در سال 2009 از آن در پیاده سازی فریم ورکی بر روی بسترASP.NET استفاده کرد. همونطور که می دانید .Net Framework  پلتفرمی برای ساخت انوع نرم افزار ها، از جمله نرم افزار های Desktop، Web، Console و ... می باشد و از زیرساختی خاص وهزاران کلاس پایه برای رفع نیاز های کلی برنامه نویسان تشکیل شده است.

بر روی بستر دات نت، پلتفرم و زیر ساخت دیگری به نام ASP.NET Framework و به منظور تولید نرم افزارهای تحت وب تولید شد و در نهایت، چیزی که عملا ما با آن ها سر و کار داریم، دو فریم ورک WebForm و MVC هستند که مایکروسافت آن ها بر روی  فریم ورک ASP.NET توسعه داد. به طور مثال کلاس های مربوط که Caching، Authentication، Authorization و بسیاری موارد دیگر در Framework ASP.NET قرار دارند و WebForm و MVC از آن ها بهره می گیرند.

اوایل ظهور این فریم ورک این دیدگاه ایجاد شده بود که آینده از آن MVC است و مایکروسافت قصد دارد Asp.net  را به سمت این فریم ورک سوق دهد، اما همانطور که خود مایکروسافت هم بار ها بیان کرده، MVC جایگزینی برای WebForm نیست و هر دوی این ها در آینده توسعه خواهند یافت. اما واقعا چرا با وجود WebForm چنین فریم ورکی توسعه داده شد؟!

اگر تا حدی با برنامه نویسی چند لایه آشنایی داشته باشید، مطمئنا نام معماری 3 لایه یا N لایه (N Tier/Layer) زیاد به گوشتان خورده است. هدف از پیاده سازی یک نرم افزار به صورت چند لایه، شکستن بخش های مختلف نرم افزار به قسمت های کوچکتر و توسعه مجزای هر یک از واحد ها برای افزایش Maintainability و Reliability  در نرم افزار است. MVC نیز بر همین اصل تایید دارد اما به شکلی بسیار قوی تر. در MVC اجزای مختلف به سه بخش کلی Model، View و Controller تقسیم می شوند و این سه بخش به گونه ای پیاده سازی شده اند که کمترین وابستگی را به یکدیگر را داشته باشند (Seperation Of Concern)، که به دنبال خود همان دو ویژگی مذکور (Maintenance و Reliability) و علاوه بر آن افزایشTest Ability  (در توسعه Test Driven Development) نرم افزار را به دنبال خواهد شد.

یکی از ویژگی های مهمی که برای MVC مطرح می شود قابلیت Unit Testing بالای آن است. Unit Testing به معنای تست واحد های مجزای یک نرم افزار، مستقل از دیگر واحد ها می باشد. بطور مثال اگر قرار باشد Business Logic یک نرم افزار مورد تست و ارزیابی قرار گیرد و از کارکرد درست آن اطمینان حاصل شود، این امکان توسط این نوع معماری و به دلیل ساختار آن به شکل بهتر و گسترده تری فراهم می شود.

همانطور که ذکر شد MVC شامل سه قسمت Model،  View و Controller می باشد:

  

Model: مدل که شاید بتوان گفت بخش بزرگ و اساسی این نوع معماری را تشکیل می دهد، تمامی Logic یک نرم افزار را در خود جای داده است. در واقع Domain Model یک نرم افزار که شامل کلیه Business Logic ها، Rule ها،Entity  ها و واحد های مختلف برای سرویس دهی به این اجزا می باشد، در این بخش قرار دارند.

View :View یا همان UI بخشی است که فقط مسئول نمایش اطلاعات Model بر روی فرم های وب (در اینجا) می باشد. دقت کنید که از واژه "فقط" استفاده کردم، به این معنی که View هیچ دخالتی در هیچ پردازشی بر روی Model ندارد و نباید داشته باشد. مقایسه کنید با مدل Code Behind در WebForm ها که همیشه بخشی از Logic یک نرم افزار در آن قرار می گرفت و شاید عمده دلیلی که در View های MVC چیزی به نام Code Behind وجود ندارد همین است.

Controller: کنترلر وظیفه برقرای ارتباط بین Model و View را بر عهده دارد، در واقع این Controller است که با دریافت پارامتر هایی از ورودی (فرم های وب، Query string و...) و انجام پردازش بر روی Model و در ارسال اطلاعات نهایی به View برای نمایش، جریان بین این دو را کنترل می کند.

حال که تا حدی با ساختار این معماری آشنا شدید بد نیست که کمی در مورد تاریخچه آن نیز بدانید:

الگوی MVC اولین بار در سال 1987 توسط فردی به نام Trygve Reenskaug با نام اولیه یThing Model View Editor مطرح شد و خیلی نگذشت که نام به آن Model View Controller تغییر داده شد. MVC برای اولین بار در زبان Small Talk به عنوان یک GUI Pattern مورد استفاده قرار گرفت و پس از سال ها رشد و باز شدن پای MVC به دنیای وب، امروزه در فریم ورک های معروفی همچون Ruby On Rail، Merb و Django مورد استفاده قرار می گیرد.

Mono Rail اولین فریم ورک MVC برای Asp.net بود که به صورت Open Source منتشر شد و در نهایت خود مایکروسافت بود که توسط Scott Guthrie جدید ترین و مدرن ترین فریم ورک خود را برای Asp.net در سال 2009 منتشر ساخت.

اما برخی از مزایای WebForm و MVC نسبت به هم از زبان خود مایکروسافت:

Advantages of an MVC-Based Web Application

The ASP.NET MVC framework offers the following advantages:

  • It makes it easier to manage complexity by dividing an application into the model, the view, and the controller.
  • It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.
  • It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure. For more information, see Front Controller on the MSDN Web site.
  • It provides better support for test-driven development (TDD).
  • It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.

 

Advantages of a Web Forms-Based Web Application

The Web Forms-based framework offers the following advantages:

  • It supports an event model that preserves state over HTTP, which benefits line-of-business Web application development. The Web Forms-based application provides dozens of events that are supported in hundreds of server controls.
  • It uses a Page Controller pattern that adds functionality to individual pages. For more information, see Page Controller on the MSDN Web site.
  • It uses view state or server-based forms, which can make managing state information easier.
  • It works well for small teams of Web developers and designers who want to take advantage of the large number of components available for rapid application development.
  • In general, it is less complex for application development, because the components (the Page class, controls, and so on) are tightly integrated and usually require less code than the MVC model.

 

البته برای افرادی که تا کنون با WebForm کار کرده اند، ممکن است این تصور ایجاد شود که عدم وجود کنترل های Server Side و حتی event ها در Asp.net MVC، نوع برنامه نویسی با این فریم ورک باید بسیار سخت تر باشد، اما این اطمینان را می دهم که واقعا به این شکل نیست و اگر در MVC زیر ساخت های لازم فراهم شود، سرعت توسعه در آن چندین برابر WebForm ها خواهد بود.