SOAP و وب‌سرویس

پروتکل SOAP برای وب‌سرویس‌های XML — ساختار پیام و WSDL (مفهومی)

SOAP چیست؟

SOAP مخفف Simple Object Access Protocol است؛ پروتکلی مبتنی بر XML برای تبادل پیام بین برنامه‌ها در شبکه (معمولاً با HTTP). SOAP در سیستم‌های سازمانی، بانکی و وب‌سرویس‌های قدیمی بسیار رایج است.

ساختار پیام SOAP

هر پیام SOAP یک پاکت (Envelope) است:

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <!-- سرآیند: اطلاعات تکمیلی (اختیاری) -->
    <soap:Header>
        <auth:Authentication xmlns:auth="https://example.com/auth">
            <auth:Token>abc123</auth:Token>
        </auth:Authentication>
    </soap:Header>

    <!-- بدنه: پیام اصلی (اجباری) -->
    <soap:Body>
        <getProductPrice xmlns="https://example.com/shop">
            <productId>101</productId>
        </getProductPrice>
    </soap:Body>

</soap:Envelope>
بخشتوضیح
Envelopeریشه پیام — فضای نام SOAP را تعریف می‌کند
Headerاختیاری — احراز هویت، تراکنش، متادیتا
Bodyاجباری — درخواست یا پاسخ واقعی
Faultداخل Body — اطلاعات خطا

پاسخ SOAP

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <getProductPriceResponse xmlns="https://example.com/shop">
            <price currency="USD">999</price>
        </getProductPriceResponse>
    </soap:Body>
</soap:Envelope>

پیام خطا (Fault)

<soap:Body>
    <soap:Fault>
        <faultcode>soap:Client</faultcode>
        <faultstring>Product not found</faultstring>
        <detail>
            <error productId="999" message="No such product"/>
        </detail>
    </soap:Fault>
</soap:Body>

WSDL — قرارداد سرویس

هر سرویس SOAP معمولاً یک فایل WSDL دارد که با XML توصیف می‌کند: چه عملیاتی دارد، چه پارامترهایی می‌گیرد و چه پاسخی می‌دهد. کلاینت با خواندن WSDL می‌داند چطور با سرویس حرف بزند.

SOAP در عمل (PHP)

// کلاینت SOAP در PHP — فوق‌العاده ساده!
$client = new SoapClient("https://example.com/service?wsdl");

$result = $client->getProductPrice(["productId" => 101]);
echo $result->price;   // 999
کتابخانه SOAP خودش پیام XML را می‌سازد و پاسخ را پارس می‌کند — شما با شی و متد کار می‌کنید، نه XML خام!

SOAP در برابر REST

معیارSOAPREST (معمولاً JSON)
قالب پیامفقط XMLJSON، XML، هر چیزی
پروتکلHTTP، SMTP، TCP...HTTP
قراردادWSDL رسمی و سخت‌گیرانهOpenAPI (اختیاری)
امنیتWS-Security سازمانیHTTPS، OAuth
سادگیپیچیده‌ترساده و وب‌پسند
کاربرد امروزبانکی، سازمانی، قدیمیوب و موبایل
حتی اگر هرگز سرویس SOAP ننویسید، به‌عنوان برنامه‌نویس حرفه‌ای باید ساختار پیام‌هایش را بشناسید — سیستم‌های بانکی و دولتی ایران و جهان هنوز پر از SOAP هستند و روزی با آن‌ها کار خواهید کرد!

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط