مقایسه بین Web API و MVC API

شنبه 21 آذر 1394

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

مقایسه بین  Web API و  MVC API

در این مقاله قصد داریم درباره اینکه چرا از  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 فراهم میکند.

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید