پروتکل دسترسی آسان به اشیاء

از ویکی‌پدیا، دانشنامهٔ آزاد.

با استفاده از پروتکل دسترسی آسان به اشیاء (Simple Object Access Protocol - SOAP) می‌توان به ارسال و تبادل پیامهایی از جنس اکس‌ام‌ال بر روی شبکه‌های رایانه‌ای مبادرت کرد.

SOAP

SOAP یک پروتکل برای تبادل پیغامهای مبتنی بر XML در میان شبکه های کامپیوتری است که معمولا از HTTP/HTTPS استفاده می کند. SOAP لایه زیر بنای web services stack را تشکیل می دهد که یک چارچوب پیغام دهی ایجاد می کند که لایه های انتزاعی بیشتری می توانند بر روی آن ایجاد شوند. طرحهای پیغام دهی مختلفی در SOAP موجودند که معمول ترین آنها طرح remote procedure call می باشد و بدین گونه است که یک گره شبکه (مشتری) یک پیغام درخواست را به گره دیگر (سرور) می فرستد و سرور بسرعت یک پیغام پاسخ را به مشتری می فرستد. SOAP جانشین XML-RPC می باشد که خنثی بودن درمورد انتقال و تبادل را از آن و پوشش/سرفصل/بدنه را از جای دیگر (معمولا WDDX) بعاریه گرفته است. SOAP در ابتدا بعنوان مخفف Simple Object Access Protocol و اخیرا به معنای Service Oriented Architecture Protocol بکار گرفته شده است. SOAP توان استفاده از یک پروتکل لایه application اینترنت را بعنوان یک پروتکل انتقال، ایجاد می کند. انتقاداتی مطرح شده است مبنی براین که این کار یک جور سوء استفاده از چنین پروتکلهایی می باشد، چونکه این هدفی نبوده است که برایش در نظر گرفته شده باشد و بنابراین نمی تواند به خوبی از عهده این نقش برآید. اما طرفداران SOAP تناسب را در استفاده موفق از پروتکلها در سطوح مختلف برای tunneling سایر پروتکلها، گوشزد کرده اند. SMTP و HTTP هردو پروتکلهای مجاز لایه application هستند که بعنوان انتقال برای SOAP استفاده شده اند اما از آنجا که HTTP بخوبی با زیر ساختهای امروزی اینترنت کار می کند، بیشتر مورد پذیرش قرار گرفته است، بویژه اینکه SOAP بخوبی با firewallها کار می کند. SOAP می تواند بر روی HTTPS نیز استفاده شود (چونکه آن هم دارای پروتکل مشابه HTTP در لایه application است ولی در زیر آن از پروتکل انتقال انکریپت شده استفاده می کند.). این متد مورد نظر WS-I برای ایجاد امنیت در سرویسهای وب است. این یک پیشرفت بزرگ در برابر سایر پروتکلهای منتشری چون GIOP/IIOP یا DCOM است که بطور طبیعی توسط firewallها فیلتر می شوند. XML بعنوان فرمت استاندارد پیغامها انتخاب شده است چونکه بطور گسترده ای توسط موسسات بزرگ و موارد کد باز مورد استفاده قرار می گیرد. بعلاوه، تعداد زیادی از ابزارهایی که بطور رایگان در دسترس هستند، بطور مشهود سبب راحتی تبدیل به یک کاربری های مبتنی بر SOAP می شود. ترکیب نحوی عمدتا طولانی XML می تواند هم حسن باشد و هم نقص. فرمت آن برای انسانها قابل خواندن است اما می تواند پیچیده باشد و زمان پردازش آن آهسته باشد. بعنوان مثال، CORBA،GIOP، ICE و DCOM از فرمتهای پیغام باینری کوتاهتر استفاده می کنند. از طرفی، وسایل سخت افزاری در دسترس هستند تا پردازش پیغامهای XML را تسهیل می کنند.

له و علیه مواهب: - استفاده از SOAP روی HTTP در مقایسه با تکنولوژیهای اجرایی قبلی، سبب تسهیل ارتباط در پس پراکسی ها و فایروال ها می شود. - SOAP به حدی فراگیر است که استفاده از پروتکلهای انتقال مختلف را مقدور می سازد. Strackهای استاندارد از HTTP بعنوان یک پروتکل انتقال استفاده می کنند اما از سایر پروتکلها نیز می توان استفاده نمود (TCP, SNMP). ضعف: - بعلت فرمت مطول XML، SOAP می تواند بطور قابل ملاحظه ای نسبت به تکنولوژیهای میان افزار رقیب مانند CORBA کندتر باشد. این مساله هنگامی که پیغامهای کوتاه تبادل می شوند، چندان قابل توجه نیست. از سوی دیگر، SOAP دارای مکانیسم بهینه سازی انتقال پیغام می باشد. - بسیاری از کاربری های SOAP مقدار داده هایی را که باید فرستاده شود، محدود می کنند. - اکثر استفاده ها از HTTP بعنوان یک پروتکل انتقال، با چشم پوشی از این مساله که چگونه این عمل در HTTP مدل بندی می شود، انجام می گیرد. این چشم پوشی به عمد انجام می گیرد (با قیاس به اینکه چگونه پروتکلهای مختلف در IP stack بر روی همدیگر می نشینند) اما این قیاس ناقص است (چون پروتکلهای application استفاده شده بعنوان پروتکلهای انتقال، در واقع پروتکلهای انتقال نیستند). به همین دلیل راهی وجود ندارد که بدانیم آیا متد استفاده شد برای عمل مورد نظر مناسب است یا خیر. این مساله، تحلیل درست عملیات را در سطح application-protocol با مشکل مواجه می سازد که در بهترین وجهش به سبب نتایج غیر بهینه است (اگر اتصالات مبتنی بر POST برای یک application استفاده شده است که در HTTP ممکن است بطور خنثی تر بعنوان عملیات GET مدل بندی شده باشد) و می تواند دارای باگ باشد (اگر بعنوان مثال اتصالات مبتنی بر GET برای عملیاتی استفاده شده باشد که دارای idempotency مورد نیاز GET نباشد.)