# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > تحلیل و طراحی نرم افزار > حرفه ای: MVC چیست

## sky_in_iran

سلام به دوستان
اگه كسي اطلاعاتي درباره *Model-View-Controller* داره ممنون ميشم من و راهنمايي كنه . كه چي هست به چه دردي مي خوره و اگه نمونه كدي دارن بزاريد ممنون ميشم :تشویق:

----------


## saed2006

http://softprojects.org/fa/KB/Articl...toduction.aspx

----------


## محمدامین شریفی

> سلام به دوستان
> اگه کسی اطلاعاتی درباره *Model-View-Controller* داره ممنون میشم من و راهنمایی کنه . که چی هست به چه دردی می خوره و اگه نمونه کدی دارن بزارید ممنون میشم


همانطور که می دانید فایل aspx از دو قسمت ِ کدنویسی (VB/CS) و یک قسمت ِ design طراحی شده است.
در MVC قسمت ِ کد نویسی aspx در controller و قسمت ِ design در view نوشته می شود. در ضمن کلاس های CS یا VB که تحت ِ عنوان ِ logic layer می شناسیم و و or-m هایی مثل ِ (nhibernate,ado.net entities و ... Linq to و دیگر object relational model ها ) که تحت ِ عنوان ِ  data acsess می شناسیم در قسمت ِ Model نوشته می شود.
در خصوصیات ِ برنامه نویسی، شبیه ِ ASP.NET classic می باشد ولی مزیت های و معایب مخصوص ِ خودش را دارد.
نکته قابل ِ توجه این است که MVC به هیچ وجه جایگزین ِ ASP.NET classic نیست و نخواهد شد.

موفق باشید.

----------


## rajabpour

MVC مخفف سه کلمه Model (مدل ) و View(نمایشگر) و controller(  کنترلگر) است. فریم ورک ASP.NET که از آن برای ساختن برنامه های وبی با MVC  استفاده می شود.
 برخی از برنامه نویسان، همچنان از ASP.NET که بر مبنای فرم های وب و  Postback است، استفاده می کنند، برخی از ویژگی های MVC سود می برند و بعضی  ها هم دو پلت فرم را ترکیب می کنند و این موضوع بیانگر ایت است که هیچکدام  از پلت فرم ها ناقص یکدیگر نیستند. در واقع MVC بر روی معماری های چند لایه  ای جهت تفکیک بخش های مختلف برنامه (بخش های منطقی برنامه مانند داده ها،  مجوزها، کنترل صحت داده ها و لایه های مرتبط با کاربر نهایی) قرار می گیرد.  مفهوم تازه ای نیست، خیلی وقت است که در جاوا، PHP و بسیاری پلت فرم های  دیگر از این الگوها برای طراحی نرم افزار استفاده می شود. اما برای طراحان و  توسعه دهندگان ASP.NET تازگی دارد.
*اجزای تشکیل دهنده ی MVC*
*1-* *Model(مدل):* قسمتی از برنامه  کاربردی است که مسئول بازیابی داده از بانک اطلاعاتی، ذخیره آن، تبدیل آن  به شی یا آبجکت ها و پیاده سازی منطق برنامه برای داده های دامنه ی مسئله  است. در حقیقت بار اصلی معماری MVC بر عهده ی این بخش است. مثلاً یک آبجکت  Product  ممکن است اطلاعات را از بانک اطلاعاتی بازیابی کرده، بر روی آنها  عملیاتی را انجام دهد و سرانجام نتیجه را در بانک اطلاعاتی ئ در جدول  Products ذخیره کند.
*۲-* *view(نمایشگر):* اجزایی از برنامه  است که واسط کاربری برنامه (UI) را می سازد. معمولاً این UI از داده های  مدل ساخته می شود. در واقع نقطه پایان برنامه کاربردی است . به کاربر نتایج  عملیات و بازیابی و نمایش داده از طریق برقراری ارتباط با دو بخش دیگر؛  یعنی مدل و کنترلگر را نشان می دهد.برای مثال، هنگامی که کاربر در فرم ورود  به سیستم رمز عبور خود را وارد می کند، اکثر برنامه نویسان در همان فرم  اقدام به چک کردن رمز عبور می کنند که این عمل مغایر با قوانین MVC است. در  MVC هنگامی که کاربر رمز عبور را کرد، رمز عبور بدون هیچگونه اعمالی به  بخش های دیگر فرستاده می شود و فقط یک نتیجه ساده یا خبر از بخش های دیگر  دریافت می کند که از طریق آن اجازه ی ورود به برنامه داده می شود.
*۳-* *Controller(کنترلگر):* اجزایی از  برنامه هستند که مدیریت تعامل با کاربر را بر عهده دارند. می توان گفت که  واسط بین مدل و نمایشگر می باشند؛ یعنی با مدل کار می کند و در انتها  نمایشگری را برای نشان دادن واسط کاربری انتخاب می کند. ورودی کاربر را  مدیریت کرده و به آنها پاسخ می دهد و با کاربر تعامل می کند. برای مثال،  کنترلگر عبارت های پرس و جوی بانک اطلاعاتی را مدیریت کرده و آن ها را به  مدل ارسال می کند، وظیفه اجرای پرس و جوها  با مدل است.
*درک الگوی MVC*
 برای درک بهتر MVC شکل زیر معرفی می کنیم، نمودار شکل ۱ اساس الگوی MVC  می باشد.
 تشریح شکل: یک درخواست در شکل بالا مسیر های زیر را می پیماید:
 ۱- کاربر با مرورگر در ارتباط است. آدرس را در مرورگر وارد می کند و یا  یک لینک یا کلید را در صفحه وب کلیک می کند، این نقطه شروع درخواست  است(مرحله ۱ در شکل).
 ۲-  درخواست به کنترلگر فرستاده می شود، آن را اعتبار سنجی می کند و  اجرای درخواست را در مدل الزامی می کند(مرحله ۲ در شکل ).
 ۳- مدل به بانک اطلاعاتی رجوع کرده وداده های بازیابی شده را به کنترگر  می فرستد(مرحله ۳ در شکل ).
 ۴- کنترلگر داده ها را فرمت کرده و آنها را به نمایشگر می فرستند(مرحله ۴  در شکل ).
 ۵-  در مرحله آخر نمایشگر داده های مورد نیاز را دریافت کرده و جواب را  به کاربر باز می گرداند(مرحله ۵ در شکل ).
