Home / مقالات / آشنایی با ASP.Net MVC

آشنایی با ASP.Net MVC

آشنایی با ASP.Net MVC

در این مقاله به بررسی MVC و تفاوت آن با ASP.NET می پردازیم و ویژگی ها و مزایایی که در این الگوی برنامه نویسی جدید وجود دارد را مورد بررسی قرار می دهیم.

ASP.NET MVCچیست؟

Model-View-Controller) MVC) یک الگوی برنامه نویسی است که برنامه را به سه قسمت اصلی زیر تقسیم می کند.

  1. Model
  2.     View
  3.     Controller

فریم ورک ASP.NET MVC یک الگوی برنامه نویسی جدید و جایگزین الگوی برنامه نویسی ASP.NET Web Forms برای ایجاد وب سایت، می باشد. فریم ورک ASP.NET MVC یک فریم ورک سبک و آزمون پذیر می باشد که در خود ویژگی های ASP.NET مانند master page و membership-based authentication را به همراه دارد. فریم ورک MVC در اسمبلی System.Web.Mvc تعریف شده است که از همه ی کنترلرهای HTML، جاوا اسکریپت و CSS پشتیبانی میکند. همچنین این فریم ورک برای پروژه هایی که به صورت تیمی بر روی آنها کار می شود مناسب تر است.

مزایای استفاده از وب سایت هایی که براساس MVC طراحی شده اند

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

_ باعث می شود که بتوانید یک برنامه ی  پیچیده را به راحتی با استفاده از تقسیم برنامه به سه بخش Model، View و Controller مدیریت کنید.

_ در آن از view state و فرم های سمت سرور (server_based_forms) استفاده نمی شود.

_ پشتیبانی از تمام کنترل های ,HTML  JavaScript  و  CSS.

_ پشتیبانی بهتر از Test-Driven Development (TDD) .

_ این فریم ورک از وب سایت هایی که به صورت گروهی (Team work) برنامه نویسی می شوند به خوبی پشتیبانی می کند و به طراحان (designer) اجازه می دهد که بر روی رفتار برنامه، سطح بالاتری از کنترل را داشته باشند.

_ به صورت پیش فرض از Facebook و google پشتیبانی می کند.

_ برنامه های بزرگ را به چند Area تقسیم می کند که باعث می شود مدیریت آنها آسان باشد.

رفرنس فضاهای نام در ASP.NET MVC

_ System.Web.Mvc

این فضای نام شامل کلاسها و اینترفیس هایی است که ازMVC  در برنامه های تحت وب پشتیبانی میکند. همچنین این فضای نام کنترلرها ، controller factories ، action results ، views ، partial views و model binders را نمایش میدهد.

_ System.Web.Mvc.Ajax

این فضای نام شامل کلاسهایی میباشد که از Ajax scripts در برنامه های تحت ASP.NET MVC  پشتیبانی میکند. این فضای نام همچنین از گزینه های مربوط به تنظیمات Ajax علاوه بر Ajax scripts پشتیبانی می کند.

_ System.Web.Mvc.Async

این فضای نام شامل کلاسها و اینترفیس هایی میباشد که از asynchronous action در ASP.NET MVC application پشتیبانی می کند.

_System.Web.Mvc.Html

این فضای نام شامل کلاسهایی می باشد که به اجرای کنترلهای HTML در برنامه های MVC کمک میکند. این فضای نام شامل کلاسهایی میباشد که از form ، input control ، link ، partial view و validation پشتیبانی می کند.

یک Solution در ASP.NET MVC به سه فولدر کوچکتر با Model ، View و Controller تقسیم می شود همچنین فولدرهای دیگری برای فایل های script و App_Start  و چیزهای دیگر در پروژه وجود دارد.

  • Model

Model برای ذخیره اطلاعات کلاسها (Data Classes) استفاده می شود که ممکن است این کلاس با استفاده از LINQ به SQL ایجاد شده باشد ، یا Entity Framework باشد یا ممکن است به سرویس های  WCF یا هر تکنولوژی دیگری ارجاع داده شده باشد. در نهایت  Model برای نمایش اطلاعات یک View/Partial View  مورد استفاده قرار می گیرد.

  •  View

