معماری mvc یا همان model view controller که اخیراً توسط مایکروسافت در asp.net به کار گرفته شده است در واقع انقلابی در زمینه بهبود پروژه های تحت وب بود. جهت آشنایی بیشتر با مزایای استفاده از این معماری در asp.net کافی است تکنولوژی قدیمی تر یعنی asp.net webforms را با آن مقایسه کنیم:
1-در asp.net webforms طراحی بهینه و ساختارمند و همچنین رعایت مسائل امنیتی بسیار پیچیده تر گاهاً غیر ممکن بود. در حالی که با استفاده از معماری mvc بسیاری از این موارد به سهولت انجام می پذیرد.
2- در asp.net mvc انعطاف و قابلیت کنترل بسیار زیادی برای برنامه نویسان فراهم است چرا که در تکنولوژی webforms در بیشتر مواقع برنامه نویسان از مجموعه ای از ابزارهای فراهم شده استفاده میکردند اما در mvc هیچگونه ابزار و واسطی که ماهیتاً همراه با محدودیت هستند وجود ندارد و برنامه نویسان کاملاً به صورت دستی اقدام به طراحی و پیاده سازی میکنند .
3- در نهایت باتوجه به حذف asp.net webforms در نسخه 6 net. استفاده از آن یک اشتباه بزرگ محسوب میشود .
4- mvc یک معماری است نه یک تکنولوژی، بنابراین از ریسک آزاد است و در آینده مانند asp.net webforms به تاریخ نخواهد پیوست .
در حال حاضر
وب وان از آخرین نسخه معماری mvc در c# asp.net و موتور نمایش razor که از سوی شرکت مایکروسافت که از قوی ترین ها در زمینه انواع علوم رایانه ای است، استفاده میکند. با توجه به اینکه visual basic asp.net توسط شرکت های بسیار اندکی استفاده میشود و همچنین در نسخه 6 net. نیز حذف شده است در اینجا مورد بررسی قرار نمی گیرد. لازم به ذکر است visual basic طبق بررسی های انجام گرفته در واحد فنی هیچگاه در
وب وان مورد استفاده قرار نگرفته است.
تاریخچه mvc :
معماری mvc در دهه 70 میلادی معرفی شد اما در آن زمان پیاده سازی برنامه های stand alone با استفاده از این معماری چندان مورد استقبال برنامه نویسان قرار نگرفت. اما با ظهور اینترنت و برنامه های مبتنی بر وب، این معماری شانس دوباره ای یافت. asp.net mvc فریم ورک مبتنی بر معماری mvc مایکروسافت میباشد که از دلایل محبوبیت این معماری نظام بخشیدن به پروژه های
طراحی سایت میباشد. معمولاً به علت همکاری چندین تکنولوژی مختلف با هم در برنامه های مبتنی بر وب ساختار پروژه های بزرگ پیچیده میشوند و اعمال تغییرات و همچنین رفع خطا های پروژه مشکل و زمانبر میشوند که معماری mvc با جداسازی لایه های مختلف برنامه نویسی تا حد زیادی این مشکل را رفع کرده است. از دیگر مزایای این فریم ورک میتوان به کنترل کامل بر روی html نهایی، پشتیبانی از فریم ورک های گوناگون برای unit testing ، کنترل بر روی آدرس های url و تعامل راحتتر با فریم ورک های javascript اشاره کرد.
مقایسه asp.net mvc با php symfony
باتوجه به اینکه شرکت های زیادی نیز وجود دارند که از php استفاده میکنند، به مقایسه asp.net و php در دو معماری مشابه بر اساس کلیدی ترین فاکتور ها می پردازیم:
1- سرعت در مقایسه های مختلف انجام شده و طبق بررسی ساختار این دو، php برای پروژه های متوسط به پایین سرعت بیشتری دارد اما برای پروژه های متوسط و روبه بالا سرعت asp.net بیشتر است. لازم به ذکر است همیشه پروژه ها در حال رشد و بزرگتر شدن هستند بنابراین در نهایت می بایست آینده را مورد توجه قرار داد. در بسیاری موارد شبکه اجتماعی facebook که با php اجرا شده است جهت مثال پروژه های بزرگ بیان میشود اما لازم به ذکر است در facebook از نسخه تغییر یافته php و همچنین کامپایلری متفاوت استفاده شده است. بنابراین این مثال صحیح نیست. برای asp.net در این زمینه میتوان شبکه اجتماعی myspace را مثال زد.
2- امنیت باتوجه به اینکه php به صورت متن باز است بنابراین یافتن نقاط ضعف در آن بسیار آسان بوده و بیشتر در معرض آسیب است. از طرفی دیگر با گذشت زمان قطعاً در نسخه های مختلف php و asp.net ضعف های امنیتی آشکار میگردد و این در حالی است که با توجه به اینکه asp از net. استفاده میکند که به صورت مستقل بر روی سیستم عامل ویندوز وجود دارد و همگام با بروز رسانی خودکار ویندوز نسخه net. نیز بروز میگردد و در نتیجه ضعف های شناخته شده نیزخودکار برطرف میگردند اما در php می بایست به صورت دستی این بروز رسانی انجام گردد و علاوه بر آن معمولاً نیاز به تغییراتی جهت سازگاری با بروز رسانی های جدید است اما در net. نیازی به انجام تغییرات نیست و به صورت خودکار انجام میشود. این قابلیت با نام backward compatibility شناخته شده است.
3- ساختار در asp.net به اجبار طراحی شیء گرا خواهد بود اما در php ممکن است طراحی شیء گرا مورد استفاده قرار نگیرد و در نتیجه ساختاری مستحکم در نظر گرفته نشود.
مزایای استفاده از mvc :
- با تقسیم یک برنامه به سه قسمت مدل، نمایشگر و کنترلگر، مدیریت برنامه یا پروژه آسانتر میشود.
- از viewstate و فرم های
سروری استفاده نمی کند . به همین خاطر برای برنامه نویسانی که تسلط کامل بر رفتار برنامه را می خواهند عالی است.
- از الگوی کنترلگر جلو استفاده میکند که درخواست های برنامه را توسط یک کنترلگر پردازش میکند. این مسئله باعث میشود تا بتوانیم برنامه هایی را طراحی کنیم که از زیر ساخت های غنی مسیریابی پشتیبانی میکند.
- پشتیبانی بهتری از طراحی و توسعه آزمون محور دارد.
- برای برنامه های پشتیبانی شده توسط تیم های بزرگ برنامه نویسان که کنترل بسیار بر رفتار برنامه را می خواهند، بهتر کار میکنند.
mvc به زبان ساده تر :
ام وی سی یک مدل
طراحی سایت است که تکنولوژی به روزی محسوب میشود، این تکنولوژی تحت چهارچوب هایی ارائه شده اند، ابتدا باید بدانیم که mvc چیست؟
ام وی سی از کلمات model ، view، controller گرفته شده است در این نوع از برنامه نویسی همه چیز سر جای خود است بطوری که هر یک از این بخش ها مسئولیت اجرا و یا ارتباط با بخشی را دارند.
در مدل mvc تمامی برنامه نویسان مجبور میشوند تا از این چهارچوب پیروی کنند و همین مسئله باعث میشود تا کدهای نوشته شده خوانایی کامل را داشته باشد و هر برنامه نویسی بتواند کدهای برنامه نویس دیگری را ویرایش نماید در صورتی که در کدنویسی به صورت pure هر برنامه نویسی از روش و عادت خود پیروی میکند.
طراحی سایت توسط mvc دنیای برنامه نویسی را نظم بخشیده است و به برنامه نویسان قدرت بیشتر به همراه سرعت فراوان را هدیه کرده است.
در
طراحی سایت با mvc هر کدام از بخش های گفته شده مسئول اجرای فرآیندی هستند که در زیر به معرفی این موارد پرداخته میشود:
–
لایه model: این لایه از معماری mvc ، مسئول ارتباط با پایگاه داده است به این صورت که شما وقتی می خواهید اطلاعاتی را از پایگاه داده بخوانید و یا اطلاعاتی را استخراج کنید مجبور هستید تا اطلاعات را به لایه مدل بفرستید.
–
لایه view: این لایه همانطور که از نام آن پیداست مربوط به نمایش است، اما نمایش چه چیزی؟
لایه ی view از تکنولوژی
طراحی سایت mvc نزدیکترین لایه به کاربر است و مواردی را که کاربر در صفحه می بیند توسط این لایه تولید میشود و وقتی که می خواهید اطلاعات پایگاه داده را استخراج کرده و به کاربر نمایش دهید باید ابتدا اطلاعات را توسط لایه مدل استخراج کرده و در قسمت view نمایش دهید.
–
لایه controller : این لایه مسئول کنترل است ولی نه به این معنی که مسئول امنیت وب سایت شما باشد. البته با امنیت وب سایت بی ارتباط نیست ولی برای این منظور طراحی نشده است. لایه ی کنترلر در معماری
طراحی سایت توسط mvc به کنترل لینک ها می پردازد یعنی زمانی که کاربر می خواهد به صفحه ای برود، درخواست او به لایه کنترلر ارسال میشود و این لایه فرآیندی که برنامه نویس برای آن لینک تدارک دیده است را نمایش میدهد.
مطالب مرتبط