صفحه نخست --> توسعه نرم افزار --> مقایسه وب سرویس های RESTful و SOAP

مقایسه وب سرویس های RESTful و SOAP

هر چند که وب سرویس RESTful و SOAP مستقیما با موضع کلان داده ارتباطی ندارد ولی از آنجایی که برخی از تکنولوژی های کلان داده از این وب سرویس ها پشتیبانی میکنند، در این مبحث به توضیح آن میپردازیم.

تفاوت وب سرویس RESTful و SOAP

قبل از مقایسه و بررسی تفاوت های دو وب سرویس RESTful و SOAP بهتر است به صورت مختصر معماری هر یک را جداگانه توضیح دهیم. قبل از هر چیز با یک مثال ساده مفهوم وب سرویس را بررسی میکنیم:

وب سرویس را میتوان یکی از مصادیق معماری های سرویس گرا فرض نمود. در دیدگاه سرویسگرا ما به این نکته می اندیشیم که Application هایی وجود دارند که اغلب از آنها استفاده می کنیم، حال این سئوال مطرح می شود که چرا باید دوباره و دوباره آنها را ایجاد کنیم؟! وب سرویسها می توانند کامپوننت های نرم افزارهای مختلف را مانند: تبدیل ارز، گزارش آب و هوا و یا سرویس ترجمه زبانهای مختلف را به شما ارائه دهند.

وب سرویس RESTful

REST مخفف Representational State Transfer می باشد. یک معماری وب سرویس است. از HTTP برای انتقال اطلاعات میان کلاینت و سرور استفاده میکند. کار کردن با REST بسیار ساده تر از وب سرویس های پیچیده ای مانند SOAP می باشد. یک سرویس به اصطلاح RESTful عموما بر روی پروتکل HTTP  و تمام افعال استاندارد این پروتکل را که توسط مرورگرهای وب قابل درک هستند کار میکند مانند (GET, POST, PUT, DELETE)

REST مخفف عبارت Representational State Transfer است و متکی بر یک پروتکل ارتباطی بدون حالت، کلاینت سرور و با قابلیت cache کردن می‌باشد که در اکثر موارد پروتکل HTTP مورد استفاده قرار می‌گیرد.
ایده اصلی معماری REST این است که به جای استفاده از مکانیزم های پیچیده ای مانند CORBA، RPC یا SOAP برای اتصال ماشین ها ازHTTP ساده برای برقراری ارتباط بین ماشین‌ها استفاده شود.

بوسیله URI کار می کند یعنی ریسورس ها و کالکشن های خود را به صورت http://fullkade.com/resources دریافت میکند. اطلاعات را عموما به  صورت JSON دریافت میکند البته میتواند اطلاعات به صورت XML هم برگردانده شود. برخلاف وب سرویس های بر پایه SOAP ، هیچ استاندارد رسمی برای وب سرویس های REST وجود ندارد به دلیل اینکه REST یک معماری است در حالی که SOAP یک پروتکل وب سرویس است.
مدل REST شش قید برای معماری برنامه‌های شبکه تعریف می‌کند:

  • کلاینت سرور (client-server) باشد.
  • بدون حالت (stateless) باشد.
  • قابلیت cache داشته باشد. (cacheable)
  • سیستم لایه‌بندی شده (layered system) داشته باشد.
  • واسط یکنواخت (uniform interface) داشته باشد.
  • دارای قابلیت کد در صورت نیاز (code on demand) باشد. (که این محدودیت اختیاری می‌باشد)

به سیستمی که این قیود را رعایت نماید، RESTful می‌گویند.
از لحاظ رویکرد برنامه نویسی REST جایگزینی ساده برای سرویس‌های وب است. توسعه‌پذیری در تعاملات میان اجزا، عمومیت واسط ها، توسعه مستقل اجزا و استفاده از واسطه ها از کلیدی ترین اهداف معماری REST می‌باشد و همچنین استفاده از معماری REST در برنامه‌نویسی کارایی، سادگی، انعطاف‌پذیری، امکان مشاهده و نظارت، قابلیت حمل و قابلیت اطمینان را افزایش می دهد.

