مزیت های ASP.NET MVC نسبت به ASP.NET WebForms

ASP.NET MVC یک فریم ورک کاملاً جدید برای ساختن اپلیکیشن های ASP.NET است که با هدف جداسازی شفاف لایه های برنامه و قابلیت تست پذیری بالا بوجود آمده است. برنامه نویسان دات نت با استفاده از ASP.NET MVC می توانند رفتار Stateless وب را درک کنند و بر روی کدهای HTML خروجی صفحات خود کنترل کامل داشته باشند. در فریم ورک ASP.NET MVC بر خلاف ASP.NET WebFroms آدرس های صفحات وب سایت به فایل های فیزیکی aspx وابسته نیستند. در این مطلب اشاره ای کوتاه خواهیم داشت به مزیت های کلی ASP.NET MVC نسبت به ASP.NET WebForms :

1) Separation of Concern : فریم ورک ASP.NET MVC شما را مجبور می کند تا یک جداسازی شفاف از قسمت های مهم اپلیکیشن خود داشته باشید. شما باید کدهای مربوط به دسترسی به داده ها را در قسمت Model و کدهای مربوط به رابط کاربری را در قسمت View بنویسید و برای ایجاد ارتباط میان این دو لایه از Controllerها استفاده کنید. با این جداسازی شفاف، پیچیدگی های پروژه کمتر شده و نگهداری پروژه در درازمدت و انجام تغییرات بر روی آن آسان تر می شود.

2) کنترل کامل بر روی HTML خروجی : با استفاده از ASP.NET MVC شما می توانید درخواست های کاربر را پردازش کنید و خروجی مناسب HTML را به مرورگر بفرستید. کدهای HTML خروجی شما کاملاً تمیز هستند و از کدهای عجیب و غریبی که ASP.NET WebForms برای شما ایجاد می کند خبری نیست!

3) ایجاد URLهای RESTful : با کامپوننت های URL Mapping در این فریم ورک می توانید URLهایی بدون پسوند، واضح و قابل جستجو بسازید. این URLها از قوانین نام گذاری REST پشتیبانی می کنند و از نظر SEO در موتورهای جستجوگر امتیاز خوبی می گیرند.

4) قابلیت تست پذیری : یکی از اهداف مهم طراحی فریم ورک ASP.NET MVC قابلیت تست پذیری بوده است. به علت جدا سازی شفاف میان کدهای منطق برنامه و کدهای مربوط به رابط کاربری، تست کردن اجزای مختلف وب اپلیکیشن های ASP.NET MVC آسان است. ASP.NET MVC با تمام فریم ورک های Testing که برای دات نت ساخته شده اند کار می کند.

5) عدم استفاده از PostBack و ViewState : در ASP.NET MVC خبری از فرم های تحت سرور (یا همان runat=»server» معروف) نیست. شما رویدادی به نام PostBack ندارید و حالت کنترل های شما با استفاده از ViewState حفظ نخواهد شد! این یک مزیت است زیرا باعث ایجاد خروجی واضح تر و صفحات سبک تر می شود.

6) آسان تر کردن کار تیمی : به علت جداسازی واضح میان قسمت های مختلف پروژه و قابلیت تست آسان، کار کردن به صورت تیمی را آسان تر می کند. هر یک از اعضای تیم بر اساس نوع تخصص خودشان می توانند قسمت هایی از پروژه (Model یا View) را طراحی کنند و با استفاده از Controllerها ارتباط میان لایه ها را بسازند.

7) اجبار در کدنویسی مبتنی بر الگوی طراحی : ASP.NET MVC توسعه دهندگان را مجبور به رعایت الگوی طراحی MVC می کند. این اجبار باعث ایجاد یک وب اپلیکیشن با ساختار استاندارد می شود که نگهداری و توسعه آن در دراز مدت آسان خواهد بود.

8 ) کدباز بودن : سورس کد فریم ورک ASP.NET MVC با مجوز Ms-pl که یک مجوز اوپن سورس از شرکت مایکروسافت است، منتشر می شود. کدباز بودن این فریم ورک باعث شده تا شرکت مایکروسافت فیدبک های دقیق تر و سودمندتری از جامعه توسعه دهندگان ASP.NET دریافت کند ودر نتیجه باعث پیشرفت سریعتر آن شده است.

