معرفی Web API

ASP.NET Web API چیست؟

  • یک فریمورک است که برای ساخت یک Web API بر پایه ی HTTP استفاده می شود.
  • می تواند در سیستم پلتفرم های مختلف نظیر وب، ویندوز، موبایل و… مورد استفاده قرار گیرد.
  • بیشترین استفاده از Web API در ساخت سرویس های Restful است.
  • این سرویس ها بیشتر توسط کلاینت های زیر استفاده می شوند:
    • Browsers
    • Mobile applications
    • Desktop applications
    • IOTs (که مخفف Internet of things است.)

RESTful Services

  • RESTمخفف Representational State Transfer است.
  • REST یک معماری برای ساخت سرویس هاست.
  • همچنین ساختار REST یک سری قید و قانون (Constraint) ایجاد می کند که یک سیستم باید پایبند به آن باشد.

انواع  Constraint یا قیدهای REST

  • Client Server : کلاینت درخواست می فرستد و سرور پاسخ می فرستد.
  • Stateless : نوع ارتباط بین کلاینت و سرور باید بدون وضعیت باشد و درخواست نباید هیچ درکی از نتیجه ی درخواست قبلی داشته باشد. به عبارت دیگر هر درخواست باید مستقل باشد.
  • Cacheable : بعضی از دیتاها معمولا زیاد تغییر نمی کنند مانند لیست کارمندان. این قید بیان می کند که باید کلاینت بداند که یک دیتا چه مدت کاربرد دارد تا نیاز نباشد هر دفعه آن دیتا را دوباره به سرور بفرستد. این قید (Cacheable) باعث افزایش بهینگی سیستم می شود.
  • Uniform Interface: برای درک Uniform Interface باید ابتدا مفاهیم Resource ، HATEOS و متد های HTTP را آموخته شود.
    • منظور از Resource همان موجودیت ها هستند مانند کارکنان، دانش آموزان ویا محصولات. که هر کدام URI منحصر به فرد خود را دارند.
    • HATEOS مخفف عبارت Hypermedia as the engine of Application State می باشد. که در هر درخواست HTTP، مجموعه ای از Hypermedia ها وجود دارند که از طریق آنها می توان فهمید که یک درخواست چه کارهایی با Resource می تواند انجام دهد.
    • متدهای HTTP عبارت اند از: GET, PUT, POST, DELETE و …
    • Layered System
    • Code on Demand

متدهای HTTP همراه با مثال در جدول زیر آورده شده اند:

Resource Verb Outcome
/Employees GET دریافت لیست تمام کارمندان
/Employee/1 GET دریافت اطلاعات کارمندی با شناسه 1
/Employees POST ارسال اطلاعات یک کارمند جدید
/Employee/1 PUT بروزرسانی اطلاعات کارمندی با شناسه 1
/Employee/1 DELETE حذف اطلاعات کارمندی با شناسه 1
چرا با وجود WCF بهتر است که از Web API برای ایجاد سرویس های RESTful استفاده شود؟

چون برای اینکه بتوان با WCF سرویس REST ساخت، احتیاج به Configue های بسیاری است.

چه زمانی استفاده از WCF نسبت به Web API ارجحیت دارد؟
  • زمانی که ورژن دات نت کمتر از 3.5 باشد.
  • زمانیکه سرویس SOAP وجود دارد اما باید سرویس REST هم اضافه شود.
  • زمانیکه قرار است سرویس هایی مستقل از پروتکل/انتقال ساخته شوند. یعنی Single Service با End Point های متعدد. برای مثال فرض کنید که می خواهید سرویسی بسازید که دو نوع Client مختلف دارد. Java Client و .NET Client. جاوا کلاینت نیاز به HTTP برای پروتکل انتقال و XML برای انتقال پیام دارد و مثلا دات نت کلاینت احتیاج به TCP برای پروتکل انتقال و Binary برای انتقال پیام دارد. در اینجا دو نوع متفاوت کلاینت وجود دارد، در چنین شرایطی استفاده از WCF بهترین گزینه است.
  • زمانیکه امنیت پیام، اهمیت داشته باشد.
  • زمانیکه Client تنها توانایی استفاده از پیام های SOAP را داشته باشد.

پس در غیر این صورت بهتر است از RESTful API استفاده شود.

تفاوت های REST با SOAP

تا اینجا دو نوع وب سرویس نام برده شد؛ WCF و Web API  هر دوی اینها می توانند بر پایه ی REST و یا SOAP پیاده سازی شوند.REST و SOAP تفاوت هایی با هم دارند مانند:

SOAP REST
مخفف Simple Object Access Protocol است. مخفف Representational State Transfer است.
یک پروتکل است که شامل فایل WSDL است. فایل WSDL شامل تمام اطلاعاتی است که نشان می دهد یک وب سرویس چه کاری را انجام می دهد. فایل WSDL شامل اطلاعاتی درباره ی مکان وب سرویس هم می شود.

REST یک سبک معماری وب سرویس است که اگر از قید های زیر پیروی کند به آن RESTful Service می گویند:

Client Server

Stateless

Cacheable

Layered System

Uniform Interface

SOAP نمی تواند از REST استفاده کند زیرا SOAP یک پروتکل است اما REST یک الگوی معماری است. REST می تواند از SOAP به عنوان پروتکل اصلی برای وب سرویس ها استفاده کند. چون در واقع REST یک الگوی معماری است.
SOAP از Service Interface برای نشان دادن قابلیت و عملکرد های وب سرویس استفاده می کند. در SOAP فایل WSDL وظیفه ی فراهم کردن اطلاعات مورد نیاز Client برای استفاده از وب سرویس را بر عهده دارد.

REST از Uniform Service Locators برای دسترسی به کامپوننت های موجود در سخت افزارها استفاده می کند. به عنوان مثال اگر Object ای در قسمت Employee یک URL وجود داشته باشد با استفاده از Locator می تواند قابل دستیابی باشد.

http://localhost/Employee

http://localhost/Employee/1

SOAP فقط از فرمت XML پشتیبانی می کند. REST از فرمت های مختلفی پشتیبانی می کند مانند HTML, Plain text, XML, JSON و غیره. اما فرمت پیشنهاد شده JSON است.
SOAP به پهنای باند بیشتری نیاز دارد تا بتواند یک درخواست را به سمت سرور بفرستد زیرا پیام های SOAP شامل مقدار زیادی از اطلاعات هستند. در شکل زیر یک پیام از نوع SOAP در قالب XML آورده شده است. همانطور که می بینید اندازه ی پیام در مقایسه با REST خیلی زیاد است.

REST برای ارسال درخواست به سرور به پهنای باند کمی احتیاج دارد. بیشتر درخواست های REST تنها شامل پیام های JSON می شوند. در شکل زیر یک پیام JSON را می بینید و آن را با یک پیام SOAP مقایسه کنید.

{“city”:”Tehran”,”Section”:”6″}

نوشته شده توسط mrbitmap علیرضا علی رمضانی

مقالات مرتبط

جدیدترین مقالات

فهرست