فناوری
وب سرویس SOAP چیست؟
SOAP یک پروتکل مبتنی بر XML برای دسترسی به سرویسهای وب از طریق HTTP است. این پروتکل دارای برخی مشخصات است که میتواند در تمام برنامهها استفاده شود.
SOAP که در ابتدا با نام Simple Object Access Protocol شناخته میشد، بعدها به SOAP v1.2 اختصار یافت. SOAP تعریفی از نحوه مکالمه سرویسهای وب با یکدیگر یا گفتگو با برنامههای مشتری است که آنها را فراخوانی میکند.
SOAP به عنوان یک زبان میانی توسعه داده شد تا برنامههای کاربردی ساخته شده بر اساس زبانهای مختلف برنامهنویسی بتوانند به راحتی با یکدیگر صحبت کرده و از بروز مشکلات در توسعه آنها جلوگیری شود.
SOAP چیست؟
در دنیای امروز، تعداد زیادی برنامه وجود دارد که بر اساس زبانهای مختلف برنامهنویسی ساخته شدهاند. به عنوان مثال، یک برنامه وب میتواند با Java طراحی شود، دیگری با .Net یا PHP.
تبادل داده بین برنامهها در دنیای شبکهای امروز بسیار مهم است. اما تبادل داده بین این برنامههای ناهمگون پیچیده خواهد بود. پیچیدگی کد برای انجام این تبادل داده نیز وجود خواهد داشت.
یکی از روشهایی که برای مقابله با این پیچیدگی استفاده میشود استفاده از XML (زبان نشانهگذاری قابل گسترش) به عنوان زبان میانی جهت تبادل داده بین برنامهها است.
هر زبان برنامهنویسی میتواند زبان نشانهگذاری XML را درک کند. از این رو، XML به عنوان بستر اصلی جهت تبادل داده مورد استفاده قرار گرفت.
اما در مورد استفاده از XML در تمام زبانهای برنامهنویسی برای تبادل داده، هیچ استاندارد مشخصی وجود ندارد. اینجاست که نرمافزار SOAP وارد میشود.
SOAP برای کار با XML از طریق HTTP طراحی شده است و دارای نوعی مشخصات میباشد که میتواند در همه برنامهها مورد استفاده قرار گیرد.
مزایای SOAP
SOAP پروتکلی است که برای تبادل داده بین برنامهها استفاده میشود. در زیر برخی دلایل استفاده از SOAP آورده شده است.
- هنگام توسعه سرویسهای وب مبتنی بر SOAP، باید برخی از زبانها را داشته باشید که میتوانند جهت صحبت با برنامههای مشتری استفاده شود. SOAP بهترین واسطهای میباشد که برای دستیابی به این هدف تولید شده است. این پروتکل همچنین توسط کنسرسیوم W3C که نهاد حاکم برای کلیه استانداردهای وب است توصیه میشود.
- SOAP یک پروتکل سبک وزن است که برای تبادل داده بین برنامهها استفاده میشود. به کلمه کلیدی “سبک وزن” توجه کنید. از آنجا که برنامهنویسی SOAP مبتنی بر زبان XML (یک زبان تبادل داده سبک وزن) است، بنابراین SOAP به عنوان یک پروتکل در همان گروه قرار میگیرد.
- SOAP بصورت مستقل از سیستمعامل و پلتفرم طراحی شده است. بنابراین پروتکل SOAP میتواند با هر برنامه و هر زبان برنامهنویسی، در هر دو سیستمعامل ویندوز و لینوکس کار کند.
- این پروتکل بر روی HTTP کار میکند، که پروتکل پیشفرضی است که توسط همه برنامههای وب استفاده میشود. بنابراین هیچ نوع سفارشیسازی برای اجرای سرویسهای وب ساخته شده بر روی پروتکل SOAP جهت کار در شبکه جهانی وب وجود ندارد.
اجزای SOAP
مشخصات SOAP چیزی را تعریف میکند که به عنوان “پیام SOAP” (SOAP Message) شناخته میشود و این همان چیزی است که به وب سرویس و برنامه مشتری ارسال میگردد.
نمودار زیر عناصر سازنده پیام SOAP را نشان میدهد.
پیام SOAP چیزی جز یک سند XML نیست که دارای مولفههای زیر میباشد:
- یک عنصر پوششدهنده (پوششدهنده) که سند XML را به عنوان یک پیام SOAP شناسایی میکند؛ این قسمت حاوی پیام SOAP است و برای در بر گرفتن تمام جزئیات پیام SOAP استفاده میشود. این عنصر اصلی در پیام SOAP است.
- یک عنصر هدر (Header) که شامل اطلاعات هدر است؛ عنصر هدر میتواند شامل اطلاعاتی مانند تصدیق اعتبار باشد که میتواند توسط برنامه تماسگیرنده استفاده شود. همچنین میتواند شامل تعریف انواع پیچیدهای باشد که در پیام SOAP استفاده میشوند. به طور پیشفرض، پیام SOAP میتواند شامل پارامترهایی باشد که از انواع سادهای مانند رشتهها و اعداد تشکیل شدهاند، اما همچنین ممکن است یک نوع شیء پیچیده باشد.
در زیر یک نمونه سرویس SOAP از نوع پیچیده نشان داده شده است.
فرض کنید ما میخواهیم یک نوع داده ساختاریافته ارسال کنیم که ترکیبی از “نام آموزش” (Tutorial Name) و “توضیحات آموزش” (Tutorial Description) باشد، پس ما نوع پیچیده را همانطور که در زیر نشان داده شده است تعریف میکنیم.
نوع پیچیده توسط برچسب عنصر <xsd: complexType> تعریف میشود. سپس تمام عناصر مورد نیاز سازه به همراه انواع داده مربوط به آنها در مجموعه نوع پیچیده تعریف میگردد.
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”Tutorial Name” type=”string”/>
<xsd:element name=”Tutorial Description” type=”string”/>
</xsd:sequence>
</xsd:complexType>
- یک عنصر بدنه (Body) که شامل اطلاعات تماس و پاسخ است. این عنصر شامل دادههای واقعی میباشد که باید بین سرویس وب و برنامه تماس ارسال گردد. در زیر یک مثال وب سرویس SOAP از بدنه SOAP وجود دارد که در واقع بر روی نوع پیچیده تعریفشده در بخش سرصفحه کار میکند. در اینجا پاسخ نام آموزش و توضیحات آموزش آمده است که به برنامه تماسی که با این سرویس وب تماس میگیرد، ارسال میشود.
<soap:Body>
<GetTutorialInfo>
<TutorialName>Web Services</TutorialName>
<TutorialDescription>All about web services</TutorialDescription>
</GetTutorialInfo>
</soap:Body>
جمعبندی
SOAP پروتکلی است که برای تبادل داده بین برنامههایی که با زبانهای برنامهنویسی مختلف ساخته شدهاند، استفاده میشود.
SOAP براساس مشخصات XML ساخته شده و با پروتکل HTTP کار میکند. این امر آن را برای استفاده در برنامههای وب بسیار مناسب میسازد.
اجزای SOAP از یک پیام SOAP تشکیل شدهاند. هر پیام SOAP از یک عنصر پوششدهنده، یک هدر و یک عنصر بدنه تشکیل میشود.
عنصر پوششدهنده عنصر اجباری در پیام SOAP است و برای محصورسازی همه دادههای پیام SOAP استفاده میشود.
از عنصر هدر می توان برای قرار دادن اطلاعاتی مانند اطلاعات تأیید اعتبار یا تعریف انواع دادههای پیچیده استفاده کرد.
عنصر بدنه، عنصر اصلی است که شامل تعریف روشهای وب همراه با هرگونه اطلاعات پارامتر در صورت نیاز میشود.