MAHDIAR
20th March 2010, 12:12 AM
SOAP چیست؟ SOAP مخفف Simple Object Access Protocol است. SOAP یک پادمان مبتنی بر XML است، برای رد و بدل کردن اطلاعات بین برنامه ها. اطلاعات در SOAP به صورت پیام (Message) و از طریق پادمانهای موجود در اینترنت مانند HTTP منتقل میشود (SOAP در سایر پادمان ها، مانند SMTP یا MIME نیز قابل استفاده است). به زبان سادهتر، SOAP یک پادمان است برای دستیابی به یک سرویس ارایه شده در وب (Web Service). آخرین نسخه SOAP، نسخه 1.2 میباشد.
ویژگی های SOAP
یک پادمان ارتباطی است.
برای ارسال پیام استفاده میشود.
برای محیط اینترنت و شبکه طراحی شده است.
وابسته به محیط پیاده سازی و اجرا نیست. ( Platform Independent)
مبتنی بر XML است.
از دیوارهای آتش (Firewall) گذر میکند ودیوارهای آتش مانع آنها نمی شوند (Block نمیشوند).
یکی از مسایلی که در دهه اخیر از اهمیت خاصی برخوردار بوده، چگونگی ارتباط برنامه های تحت اینترنت با یکدیگر بوده است. همانطور که میدانید برنامه های عادی از RPC (Remote Procedure Call) برای فراخوانی اشیاء DCOM یا CORBA، استفاده میکنند. اما مشکلی که در این نوع فراخوانیها در بستر اینترنت وجود دارد، مسدود شدن این نوع ترافیکها در Proxy Server ها و دیوارهای آتش (Firewall ها) است.
در صورت استفاده از SOAP با این مشکل روبرو نخواهید بود. SOAP به راحتی شما را قادر خواهد کرد تا بین برنامه هایی که در بسترهای متفاوت طراحی شده اند و در بسترهای متفاوتی در حال سرویس دهی هستند، ارتباط برقرار کنید.
http://www.radcom.ir/content/fa/kb/soap/image001.gif
ساختار SOAP
پیام ها (Message ها) در SOAP یک فایل XML هستند که از ساختار زیر پیروی میکنند:
یک بخش ضروری که به آن Envelope (پاکت نامه) گفته میشود که مشخص میکند که این XML یک پیام SOAP است.
قسمت سرآیند (Header)که اختیاری است. این بخش شامل اطلاعاتی در مورد خود برنامه است. در صورتی که از سرآیند استفاده شود، باید اولین عنصر در ساختار Envelope باشد.
قسمت بدنه که ضروری است و شامل Call یا Response است. در واقع مشخص کننده درخواستِ برنامهی سرویس گیرنده یا پاسخ برنامه سرویس دهنده است.
قسمت Fault که قسمت خطا است و اختیاری است و اطلاعاتی درباره خطاهای بوجود آمده در هنگام پردازش پیام در خود دارد.
http://www.radcom.ir/content/fa/kb/soap/image002.gif
قوانین مهم در ساختار پیام
پیام حتماً باید در قالب XML باشد.
باید از Namespace تعریف شده در Envelope پیروی کند.
فقط باید از نوع داده های تعریف شده و مجاز استفاده کند.
در قالب پیام، نباید از DTD استفاده شود. DTD برای یک XML ، مانند Design View یک جدول در Database است و مشخص میکند که فیلدهای آمده در XML از چه نوع هستند و با چه ترتیبی میآیند. برای مثال:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
نباید شامل دستورات پردازشی باشد.
قالب کلی پیام
قالب پیام به صورت زیر است:
<?xmlversion="1.0"?>
<
soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
برای مشاهده جزئیات بیشتر و ساختار کامل پیام آدرس زیر را کلیک کنید.
http://www.w3.org/2001/12/soap-envelope (http://www.w3.org/2001/12/soap-envelope)
نوع داده های مجاز را نیز در آدرس زیر میتوانید مشاهده کنید:
http://www.w3.org/2001/12/soap-encoding (http://www.w3.org/2001/12/soap-encoding)
توجه: encodingStyle مشخص کننده قالب نامه است که به طور استاندارد مقدار مشخص شده در مثال را دارد.
ویژگی های SOAP
یک پادمان ارتباطی است.
برای ارسال پیام استفاده میشود.
برای محیط اینترنت و شبکه طراحی شده است.
وابسته به محیط پیاده سازی و اجرا نیست. ( Platform Independent)
مبتنی بر XML است.
از دیوارهای آتش (Firewall) گذر میکند ودیوارهای آتش مانع آنها نمی شوند (Block نمیشوند).
یکی از مسایلی که در دهه اخیر از اهمیت خاصی برخوردار بوده، چگونگی ارتباط برنامه های تحت اینترنت با یکدیگر بوده است. همانطور که میدانید برنامه های عادی از RPC (Remote Procedure Call) برای فراخوانی اشیاء DCOM یا CORBA، استفاده میکنند. اما مشکلی که در این نوع فراخوانیها در بستر اینترنت وجود دارد، مسدود شدن این نوع ترافیکها در Proxy Server ها و دیوارهای آتش (Firewall ها) است.
در صورت استفاده از SOAP با این مشکل روبرو نخواهید بود. SOAP به راحتی شما را قادر خواهد کرد تا بین برنامه هایی که در بسترهای متفاوت طراحی شده اند و در بسترهای متفاوتی در حال سرویس دهی هستند، ارتباط برقرار کنید.
http://www.radcom.ir/content/fa/kb/soap/image001.gif
ساختار SOAP
پیام ها (Message ها) در SOAP یک فایل XML هستند که از ساختار زیر پیروی میکنند:
یک بخش ضروری که به آن Envelope (پاکت نامه) گفته میشود که مشخص میکند که این XML یک پیام SOAP است.
قسمت سرآیند (Header)که اختیاری است. این بخش شامل اطلاعاتی در مورد خود برنامه است. در صورتی که از سرآیند استفاده شود، باید اولین عنصر در ساختار Envelope باشد.
قسمت بدنه که ضروری است و شامل Call یا Response است. در واقع مشخص کننده درخواستِ برنامهی سرویس گیرنده یا پاسخ برنامه سرویس دهنده است.
قسمت Fault که قسمت خطا است و اختیاری است و اطلاعاتی درباره خطاهای بوجود آمده در هنگام پردازش پیام در خود دارد.
http://www.radcom.ir/content/fa/kb/soap/image002.gif
قوانین مهم در ساختار پیام
پیام حتماً باید در قالب XML باشد.
باید از Namespace تعریف شده در Envelope پیروی کند.
فقط باید از نوع داده های تعریف شده و مجاز استفاده کند.
در قالب پیام، نباید از DTD استفاده شود. DTD برای یک XML ، مانند Design View یک جدول در Database است و مشخص میکند که فیلدهای آمده در XML از چه نوع هستند و با چه ترتیبی میآیند. برای مثال:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
نباید شامل دستورات پردازشی باشد.
قالب کلی پیام
قالب پیام به صورت زیر است:
<?xmlversion="1.0"?>
<
soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
برای مشاهده جزئیات بیشتر و ساختار کامل پیام آدرس زیر را کلیک کنید.
http://www.w3.org/2001/12/soap-envelope (http://www.w3.org/2001/12/soap-envelope)
نوع داده های مجاز را نیز در آدرس زیر میتوانید مشاهده کنید:
http://www.w3.org/2001/12/soap-encoding (http://www.w3.org/2001/12/soap-encoding)
توجه: encodingStyle مشخص کننده قالب نامه است که به طور استاندارد مقدار مشخص شده در مثال را دارد.