وب سرویس RESTful و SOAP
REST API

وب سرویس  SOAP

SOAP مخفف عبارت Simple Object Access Protocol به معنی پروتکل دسترسی آسان به اشیاء است. SOAP یک پروتکل مبتنی بر XML برای رد و بدل کردن اطلاعات بین برنامه ها است. اطلاعات در SOAP به صورت پیام (Message) و از طریق پروتکل‏های موجود در اینترنت مانند HTTP منتقل می‏شود (SOAP در سایر پروتکل ها، مانند SMTP یا MIME نیز قابل استفاده است). یکی از مسایلی که در دهه اخیر از اهمیت خاصی برخوردار بوده، چگونگی ارتباط برنامه‏ های تحت اینترنت با یکدیگر می باشد. برنامه‏ های عادی از RPC) Remote Procedure Call) برای فراخوانی اشیاء DCOM یا CORBA، استفاده می‏کنند. اما مشکلی که در این نوع فراخوانی‏ ها در بستر اینترنت وجود دارد، مسدود شدن این نوع ترافیک‏ها در Proxy Server ها و دیوارهای آتش (Firewall ها) می باشد. در صورت استفاده از SOAP با این مشکل روبرو نخواهید بود. SOAP به راحتی شما را قادر خواهد کرد تا بین برنامه‏ هایی که در بسترهای متفاوت طراحی شده اند و در بسترهای متفاوتی در حال سرویس ‏دهی هستند، ارتباط برقرار کنید.

وب سرویس RESTful و SOAP
SOAP

جدول مقایسه وب سرویس RESTful و SOAP

SOAP REST
بخوبی برای محیط های محاسباتی توزیع شده کاربرد دارد. برای ارتباطات مدل نقطه به نقطه (point-to-point) طراحی شده است و برای محیط های توزیع شده قابل استفاده نیست.
پرتکل و middleware های زیادی برای راه اندازی ارتباط لازم است. برای راه اندازی ارتباط احتیاج به پرتکل یا middleware خاصی نیست و فقط پرتکل HTTP کفایت می کند.
محتوای پیغام ردوبدل شده مشخص کننده سرویس فراخوانی شده می باشد. بطور معمول URL در سرویس های REST بیانگر سرویس های سیستم می باشد.
کاملا قابل اطمینان است. قابل اطمینان نیست. برای مثال ممکن است یک دستور HTTP DELETE وضعیت OK برگرداند در حالی که عملیات حذف در سرور انجام نشده است.
حجم اطلاعات منتقل شده باید منطبق با SOAP schema باشد. محدودیتی در حجم اطلاعات منتقل شده وجود ندارد.
از استانداردهای فراوانی برای مباحث امنیت، قابلیت اعتماد و تراکنش ها پشتیبانی می کند. فقط از استاندارد های مشهور مانند HTTP, SSL پشتیبانی می کند.
هر دو پرتکل SMTP و HTTP بعنوان پرتکل لایه application قابل استفاده هستند. با مدل HTTP transport ارتباط تنگاتنگی دارد.
مکانیزم error handling ندارد. مکانیزم error handling بصورت توکار دارد.
پیچدگی بالا در پیاده سازی. سادگی در پیاده سازی.

در نهایت شایان ذکر است روش SOAP بیشتر برای پیاده سازی سرویس های میانی مورد استفاده قرار می گیرد و روش REST بیشتر در مواردی کاربرد دارد که نیازی به سرویس میانی وجود ندارد و اصطلاحا ارتباط point-to-point است.

آدرس کانال تلگرام ما:

t.me/bigdata_channel
برای ورود به کانال بر روی اینجا کلیک کنید.

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

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