فولدر View صفحاتی از نوع view و partial view را ذخیره می کند که هر کدام از آنها برای action مشخصی در Controller تعریف شده است. فولدر مربوط به view شامل یک فولدر به نام shared folder می باشد که صفحات و user controlهایی که در داخل آن وجود دارد به طور مشترک در دسترس همه ی کنترلرها قرار می گیرد. هر در خواستی که از طرف action method ها برای یک صفحه ی  view یا partial view فرستاده می شود در صفحه ی extention که در داخل shared folder قرار دارد نیز بررسی میشود.

  • Controller

Controller برای ذخیره سازی Business Logic Class مورد استفاده قرار میگیرد. کنترلرها مجموعه ای از کلاسها و child  کلاسها از کلاس System.Web.Mvc.Controller می باشد. یک کلاس کنترلر شامل چند متد از نوع Action method می باشد که وظیفه اش برگرداندن یک view ، partial view ، Content ، JASON Data و … است.

Action

[Action] Action ها یک نوع مشخص از متدها هستند که برای انجام کار مشخصی در آنها کدنویسی می کنیم و نتیجه را به کاربر برمیگرداند که نتیجه ی موردنظر میتواند در قالب یک page یا partial page (user controlها) باشد. هر action  دو نوع HTTP Request را در خود نگه می دارد.

  1. [HttpGet]

[HttpGet] action   برای کنترل و مدیریت درخواست هایی است که به صورت مستقیم از طرف کاربر به برنامه ارسال می شود و در واقع می توانیم بگوییم این درخواست ها برای اولین بار به یک Action method ارسال می شود.

  1.  [HttpPost]

این نوع actionها تنها زمانی صدا زده می شوند که از قبل یک view در سمت client وجود داشته باشد و کاربر از یک دکمه که در قسمت html طراحی شده است برای ارسال اطلاعات استفاده کرده باشد. بنابراین زمانی که این نوع از actionها فراخوانی میشوند تمامی control’s valueهایی که در یک شی از نوع FormCollection از فرم HTML برگردانده خواهد شد.

یک action ممکن است از چندین نوع type بازگشتی برای برگرداندن اطلاعات و مقادیر مختلف به کاربر استفاده کند. ما انواع مختلفی برای برگرداندن نتیجه از action  متد به کاربر داریم اما در بیشتر مواقع از ActionResult استفاده میکنیم زیرا این نوع از actionها یک نوع مادر برای همه آنها محسوب می شود و انواع دیگر actionها می توانند در یک Action Method بعنوان مقدار بازگشتی مورد استفاده قرار بگیرند.

ActionResult یک کلاس مجازی است که میتواند چندین subtype در خود داشته باشد.

Areaها در ASP.NET MVC

ASP.NET MVC 2.0 Microsoft یک ویژگی جدید به نام Area در نرم افزارها و برنامه هایی که با استفاده از  mvc نوشته شده است ایجاد کرده است. Areaها برای تقسیم کردن یا “isolate” مدل های یک برنامه ی بزرگ به چند بخش کوچکتر یا جداگانه مورد استفاده قرار می گیرد.

هنگامیکه می خواهید یک  area را به پروژه ای اضافه کنید، یک ریشه (ruote) برای آن در فایل AreaRegistration تعریف می شود. Ruote مورد نظر در خواست های مربوط به area را با توجه به URL آنها به area ارسال میکند. برای ثبت ruoteهای area ها شما باید کد زیر را در فایل Global.asax اضافه کنید تا  به صورت خودکار ruote های  area در فایل AreaRegistration پیدا می کند.

** binding **

  1. Bindingداینامیک

Bindingداینامیک، هنگامی اتفاق می افتد که ما یک شی را به یک شی از جنس کلاس ViewResult  پاس دهیم تا یک شی از جنس view  باز گرداند اما نوع شی موردنظر را در صفحه ی view تعریف نکرده ایم. بنابراین میتوانیم از این شی بوسیله ی reference آن و با توجه به  DLR استفاده کنیم. اما هنگامیکه در حال استفاده از آن با استفاده از property مدل در viewهستیم نمیتوانیم از intelligence که در Visual Studio وجود دارد استفاده کنیم در نتیجه ما تنها زمانی میتوانیم یک عبارت داینامیک بنویسیم که تنها در  “زمان اجرا”  ، اجرا شود.

  1. Strongly typed binding