*چه زمانی برنامه های MVC را ایجاد کنیم؟*
 شما باید در هنگام انتخاب ASP.NET و  ASP.NET MVCبرای ساخت برنامه های  وبی بسیار دقت کنید. MVC جایگزینی برای فرم های وب ASP.NET نیست و شما می  توانید از هر کدام از آنها برای ساخت برنامه های وبی استفاده کنید. اگر شما  یک برنامه وبی بر مبنای فرم های وب دارید، می توانید همچنان آن را به همان  شیوه ی سابق ادامه دهید.
*مزایای برنامه های وبی مبتنی بر MVC*
 -    با تقسیم یک برنامه به سه قسمت مدل، نمایشگر و کنترلگر، مدیریت  برنامه یا پروژه را ساده تر می کند.
 -    از ViewState  و فرم های سروری استفاده نمی کند و از این نظر برای  برنامه نویسانی که تسلط کامل بر رفتار برنامه را می خواهند عالی است.
 -    از الگوی کنترلگر جلو استفاده می کند که درخواست های برنامه را  توسط یک کنترلگر پردازش می کند. این مسئله باعث می شود تا بتوانیم برنامه  هایی را طراحی کنیم که از زیر ساخت های غنی مسیر یابی پشتیبانی می کند.
 -       پشتیبانی بهتری از طراحی و توسعه آزمون محور دارد.
 -    برای برنامه های پشتیبانی شده توسط تیم های بزرگ برنامه نویسان و  زارحی که کنترل بسیار بر رفتار برنامه را می خواهند، بهتر کار می کنند.
*مزایای برنامه های وبی مبتنی بر فرم های وب*
 -    از مدل رویداد استفاده می کند که وضعیت را روی HTTP حفظ می کند.  این روش برای برنماه های وبی با منطق یک خطی مناسب است.
 -       از الگوی کنترلگر صفحه استفاده می کند که به هر صفحه کارایی  تابعی می دهد.
 -    از View State و فرم های سروری استفاده می کند که مدیریت اطلاعات  وضعیت را ساده تر می کند.
 -    برای تیم های کوچک برنامه نویسی که می خواهند با استفاده از صدها  کنترل موجود برای ساخت سریع برنامه وبی استفاده کنند، مناسب است.
 -    عموماً‌برای توسعه وب ساده تر است. زیرا اجرای آن ( کلاس Page،  کنترل ها و …) متمرکز شده اند و معمولاً کد کمتری نسبت به MVC نیاز دارد.
*ویژگی های ASP.NET MVC*
 -    جداسازی وظایف برنماه کاربردی (منطق ورودی، منطق کاری و منطق واسط  کاربری) و امکان تست کردن برنامه و طراحی و توسعه آزمون محور به صورت پیش  فرض. تمام ارتباطات اصلی در MVC بر مبنای واسط است و می توان آن ها را با  اشیای ساختگی Mick  تست کرد. می توانید  ک. نترلگرها را بدون اینکه آنها را  در ASP.NET  اجرا کنید، تست کنید و این باعث افزایش سرعت و انعطاف تست  برنامه می شود. می توانید از هر فریم ورک تست که با فریم ورک Net. منطبق  است برای این کار استفاده کنید.
 -    فریم ورکی توسعه پذیر و قابل اتصال. اجزای اصلی ASP.NET MVC به  گونه ای طراحی شده اندکه به راحتی جایگزین یا سفارشی شوند. می توانید به  سادگی پیاده سازی های خودتان را جایگزین موتور نمایشگر، سیاست های آدرس،  سریالی کردن پارامترهای متدهای عملیات یا سایر اجزا کنید. همچنین ASP.NET  MVC از فریم ورک های تزریق وابستگی و وارونگی کنترل پشتیبانی می کند. به  شما امکان می دهد به جای این که اشیا را توسط کلاس ها بسازید، آنها را از  جایی بیرون از کد مثل فایل های تنظیمات بگیرید و این مسئله تست برنامه را  ساده تر می کند.
 -    نگاشت های قوی آدرس ها که امکان ساخت برنامه هایی با آدرس های با  معنی و جستجو  شدنی (قابل جستجو توسط موتورهای جستجوگر) را می دهدو نیازی  نیست که آدرس ها پسوند فایل داشته باشند، آنها به گونه ای طراحی شده اند که  از الگوهای نامگذاری قابل فهم برای موتورهای جستجوSEO و آدرس های انتقال  وضعیت قابل نمایش REST پیروی کنند.
 -    پشتیبانی برای استفاده از نشانه گذاری در صفحات ASP.NET(فایل های  aspx). کنترل های کاربر (فایل های ascx.) صفحات Master(با پسوند master.)  به عنوان قالب های نمایشگر. شما می توانید از برخی ویژگی های موجودASP.NET   از قبیل صفحات master تو در تو، اسکریپت درونی (<%=%>)، کنترل های  سرور اعلان شده، قالب، انقیاد داده ها، محلی سازی و … در فریم ورک ASP.NET  MVC استفاده کنید.
 -    پشتیبانی از ویژکی های موجود ASP.NET : ASP.NET MVC به ما این  امکان را می دهد تا از ویژگی هایی مانند مجوز فرم و تشخیص هویت ویندوز،  مجوز آدرس ها، عضویت و نقش ها، خروجی و کش کردن داده ها و Session و مدیریت  وضعیت پروفایل، مانیتور کردن صحیح، سیستم پیکر بندی و معماری عرضه کننده  استفاده کنید.




منبع : http://blog.1daneshjou.com/?p=80

----------


## Abalfazl

http://estakhrian.blogfa.com/post-16.aspx

مقاله آموزشی درباره الگوی MVC

----------


## superhacker2009

فیلم های آموزشی MVC رو میتونین با نصب IDM که همون نرم افزار مدیریت دانلود هستش دانلود کنید کافیه به این سایت یه سری بزنین  :قلب:  http://www.asp.net/mvc
در این قسمت فیلم های کم حجمی وجود داره که mvc 3  رو توضیح میده سیلورلایت هم برای دیدن بصورت آنلاین نیاز هستش :
*1. Introduction*

http://www.pluralsight-training.net/...net-mvc3-intro*2. Controllers*


http://www.pluralsight-training.net/...net-mvc3-intro

*3. Razor Views*


http://www.pluralsight-training.net/...net-mvc3-intro

*4. Working with Data: Entity Framework*

http://www.pluralsight-training.net/...net-mvc3-intro
*5. Working with Data: Validation and Mapping*

http://www.pluralsight-training.net/...net-mvc3-intro

*6. Javascript and Ajax*

http://www.pluralsight-training.net/...net-mvc3-intro

*
7. Security*
http://www.pluralsight-training.net/...net-mvc3-intro

*8. Leveraging the ASP.NET Runtime*
http://www.pluralsight-training.net/...net-mvc3-intro

*9. Unit Testing*
http://www.pluralsight-training.net/...net-mvc3-intro

*10. Deployment & Configuration*

http://www.pluralsight-training.net/...net-mvc3-intro

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

http://media.ch9.ms/teched/na/2011/wmv-hq/DEV333-HD.wmv

----------


## sedaaghat

سلام
از یه نفر در مورد mvc پرسیدم به من گفت اگه میخای یاد بگیری باید قبلش سی شارپ رو یاد گرفته باشی .میخاستم بپرسم این حرفش درسته یا نه؟ من سی شارپ رو در حد ابتدایی بلدم.با چیزای که اینجا خوندم mvc به php یا asp مربوط میشه و منم میخام php یاد بگیرم .واقعا ارتباطش به سی شارپ چیه؟
ممنون

----------


## cups_of_java

اگه میخواید MVC رو یاد بگیرید حداقل باید یه زبان برنامه نویسی بلد باشید و برنامه نوشته باشید... برنامه هایی که واسط کاربردی داره.... حالا چه وبی چه غیر وبی....
MVC هیچ ربطی به یک زبان خاص نداره... یک الگوی کلیه... یک فلسفست و تو همه زبان ها هم وجود داره و اعمال و پیاده سازی شده.

----------


## iran662

:تشویق:  :تشویق:  :تشویق:

----------

