مقایسه REST و SOAP

.(Post,Get,Put,Delete)

مفهوم REST روی عملیات CRUD بر روی داده استوار است.از آنجاییکه وب Resource Oriented می باشد وقتی صحبت از انجام عملیات روی منابع بر روی بستر پروتوکل Http می کنیم REST به میان می آید.سادگی آن بدلیل استفاده از Http راه حل مناسبی برای ایجاد سرویس های تحت وب ارائه داده است.برقراری ارتباط کلاینت با REST ساده بوده و نیاز به تنظیمات خاص ندارد  همچنین فرمت های متنوعی مثل JSON و XML را ارائه می دهد.

تعریف SOAP

یک پروتوکل انتقال پیام می باشد که به برنامه های در حال اجرا بر روی سیستم های مجزا اجازه تعامل و تبادل پیام را می دهد.SOAP بیشتر بر روی ارائه منطق برنامه بصورت سرویس متمرکز شده است و در واقع عملیاتی را ارائه می دهد که از طریق رابط های(Interface) مختلف قابل ارائه می باشد,البته از SOAP به اشتباه WebService نیز نام می برند.

SOAP روی ارائه عملیات متنوع برای منطق کسب وکار بنا نهاده شده است,فرمت پیام ها XML می باشد و ساختار پیام مخصوص خود را دارد.

 از لحاظ کارایی,مقیاس پذیری و سرعت خواندن داده ها REST عملکرد بهتری را از خود نشان می دهد که از دلایل آن پشتیبانی ذاتی Http از Cache کردن و سربار بالای پیام های SOAP می باشد.

 SOAP همانند REST از SSL پشتیبانی می کند.همچنین SOAP  از WS-Security که ویژگی های امنیت سازمانی را اضافه می کند پشتیبانی می کند.در واقع WS-Security امکانات امنیتی اضافه تری را فراهم می کند که سرویس های اینترنتی معمول به آن نیازی ندارند و در واقع صرفا در سناریوهای سازمانی مورد نیاز می باشند.

پشتیبانی SOAP از WS-Atomic-Transaction امکان تراکنش های ACID را فراهم می کند این درحالیست که REST از تراکنش های ACID پشتیبانی نمی کند و این امر ناشی از محدودیت پروتوکل Http می باشد که از two-phase-commit بر روی منابع توزیع شده پشتیبانی نمی کند.

REST فاقد سیستم استاندارد انتقال پیام می باشد و انتظار دارد تا کلاینت در صورت برخورد با هر گونه مشکلی دوباره تلاش نماید.اما SOAP منطق   Successful/retryرا بصورت ذاتی فراهم می کند تا قابلیت اطمینان را در انتقال پیام بوجود آورد.

بنابراین SOAP مفید و مهم است.برای مثال وقتی می خواهیم برنامه تراکنش مالی بنویسیم پشتیبانی از تراکنش توزیع شده مهم است بنابراین SOAP گزینه مناسبی است.

REST  بدلیل استفاده از Http ذاتا stateless می باشد ولی SOAP از state-full بودن نیز پشتیبانی می کند.

SOAP به پروتوکل انتقال وابسته نیست در حالیکه REST صرفا بر روی Http می باشد.سرویس های SOAP توسط WSDL توصیف می شوند همچنین اطلاعات در مورد شی در داخل خود پیام ارسال می شود.

از معایب SOAP حجم بالای پیام های آن و اشغال پهنای باند ارتباطی ,سختی پیاده سازی و استفاده از آن در وب و موبایل می باشد همچنین تنها بصورت XML پیام ها را ارسال می کند.

از معایب REST وابستگی آن به پروتوکل Http و پیچیده بودن Authorization  و امنیت بر روی آن می باشد.

در نتیجه می توان به این گفته رسید که وقتی کلاینت ها و سرورها روی محیط وب و موبایل کار می کنند و نیازی به ارسال اطلاعات اضافی در مورد شی به سمت کلاینت نداریم REST گزینه مناسب تری است.

اما وقتی نیاز به یک Contract رسمی مابین سرور و کلاینت هستیم و یا نیاز به تراکنش های ACID در فراخوانی سرویس ها هستیم SOAP گزینه ی مطلوب تری می باشد.

سناریوهای معمول REST عبارتند از:

Social Media Service,Social Network,Web chat service,Mobile service

سناریوهای معمول SOAP :

Financial Service,Payment Gateway,Telecommunication service

WCF سرویس های SOAP based را فراهم می کند و Web API امکان ایجاد سرویس های REST را فراهم می کند.

تصویر زیر را در stackoverflow دیدم بسیار جالب بود.

 

 

دیدگاه‌تان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *