نمی دانم چرا هر وقت این کلمه به گوش یا چشمم می خورد یاد حمام و پاکیزگی می افتم! اما خب نرم افزار خیلی از مفاهیم را دستخوش تغییر کرده است. جالبتر اینکه پس از جستجوی بسیاری از کلمات در اینترنت که معنی اصلی آنها صدها سال قدمت دارد، اولین یافته ها همانا معانی عجیب و غریب آن کلمات در صنعت محترم نرم افزار است. کاربر بخت برگشته ای را تصور کنید که برای یافتن صابون مورد علاقه خود کلمه Soap را در گوگل جستجو می کند و در دریایی از کلماتی چون XML، Protocol و HTTP غرق می شود!
SOAP مخفف Simple Object Access Protocol است. SOAP یک پروتکل مبتنی بر XML است و به منظور انتقال اطلاعات (درخواست و پاسخ) در شبکه ها (خصوصا اینترنت) به کار می رود. به عبارت دیگر SOAP چیزی بیش از یک قرارداد مبتنی بر XML نیست که فرستده و گیرنده باید قالب آنرا رعایت کنند تا بتوانند با یکدیگر تعامل داشته باشند. یکی از ویژگی های اصلی SOAP این است که Firewallها مانع آن نمی شود.
ویژگیهای SOAP:
1. یک پروتکل ارتباطی است
2. به منظور تعامل میان برنامه ها و/یا سرویس ها به کار می رود
3. مستقل از Platform است
4. مستقل از زبان است
5. مبتنی بر XML است
6. ساده و قابل توسعه است
امروزه برنامه ها با استفاده از Remote Procedure Calls (RPC) با یکدیگر تعامل می کنند اما HTTP برای این منظور طراحی نشده است. RPC دارای مشکل سازگاری و امنیت است و Firewall ها و Proxy Server ها عموما این نوع از ارتباط را مسدود می کنند. راه حل بهتر برای این گونه ارتباط، استفاده از بستر HTTP است که توسط طیف وسیعی از سرورها و مرورگرها پشتیبانی می شود. SOAP به منظور ایجاد این گونه ارتباط بروی بستر HTTP به وجود آمده است.
یکی از مهمترین مزایای SOAP استقلال آن از زبان برنامه و Platform است. به این مفهوم که SOAP می تواند پروتکل مشترک ارتباطی میان دو برنامه با زبان های مختلف (مثلا .Net و PHP) و/یا دو Platform متفاوت (مثلا Windows و Linux) باشد.
معایب SOAP:
- به دلیل طولانی بودن ساختار XML آن، در مواردی که پیام ارسالی طولانی باشد کند عمل می کند.
- نظر به اینکه سادگی از اصول اولیه SOAP است، این ویژگی منجر به قربانی شدن امنیت و قابلیت اعتماد شده است.
- به دلیل استفاده SOAP از HTTP، Firewall ای که صرفا برای مرور وب طراحی شده است به سادگی اجازه انتقال HTTP Packets را نمی دهد.
می خواستم ساختار SOAP را در اینجا نمایش دهم که متوجه شدم بلاگفا این ساختار را به جای نمایش parse می کند و به جای ساختار، خروجی آنرا نمایش می دهد! در صورت علاقه مندی می توانید ساختار آنرا در سایت http://www.w3.org مشاهده کنید.
References:
1. http://www.w3schools.com/soap
2. http://www.w3.org/TR/2000/NOTE-SOAP-20000508
3. http://en.wikipedia.org/wiki/Simple_Object_Access_Protocol
4. http://www.radcom.ir/kb-soap-fa.html
5. E-Book: Pro WCF: Practical Microsoft SOA Implementation By: Chris Peiris & Dennis Mulder, Apress publication