9) سرعت بیشتر در بارگذاری صفحات : همانطور که اشاره شده، با حذف کنترل های تحت سرور، PostBack و ViewState که باعث ایجاد کدهای اضافی جاوا اسکریپت می شود، سرعت لود صفحات وب در ASP.NET MVC به مراتب بیشتر از وب فرم هاست.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

ASP.NET MVC; ساخت صفحات وب بدون فرم های وب!

اگر برای توسعه وب اپلیکیشن ها از ASP.NET استفاده می کنید و با نام MVC آشنایی ندارید، پس در حال حاضر از وب فرم ها در ASP.NET استفاده می کنید. اگر نمی دانید منظور از وب فرم ها (WebForms) چیست، این مطلب را بخوانید. شرکت مایکروسافت علاوه بر وب فرم ها، فریم ورک دیگری به نام ASP.NET MVC برای ایجاد وب اپلیکیشن ها در ASP.NET در اختیار توسعه دهندگان وب قرار داده است. این فریم ورک جدید، رایگان و کدباز است و روشی متفاوت از وب فرم ها برای توسعه صفحات وب به توسعه دهندگان ASP.NET ارائه می کند. در این مطلب به معرفی فریم ورک قدرتمند ASP.NET MVC می پردازم.

ASP.NET MVC فریم ورک قدرتمندی برای ایجاد اپلیکیشن های تحت وب است که از الگوی MVC استفاده می کند و توسط مایکروسافت به صورت اوپن سورس توسعه داده می شود. MVC یک الگوی طراحی و مخفف کلمات Model-View-Controller است. فریم ورک ASP.NET MVC الگوی طراحی MVC را در پلت فرم وب اپلیکیشن مایکروسافت یعنی ASP.NET پیاده سازی می کند. این فریم ورک اولین بار در دسامبر 2007 و با یک نسخه CTP توسط مایکروسافت معرفی شد. در مارس 2009 نسخه 1 پایدار آن عرضه شد و یک ماه بعد یعنی در آپریل 2009 شرکت مایکروسافت سورس کد فریم ورک ASP.NET MVC را تحت مجوز MS-PL منتشر نمود.

MVC چیست!؟

mvc

مفهوم کلیدی این فریم ورک همان سه حرف آخر آن یعنی MVC است. پس کمی در مورد آن توضیح می دهم. همانطور که گفتم، MVC یک الگوی طراحی است که همانطور که از نامش پیداست، یک پروژه نرم افزاری را به سه قسمت منطقی Model, View و Controller تقسیم می کند. شاید شما در حال حاضر با معماری 3 لایه نرم افزاری آشنا باشید. اگر اینطور است، شما مشکلی در درک الگوی طراحی MVC نخواهید داشت. MVC مفهوم جدیدی نیست، خیلی وقت است که در جاوا، رابی، PHP و بسیاری پلت فرم های دیگر از این الگو برای طراحی نرم افزار استفاده می شده است. اما خب برای توسعه دهندگان ASP.NET تازه است. سه قسمت اصلی الگوی MVC :

  • Model : مدل قسمتی از یک اپلیکیشن است که وظایف سنگین دسترسی به داده ها، پیاده سازی منطق و موجودیت ها را بر عهده دارد. به طور معمول یک مدل وظیفه Map کردن جداول اطلاعاتی یک دیتابیس را به کلاس های شیء گرا و برعکس را بر عهده می گیرد. احتمالاً شما همین الان هم در پروژه های خود، مدل را پیاده سازی می کنید و به آن لایه دسترسی به داده می گویید! Model باید طوری پیاده سازی شود که به هیچ وجه به رابط کاربری وابستگی نداشته باشد.
  • View : احتمالاً کاربرد View را حدس زده اید! رابط کاربری همان View است. در واقع بخشی که یک کاربر نهایی با آن تعامل خواهد داشت و اطلاعات را نمایش می دهد، View نام دارد. همانطور که رابط کاربری برای Model هیچ اهمیتی ندارد، اینکه چطور داده ها اعتبارسنجی یا ذخیره می شوند یا منطق اپلیکیشن شما چطور پیاده سازی شده است، برای View مهم نیست.
  • Controller : فضای خالی میان Model و View را Controller پر می کند. از آنجا که Model و View هیچ ارتباطی با هم ندارند و برای یکدیگر هیچ اهمیتی قائل نیستند، Controller داده ها را از Model به View برای نمایش به کاربر انتقال می دهد. کنترلرها تصمیم می گیرند که اطلاعاتی که شما وارد کرده اید را به کجا برسانند و همینطور چه چیزی را باید در خروجی مشاهده کنید. در واقع کنترل کننده و هماهنگ کننده میان Model و View است.

فقط به این نکته توجه داشته باشید که در یک اپلیکیشن MVC کامپوننت View فقط جهت نمایش خروجی به کاربر مورد استفاده قرار می گیرد و این Controller است که ورودی ها را از کاربر می گیرد و به آن ها پاسخ می دهد.

چرا از ASP.NET MVC استفاده کنیم؟

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

یکی از مزایای مهم استفاده از متدولوژِی ASP.NET MVC این است که شما را مجبور می کند تا یک جداسازی شفاف میان اجزای برنامه خود ایجاد کنید. این کار باعث می شود که توسعه پروژه در دراز مدت و آزمایش آن به آسانی انجام گیرد. الگوی MVC به شما کمک می کند تا بتوانید از Test Driven Development یا TDD در پروژه خود استفاده کنید. شما را قادر می سازد تا از تست واحد یا Unit Test استفاده کنید. به طور مثال شما می توانید عملکرد یک Controller را بدون اینکه روی ASP.NET اجرا شود، بررسی کنید که این کار عملیات تست واحد را سرعت می بخشد. برای انجام تست، می توانید از هر فریم ورک تست واحدی مثل NUnit استفاده کنید.

URLهای ایجاد شده در یک پروژه مبتنی بر فریم ورک ASP.NET MVC بسیار بسیار واضح هستند و البته برای موتورهای جستجوگر دوستانه (SEO Friendly) هستند. این کار را کامپوننت URL Mapping فریم ورک ASP.NET MVC برای شما انجام می دهد. URLهایی که نیازی به داشتن پسوند aspx یا هر پسوند دیگری ندارند و به آسانی از قوانین SEO و الگوهای نام گذاری REST پشتیبانی می کنند.

نکته ای که شما را خوشحال خواهد کرد این است که فریم ورک ASP.NET MVC از بسیاری از امکاناتی که در حال حاضر در ASP.NET هستند مثل MasterPage, Data Binding, Form/Windows Authorization, Membership/Roles, Data Caching, Session/Profile state management, Health Monitoring پشتیبانی کامل می کند.

نکته ای هم که ممکن است شما را اذیت کند این است که در فریم ورک ASP.NET MVC از برنامه نویسی مبتنی بر رویداد خبری نیست و همچنین نمی توانید از Post Back برای تعامل دوباره با سرور استفاده کنید. ASP.NET MVC برخلاف وب فرم ها که به صورت خودکار و با استفاده از ViewState حالت یک صفحه وب را به صورت مصنوعی حفظ می کنند، از مدل طبیعی بی حالت (=Stateless) وب پیروی می کند. البته این موضوع آنقدرها هم بد نیست چون باعث حذف ViewState می شود و حذف ViewState هم به معنی صفحات سبک تر و در نتیجه لود شدن سریعتر صفحات وب است.

برای شروع ASP.NET MVC به چه چیزهایی احتیاج دارید!؟

منابع این مطلب :

farasun.wordpress.com

برای باخبر شدن از مطالب آینده این وبلاگ مشترک فید فراسان شوید!

farasun.wordpress.com

پ.ن : مطلب مناسبی به زبان فارسی در مورد ASP.NET MVC در وب پیدا نکردم، به همین علت این مطلب را نوشتم. در آینده اگر علاقه مند بودید، در مورد تفاوت های ASP.NET MVC و ASP.NET WebForms خواهم نوشت.

به اشتراک گذاری قطعات کد در شبکه های اجتماعی

استفاده از خدمات شبکه‌های اجتماعی، روزبه‌روز محبوبیت بیشتری بین کاربران اینترنت پیدا می‌کند. شبکه های اجتماعی مثل فیس بوک و توییتر در حال تبدیل شدن به جزئی از زندگی ما کاربران اینترنت شده است. این حرف اشتباه نسیت اگر بگوییم بعد از جستجو و ایمیل، شبکه های اجتماعی از پر استفاده ترین خدمات اینترنتی هستند! اگر احساس می کنید هنوز شبکه های اجتماعی هیچ تاثیری روی زندگی شما نگذاشته اند، باید بدانید که در آینده این شبکه های اجتماعی بیش از حالا اهمیت پیدا خواهند کرد. فیس بوک یکی از بزرگترین و محبوب ترین شبکه های اجتماعی بیش از 200 میلیون کاربر در سرار دنیا دارد.

خب در این مطلب نمی خواهیم در مورد بدیهیات شبکه های اجتماعی بحث کنیم. به اشتراک گذاری اطلاعات یکی از ارکان اصلی شبکه های اجتماعی و البته وب 2.0 است. در شبکه های اجتماعی معروف مثل فیس بوک و توییتر تقریباً می توان همه محتوایی را به اشتراک گذاشت، از متن ساده گرفته تا عکس و ویدئو. ما برنامه نویسان یک مشکل کوچک با این شبکه های اجتماعی داریم، مخصوصاً با توییتر، اینکه چطور قطعه کدهایمان را به اشتراک بگذاریم! به طور مثال چطور چندخط کد را بوسیله توییتر با دوستانم به اشتراک بگذارم!؟ اگر بخواهم همین قطعه کد را به دوستی که در حال چت کردن در یک مسنجر هستیم نشان دهم چه کنم!؟

code-paste

راه حل این موضوع وب سایت CodePaste.Net است که به شما اجازه می دهد بدون نیاز به ثبت نام، به راحتی کد خود را به زبان های xC#, VB.NET, JavaScript, HTML, ASP.NET, JavaScript, XML, CSS, Sql, T-SQL, و FoxPro بنویسید و لینک آن را برای دوستانتان در شبکه های اجتماعی یا مسنجرها بفرستید. وقتی دوستانتان لینک مورد نظر را باز می کنند، قطعه کد شما را به صورت تمیز و با قابلیت شماره گذازی و Syntax Highlighting و توضیحات تکمیلی شما مشاهده خواهند کرد. به نظرتان این عالی نیست!

به طور مثال من میخواستم نحوه استفاده از PropertyGrid در سی شارپ را به یکی از دوستانم که در حال چت کردن بودیم یاد بدهم. اگر کدها را همینطور در مسنجر تایپ میکردم، هم ظاهر خوبی نداشت و هم دوستم سر در گم میشد. خیلی راحت کدم را در CodePaste.net نوشتم و به آن لینک دادم!

API این سرویس، اجازه دسترسی به قطعات کد را در سه فرمت XML, JSON و RSS به شما می دهد. به طور مثال با اضافه کردن x?format=xml به انتهای URL یک قطعه کد، می توانید اطلاعاتش را با فرمت XML دریافت کنید.

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

هرچند ایده این پروژه جدید نیست، و قبل از آن سایت Pastie با پشتیبانی از زبان های PHP, Perl. Python, Ruby و چندتای دیگر همین کار را برای برنامه نویسان و طراحان وب انجام میداد، اما CodePaste.net به طور مخصوص برای برنامه نویسان دات نت طراحی شده و زبان های دات نتی را که Pastie پشتیبانی نمی کند، پشتیبانی می کند. قابلیت برچسب گذاری و قرار دادن توضیحات که در CodePaste.net وجود دارد، در Pastie وجود ندارد.

بعضی مواقع هم می توانید با استفاده از CodePaste.net با دوستانتان شوخی کنید! +

CodePaste.Net

توضیحات Rick Strahl، نویسنده این پروژه

مشترک فید فراسان شوید! نمی دانید فید چیست!؟

farasun.wordpress.com

پ.ن 1 : نسخه جدید Granslator (کلاینت اوپن سورس برای سرویس مترجم گوگل) رو آماده کردم، تغییرات خوبی داشته، از اینجا دانلود کنید.

پ.ن 2 : عکس پرسنل پرواز هواپیمای توپولوفی که تازگی سقوط کرده. امیدوارم دیگه شاهد این اتفاقات تلخ نباشیم! + هر چند هیچ امیدی نیست!