وب سرویس ها با مدل ها و انواع مختلفی دارند. که در این مقاله به بررسی و مقایسه دو تا از آنها می پردازیم.
- SOAP : پروتکل دسترسی ساده به اشیا (Simple Object Access Protocol)
- REST : معماری ارتباط به حالت بازنمودی (Representational State Transfer)
با توجه به نوع نیازها، باید تصمیم گرفت که از کدام سبک برای طراحی وب سرویس ها نیز استفاده کرد. معمولا این نوع تصمیم گیری ها پیچیده هستند و کار آسانی نیست. به طور خلاصه، SOAP یک پروتکل دسترسی ساده به اشیا و وب سرویس ها میباشد. در واقع این پروتکل مبتنی بر استاندارد هاست که نسبت به REST قدیمی تر است. REST یک سری پاسخ برای پر کردن شکاف هایی است که SOAP فاقد آن است. همچنین REST یک راه ساده تری را برای دسترسی به وب سرویس ها ارائه می دهد.
برای بهتر متوجه شدن تفاوت های SOAP و REST در ادامه به بررسی هر کدام به صورت جداگانه می پردازیم.
SOAP چیست؟
پروتکل SOAP توسط شرکت مایکروسافت توسعه یافته است. با توجه به این که SOAP یک پروتکل مبتنی بر XML است و به عنوان یک زبان واسط به وجود آمده است. SOAP به گونه ای توسعه یافته است که به چندین کامپیوتر اجازه می دهد تا با یکدیگر ارتباط برقرار کنند. امروزه در بسیاری از زبان های برنامه نویسی نیز از آن استفاده میشود.
گزارشات خطا در SOAP می تواند هم به صورت خودکار و هم به صورت دستی باشد. خودکار بودن گزارشات خطا، نقش مهمی در امنیت شما دارد. به خصوص زمانی که از وب سرویس های شرکت دیگری استفاده می کنید.
همانطور که میدانید یکی از نیاز های اساسی برنامه های تحت وب برقراری ارتباط با برنامه های دیگر، از طریق اینترنت است. که راه ارتباطی از طریق پروتکل SOAP ایجاد می شود. در واقع این پروتکل شرایطی فراهم می کند که این برنامه ها با تکنولوژی و زبان های برنامه نویسی مختلف، بر روی انواع سیستم عامل ها اجرا شوند.
بنابراین می توان گفت SOAP یک پروتکل مبتنی بر XML، برای دسترسی به وب سرویس ها از طریق HTTP است.
مزایای استفاده از پروتکل SOAP
- قابل استفاده در هر زبان برنامه نویسی
- قابل اجرا در انواع پلتفرم ها
- دارای امنیت WS Security
- توصیه W3C برای ارتباط بین دو برنامه
- کار بر روی پروتکل HTTP
- برقراری تعامل بین چند برنامه
معایب استفاده از پروتکل SOAP
- استفاده از پهنای باند و منابع زیاد
- سرعت پایین
- وابستگی به WSDL
REST چیست؟
REST هم مثل SOAP یک مدل طراحی برای برنامه های شبکه ای می باشد. معماری REST توسط یک پروتکل مثل HTTP، SMTP،FTP و … بین دو سیستم client و server ارتباط برقرار میکند.
هنگام استفاده از معماری REST لازم نیست هر بار که یک کار را انجام می دهید، یک ساختار XML ایجاد کنید. در واقع این امر REST را به نسخه ساده تری از SOAP تبدیل می کند.
می توان گفت معماری REST یک روش برای ایجاد، آپدیت و یا حذف اطلاعات بر روی سرور است. که برای این کار از HTTP call های ساده استفاده می کند.
خروجی داده های وب سرویس در معماری REST به صورت CSV، JSON و RSS هستند. بنابراین %75 توسعه دهندگان از REST استفاده می کنند.
مزایای استفاده از معماری REST
- استفاده از پهنای باند و منابع کمتر
- سرعت بالا
- قابل اجرا در انواع پلتفرم ها
- قابل استفاده در هر زبان برنامه نویسی
- استفاده از SOAP برای پیاده سازی
- امکان دسترسی به فرمت های مختلف داده ها
تفاوت های بین SOAP و REST
SOAP |
REST |
---|---|
یک پروتکل است. | یک سبک معماری است. |
بر پایه دسترسی ساده به اشیاء می باشد. | بر پایه تبادل حالت بازنمودی است. |
نمی تواند از معماری REST استفاده کند. | میتواند از پروتکل SOAP استفاده کند. |
استفاده از service interface برای نمایش منطق کسب و کارها. | استفاده از URL برای نمایش منطق کسب و کارها. |
استفاده از JAX-WS به عنوان یک api جاوا. | استفاده از JAX-RS به عنوان api جاوا. |
دنبال و تعریف شدید استانداردها. | تعریف استانداردهای بسیار محدود. |
نیاز زیاد به پهنای باند و منابع. | نیاز کم به پهنای باند و منابع. |
تعریف امنیت توسط خودش. | به ارث بردن اقدامات امنیتی از انتقال اصولی. |
فقط از فرمت XML پشتیبانی میکند. | پشتیبانی از فرمت های مختلف متنی، JSON، XML، HTML و … . |
از بین SOAP و REST کدام انتخاب بهتری است؟
با توجه به تفاوت های جدول بالا، تقریبا %75 توسعه دهندگان ترجیح می دهند از معماری REST استفاده کنند.
به صورت کلی درک REST برای مبتدیان بسیار آسان است. اما SOAP به دلیل داشتن پروتکل سفت و سخت، یادگیری و درک آن زمان می برد.
به هر حال شما باید با توجه به نیاز و پروژه خود تصمیم بگیرید که از کدام مورد برای طراحی وب سرویس خود نیز استفاده کنید.