Strongly typed binding هنگامی رخ میدهد که ما یک شی را به یک شی از جنس کلاس ViewResult  پاس دهیم تا یک view را برگرداند اما قبل از آن نیاز داریم که نوع شی موردنظر را در صفحه ی view تعریف کنیم بنابراین میتوانیم این شی را با اطمینان خاطر کنترل و مدیریت کنیم. همچنین میتوانیم این شی را در view استفاده کنیم و از intelligence که در Visual Studio وجود دارد نیز بهره بگیریم.

View Engineها

View Engineها مسئولیت نمایش کدهای HTML موجود در viewها در صفحه مرورگر را بر عهده دارند. الگوی view engine برای اجرا syntax متفاوتی دارد. اخیرا تعدادی view engine در MVC در دسترس قرار گرفته است که بهترین view engineها Razor ، ASPX و ASP.NET هستند همچنین برخی از third-party View Engineها مانند Spark, NHaml هم در MVC پشتیبانی میشوند.

ASPX

ASPX اولین view engine در mvc می باشد. Syntax مربوط به نوشتن viewها در این موتور مانند syntax موجود در ASP.NET Web Formها می باشد. ما نیاز داریم هنگامیکه میخواهیم کدی را در سمت سرور(server-side) بنویسیم یا نیازمند فراخوانی   object property یا متدهای view و والد این متدها هستیم  از “<%: %>” استفاده کنیم. ما تعداد زیادی view extension  برای صفحات داریم که همه ی آنها برای زبانهای server-side ، C# و VB یکسان است.

۱- aspx : .aspx یک extension در صفحه view میباشد که در ASP.NET web site نیز چنین صفحه ای وجود داشت.

۲- ascx : .ascx یک extension برای یک partial view در ASP.NET MVC میباشد که در ASP.NET از آن بعنوان control user استفاده می کردیم.

۳- master : .master یک extension برای Master Page میباشد که با نامی مشابه در ASP.NET نیز موجود بود.

RAZOR

Razor view engine یک view engine پیشرفته میباشد که توسط Microsoft در ASP.NET MVC ارائه شده است و اولین بار در نسخه ی  MVC 3 بکار برده شد. درRazor از کاراکتر  “@” به جای “<%: %>” در aspx’s View Engine استفاده میشود. درRazor نیازی نمیباشد که مشخص کنید که کد شما کجا بسته شده است زیرا این view engine بطور هوشمند در هنگام اجرا تشخیص خواهد داد که کدام المان برای نمایش و کدام المان ها مختص کد هستند.

به نظر بسیاری از برنامه نویسان Razor بهترین view engine در mvc میباشد چرا که کدنویسی در آن بسیار خواناتر و تمیزتر از سایر view engine میباشد. این view engine کامل ترین نوع view engine توسط unit testing frameworks شناخته شده است.

این view engine به صورت پیش فرض در MVC 3.0, MVC 4.0 و همچنین در MVC 5.0 برای view page تنظیم شده است. ما دو نوع صفحه ی extension دیگر در C#/VB  داریم  که میتوانیم از آنها نیز برای ایجاد view, partial view یا Layout (Master) pages استفاده کنیم.

_ .cshtml:  از زبان C# بعنوان زبان پیش فرض در برنامه های ASP.NET MVCبرای انواع مختلف صفحات مانند  View, partial page و layout page استفاده می کنیم.

_ .vbhtml : ما از زبان VB بعنوان زبان پیش فرض در برنامه های ASP.NET MVC برای انواع مختلف صفحات مانند  View, partial page و layout page استفاده می کنیم.

 

About modir

Check Also

فیبر نوری چیست و چگونه کار می‌کند؟

هرجا که صحبت از سیستم های جدید مخابراتی، سیستم های تلویزیون کابلی و اینترنت باشد، …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *