مقایسه بین Web API و MVC API
شنبه 21 آذر 1394در این مقاله قصد داریم درباره اینکه چرا از Web API بجای ASP.net MVC API استفاده می شود صحبت کنیم. Web API بخشی از فریم ورک ASP.net برای ساخت و توسعه سرویسهای REST بر روی پروتکل HTPP که قابل دسترس برای طیف گسترده ای از دستگاه ها است .
در این مقاله قصد داریم درباره اینکه چرا از Web API بجای ASP.net MVC API استفاده می شود صحبت کنیم.
Web API بخشی از فریم ورک ASP.net برای ساخت و توسعه سرویسهای REST بر روی پروتکل HTTP که قابل دسترس برای طیف گسترده ای از دستگاه ها است .
ASP.net MVC API ، یک API است که با ASP.net MVC ایجاد می شود . یعنی هر دو View و داده در یک پروژه قرار دارند.
View و داده
همانطور که میدانید Web API برای ایجاد سرویسهای fully REST که روی پروتکل HTTP اجرا می شوند استفاده می شود. پس فقط سرویس گیرنده فعال HTTP اجازه دسترسی به سرویس Web API را دارد. Web API فقط داده ها برمیگرداند و نه View را . هیچ رابط کاربری گرافیکی ای برای ارائه داده ها وجود ندارد. سرویس گیرنده می تواند داده ها را دریافت کند و در View خود نمایش دهد.
اما اگر API را با استفاده از ASP.net MVC بسازید آنگاه قادر خواهید بود View ایجاد کنید که داده ها را نمایش دهد. این به آن معناست که ASP.Net MVC API داده را برمیگرداند و در View خود نمایش می دهد.
پس اگر بخواهیم APIبسازیم که فقط داده ها را برگرداند از Web API استفاده میکنیم در غیر اینصورت بهتر است که از ASP.net MVC API استفاده شود.
Web API از مهمترین امکان API که Content Negotitaion است پشتیبانی میکند . Web API بهترین پاسخ فرمت داده که توسط سرویس گیرنده به آسانی قابل قبول است را باز میگرداند. فرمت داده می تواند XML ,JSON,ATOM و یا هر فرمت دیگری باشد . اما با ASP.net MVC API اگر از فرمت JSON استفاده کنیم باید داده ها را تبدیل(cast) کنیم.
همچنین Web API از خود میزبانی یا Self Hosting با هر برنامه ASP.net پشتیبانی میکند. اگر فکر میکنید که برنامه سرویس گیرنده در ASP.net MVC نیست بهتر است که از Web APIاستفاده شود.
اگر از ASP.net MVC برای ایجاد API استفاده کنیم دیگر نمی توانیم از امکان Self hosting استفاده کنیم.
ASP.net Web API
public class EmployeeController: ApiController { // GET: /Api/Employees/ public List < Employee > Get() { return EmployeeMaster.GetEmployees(); } }
ASP.net MVC API
public class EmployeeController: Controller { // GET: /Employees/ [HttpGet] public ActionResult Index() { return Json(EmployeeMaster.GetEmployees(), JsonRequestBehavior.AllowGet); } }
لایه سرویس مستقل
همانطور که میدانید ASP.net Web API بخشی از فریم ورک ASP.net است . اما امکاناتی در Web API مانند فیلترها ، اتصال مدل ، مسیردهی و ... کاملا با ASP.net MVC API متفاوت است .و دلیل آن این است که ASP.net Web API در فضای نام System.Web.Http قرار دارد اما ASP.net MVC API در System.Web.MVC قرار دارد. پس می توان گفت Web API مستقل است و توسط هر برنامه ای که از پروتکل HTTP پشتیبانی کند استفاده می شود. Web API یک لایه سرویس برای خدمات ایجاد میکند. می توان از HttpClient برای دسترسی به Web API درون کنترلر ASP.net MVC استفاده کرد.
API باید یک موجودیت واحد روی اینترنت برای انعطاف پذیری بهتر و قابلیت دسترسی بیشتر باشد . Web API این مزیت را دارد که API شما را از پروژه تان که شامل فایلهای استاتیک و صفحه های HTML است جدا میکند . اگر API خود را با ASP.net MVC API بسازید باید View ها ، Partial View ها ، Html helper ها را همراه API قرار دهید. که نتیجه آن پیچیده شدن API شما درمقایسه با Web API است.
عملکرد
اگر API خود را با استفاده از ASP.net MVC API ایجاد کنید کارایی برنامه خود را بالا برده اید. API مستقل که روی کنسول برنامه میزبانی می شود سرعت برنامه را بسیار افزایش می دهد.
Web API در مقایسه با ASP.net MVC APIبسیار سبک است . پس استفاده از Web API عملکرد برنامه را هنگام دریافت داده ها بالا می برد.
مجوز ها
اگر میخواهید فیلترهای اجازه دسترسی در Web API خود قرار دهید ، فقط لازم است که یک فیلتر برای اجازه دسترسی ایجاد کنید.
اما زمانی که MVC و Web API را در یک پروزه با هم استفاده کنید ، کار سخت می شود و لازم است که برای هر دو فیلتر مجوز قرار داده شود.
درخواست نگاشت
Web API از بعضی افعال HTTP برای عملیات CRUD استفاده میکند و با این افعال به صورت خودکار نگاشت می شود . ASP.net MVC با عمل های دیگری نگاشت می شود.
کدامیک بهترین انتخاب است؟
بهترین گزینه می تواند Web API باشد هنگامی که میخواهید سرویس fully REST مستقل ایجاد کنید. اما با توجه به نیازهای پروژه خود اگر لازم باشد داده ای برگردانده شود و در View نمایش داده شود بهتر است که از ASP.net MVC API استفاده شود.
دلیل دیگری برای انتخاب Web API این است که عملکرد بالایی با هزینه کم در مقایسه با ASP.net MVC API فراهم میکند.
- ASP.net MVC
- 5k بازدید
- 8 تشکر