در این مقاله، ما در مورد تفاوت های بین ASP.NET Model View Controller (MVC) و ASP.NET Web API صحبت خواهیم کرد، و شما باید از آن برای نیازهای مختلف استفاده کنید. قبل از اینکه عمیقتر برویم، بیایید یک مقدمه کوتاه از آنچه در واقع MVC است داشته باشیم.
MVC یا Model-View- Controller چیزی است که یک برنامه را در واقع تقسیم می کند.
Model – اینها اشیایی هستند که حالت مدل را در پایگاه داده واکشی می کنند، یعنی داده ها را از پایگاه داده بازیابی می کند، عملیات خاصی را انجام می دهد و داده ها را در پایگاه داده ذخیره می کند.
مشاهده – در اینجا، توسعه دهندگان می توانند رابط کاربری یا رابط کاربری برنامه های ایجاد شده توسط مدل داده را مشاهده کنند.
کنترلرها – کنترلرها یا کامپوننت ها تعامل کاربر را مدیریت می کنند، مقادیر رشته پرس و جو را مدیریت می کنند و مقادیر را به مدل ها منتقل می کنند.
MVC را در مجموعه “System.Web.MVC” پیدا می کنید. چارچوب MVC از ویژگیهای ASP.NET مانند احراز هویت مبتنی بر عضویت، صفحات اصلی و غیره استفاده میکند. میتوانید گزینههای مختلف در ASP.NET را برای ساخت برنامههای وب با فرمهای وب ASP.NET امتحان کنید.
از طریق ASP.NET Web API، می توانید فرم هایی از داده ها مانند XML و JSON را نمایش دهید. این فریم ورک منبع باز است، از سرویس HTTP استفاده می کند و پاسخ به درخواست های مشتری یک تکه کیک است. خود درخواست ها (به عنوان مثال، دریافت، ارسال، حذف، قرار دادن و غیره) با استفاده از پروتکل های HTTP مدیریت می شوند. ASP.NET Web API را می توان در IIS یا در برنامه میزبانی کرد.
مبتدیان معمولاً در انتخاب فناوری ASPNET برای استفاده گیج می شوند. در اینجا چند مورد وجود دارد که می توانید از هر یک از این فناوری ها استفاده کنید.
1) فرآیند افشای عملکرد
کنترلرهای ASP.NET MVC انتخاب خوبی خواهند بود (1) اگر به دنبال نمایش یک عملکرد در یک برنامه واحد هستید یا (2) اگر قرار است به عنوان یک عملکرد عمومی در هر برنامه استفاده شود. از این طریق می توانید در زمان خود صرفه جویی کنید زیرا لازم نیست هر بار یک API جدید ایجاد کنید تا عملکردها را در معرض دید قرار دهید. به طور معمول، یک کنترلر به یک برنامه وب خاص متصل است و عملکردها را به سرعت از طریق Ajax مصرف می کند.
اگر به دنبال ایجاد یک سرویس REST کامل هستید که به یک برنامه متصل نیست، میتوانید از Web API استفاده کنید، زیرا راهحلی زیبا و مرتب ارائه میدهد.
اگر عملکرد UI یا View محور است، مانند بارگیری قطعات HTML یا ایجاد صفحات مبتنی بر AJAX، ASP.NET MVC انتخاب بهتری است. Web API زمانی که در حال ایجاد یک سرویس RESTful مستقل هستید، انتخاب خوبی خواهد بود.
اگر عملکرد داده محور است، سرورهای Web API را انتخاب کنید. به عنوان مثال، عملیات CRUD. در برنامه های معمولی MVC، فقط کنترلرها برای برگرداندن داده ها و نماها کافی هستند.
2) فرمت های داده برای مقابله با
کنترلرها یا ActionResult یا JsonResult را برمیگردانند، به این معنی که خروجی کنترلر میتواند نشانهگذاری HTML یا دادههای فرمتشده JSON باشد. اگر یکی از این فرمتهای داده کافی است، میتوانید از روشهای عمل برای افشای عملکردها استفاده کنید. با این حال، هنگامی که چندین قالب داده درگیر هستند، وب API انتخاب بهتری خواهد بود. این به این دلیل است که این فناوری می تواند به طور خودکار قالب وب را با نگاه کردن به هدر Accept تعیین کند. در کنترلر MVC، باید فرمت داده را برای نوشتن متدهای عمل مشخص کنید.
Web API را می توان برای تولید سرویس های HTTP که به تنهایی به داده ها پاسخ می دهد استفاده کرد، اما MVC برای توسعه برنامه های کاربردی وب که هم به صورت نما و هم به داده پاسخ می دهند مناسب است.
Web API به Accept Header درخواست نگاه میکند که دادهها را در قالبهای مختلف برمیگرداند، بنابراین میتواند در قالبهای مختلف مانند XML، JSON و غیره برگرداند. اما برای MVC، دادههای برگردانده فقط در قالب JSON با استفاده از JSONResult است.
3) وقتی MVC و Web API را ترکیب می کنید
توسعه دهندگان می توانند با ترکیب هر دو کنترلر MVC و API از چند مزیت برخوردار شوند.
(1) می توانید درخواست های AJAX را مدیریت کنید و هنگامی که هر دو را ترکیب می کنید، پاسخ را در قالب های مختلف برگردانید.
(2) میتوانید دو فیلتر مختلف برای مجوز برای یک برنامه ایجاد کنید. درخواستها با اعمال روی افعال HTTP نگاشت میشوند، اما به نام اقدامات در MVC نگاشت میشوند. می توانید از API به عنوان یک لایه سرویس مستقل استفاده کنید و همچنین می توانید از ASP.NET استفاده کنید.
اتصال مدل، مسیریابی، فیلترها همگی در Web API متفاوت هستند و در مجموعه System.web.http وجود دارند. این ویژگی ها در System.web.MVC در چارچوب MVC وجود دارد.
4) اینکه آیا به خود میزبانی نیاز دارید
همانطور که می دانید کنترلر، بخشی از برنامه های ASP.NET MVC به IIS به عنوان محیط میزبانی نیاز دارد. با این حال، API یک چارچوب سرویس است و شما می توانید آن را خود میزبانی کنید. این باعث می شود آن را سبک وزن کنید، زیرا می توانید از هزینه های سربار IIS جلوگیری کنید. این یک انتخاب عالی برای زمانی است که برنامه شما باید در تعدادی از پلتفرم ها منتشر شود – دسکتاپ، برنامه های کاربردی وب، برنامه های کاربردی کنسول و غیره.
بستن افکار
اگر یک سرویس HTTP کامل مانند Flickr، Amazon، Delicious و غیره ایجاد می کنید، می توانید Web API را انتخاب کنید. همچنین اگر به مذاکره محتوا نیاز دارید، انتخاب خوبی است. مذاکره محتوا فرآیندی برای بازگرداندن محتوا در قالبی است که توسط Accept Header ذکر شده است. با این حال، ممکن است برای همه پروژه های خود به آن نیاز نداشته باشید، زیرا ارسال داده به صورت JSON و XML عمدتاً چیزی است که مورد نیاز است. با Web API، میتوانید محتوا را در قالبهای مختلف از جمله تصاویر و فایلها ارسال کنید.
هنگامی که می خواهید داده ها و خدمات خود را در دستگاه های مختلف نمایش دهید، WebAPI شاید چارچوب بهتری باشد. و منبع باز است و از این رو پلتفرم عالی برای ایجاد خدمات RESTful در چارچوب DotNet است. و لازم نیست تنظیمات پیکربندی اضافی را برای هر دستگاه به طور جداگانه انجام دهید. این روزها مردم ترجیح می دهند در مقایسه با برنامه های دسکتاپ بیشتر از برنامه های تلفن همراه استفاده کنند و بنابراین توسعه هر دو نوع برنامه بسیار مهم می شود.
از سوی دیگر، MVC، جداسازی تمیزی از نگرانیها را فراهم میکند، امکان کنترل کامل بر HTML رندر شده را فراهم میکند، امکان ادغام آسان با فریمورکهای جاوا اسکریپت را فراهم میکند و توسعه تست محور را فعال میکند.