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

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

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

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

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

وب سرویس RESTful

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

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

RESTful روشی برای ایجاد، خواندن، آپدیت نمودن و یا حذف اطلاعات بر روی سروری است که از HTTP call های ساده استفاده می کنند. در واقع REST یک مدل طراحی برای برنامه های شبکه ای می باشد که ارتباط بین دو سیستم (client-server) را توسط یک پروتکل (مانند http، smtp، ftp و …) ایجاد می کند. برنامه های بر پایه این روش/معماری، ReSTful application نامیده می شوند، چرا که فقط با request های CRUD (مخفف create update read delete) پروتکل واسط، با هدف تعامل برقرار می کنند.

بوسیله 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
وب سرویس RESTful

وب سرویس  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 است.

 

در صورتی که نمی دانید API چیست ادامه مطلب را مطالعه کنید

یا ای پی آی که مخفف عبارت Appluication Programming Interface و به معنای رابط برنامه نویسی اپلیکیشن می باشد.

این روز ها اگر در مباحث برنامه نویسی حضور داشته باشیم، این کلمه رو خیلی خواهیم دید و شاید واقعا ندانیم به چه معناست… رابط برنامه نویسی اپلیکیشن! یعنی چه؟

اکثر برنامه نویسان مبتدی خیلی با ماهیت این اصطلاح آشنا نیستند و امیدواریم این مقاله بتونه مفهوم این اصلاح رو برای همه روشن کنه، پس با فول کده همراه باشید.


API به راحتی این امکان را در اختیار یک برنامه نویس قرار می‌دهد تا به‌ برخی یا تمامی قابلیت‌های یک نرم‌افزار دیگر دسترسی پیدا کند. برای مثال، فرض کنیم نرم‌افزاری تحت عنوان A وجود دارد که شرکت توسعه‌دهنده اش، این امکان را برای سایر توسعه دهندگان فراهم آورده تا از API آن استفاده کنند. نرم افزاری را هم که توسعه می‌دهیم نرم‌افزار B نام دارد. حال نرم‌افزار A در چارچوب خاصی به نرم‌افزار B اجازه می‌دهد تا از اطلاعات آن استفاده کند. در استفاده از API می بایست موارد زیر را حتماً مد نظر قرار داد.

◀️ API ها ارائه دهنده ی داده‌های ساختار یافته هستند. به عبارت دیگر، درخواست از طرف نرم‌افزار B به نرم‌افزار A در چارچوب یک فرمت استاندارد صورت می گیرد.

◀️ API ها قابل پیش‌بینی هستند. به عبارت دیگر، درخواست هایی که به نرم‌افزار A ارسال می‌شوند از پیش تعیین شده بوده لذا پاسخ به چنین درخواست هایی همواره مشخص و قابل پیش‌بینی خواهند بود.

◀️ API ها مستند هستند. با توجه به این که API ها توسط شرکت های بزرگ برای سرویس های جهانی ایجاد می شوند، این API ها می بایست صد در صد مستند بوده تا توسعه دهندگانی که قصد استفاده از آن‌ها را دارند، در استفاده از آن‌ ها دچار حداقل سردرگمی شوند و به راحتی از جزئیات API سر در بیاروند.

◀️ API ها دارای یک API Key هستند. برای آن که به راحتی مشخص شود که Request یا «درخواست» از طرف چه سایت یا نرم افزاری است، ای پی آی ها یکی API Key یا «شناسه ی ای پی آی» در اختیار توسعه دهندگان قرار می‌دهند که در هر درخواست، این شناسه هم برای شرکت A ارسال می‌شود که آن طریق، ماهیت اپلیکیشن شما برای آن سیستم مشخص شده و بر اساس توافقاتی که برای استفاده از ای پی آی صورت گرفته، خدمات را در اختیار شما قرار می دهد. علاوه بر این، شناسه ای که در اختیار شما -به عنوان یک توسعه‌دهنده- قرار می گیرد، مشخص می‌کند که شما هر چند وقت یک بار خواهید توانست برای نرم‌افزار A درخواست ارسال کنید. به طور مثال، این API ممکن است که صرفاً در بازه های زمانی نیم ساعته به درخواست ها پاسخ گوید و در صورتی که اپلیکیشنی هر ده دقیقه یک بار، یک درخواست ارسال کند، API Key مشخص کننده ارسال کننده ی درخواست بوده و درخواست شما اصطلاحاً Ignore شده یا «نادیده» گرفته می شود.

 

برای دیدن فلیم های سینماییِ مهیج و جذاب”در حوزه فناوری اطلاعات، اوسینت و هوش مصنوعی“، بر روی اینجا کلیک کنید.

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

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

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

Visits: 7956

یک دیدگاه

  1. ممنون از توضیحاتتون. حالا سوال اینجاست وقتی میگن RESTAPI بلد باشی رزومه بفرست! دقیقا باید چه زبان برنامه نویسی یا چه پلت فرم یا ابزاری رو بلد باشیم؟!!

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