Soap protocol

SOAP คืออะไร

Simple Object Access Protocol หรือ SOAP คืออะไร ? มันคือ protocol specification ชนิดหนึ่งที่ใช้สำหรับแลกเปลี่ยนข้อมูล ผ่านทาง Webservice ระหว่าง network ในรูปแบบ XML format โดยทำงานอยู่ใน application layer (OSI layer) มักจะอาศัย protocol HTTP หรือ SMTP ในการส่งข้อมูลระหว่างกัน

ตั้งแต่ที่ HTTP สามารถติดตั้งใช้งานได้ทุก OS ทำให้ SOAP สามารถทำงานต่าง OS กันได้ เช่น Window กับ Linux  โดยสื่อสารผ่านทาง Extensible Markup Language (XML)

 

คุณสมบัติของ SOAP

SOAP สามารถทำเป็น webservice เพราะมี Messaging Protocol layer โดยอาศัย XML-base โดยมีลักษณะดังนี้

  1. ปรับเพิ่มได้ ไม่ว่าจะเป็นเรื่อง security และ routing
  2. เป็นกลาง สามารถทำงานได้หลาย protocol เช่น HTTP, SMTP, TCP, UDP, JMS
  3. เป็นอิสระ สามารถเขียน program ในรูปแบบไหนก็ได้

 

โครงสร้างของ SOAP

SOAP message จะอยู่ในรูป XML format ซึ่งมีส่วนประกอบดังนี้

Element Description Required
Envelope  ส่วนของ XML document เพื่อบ่งบอกว่าเป็น SOAP message Yes
Header  เป็นส้วนข้อมูลของ header No
Body  ส่วนของข้อมูล request/response Yes
Fault  ข้อมูลสาเหตุความผิดพลากระหว่างการทำงานของ message No

Soap schema

 

ตัวอย่าง SOAP บน HTTP

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="http://www.example.org/stock/Surya">
  <soap:Header>
  </soap:Header>
  <soap:Body>
    <m:GetStockPrice>
      <m:StockName>GOOGLE</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>

 

ข้อดีของ SOAP

  • เป็น platform ที่ไม่จำกัดภาษาที่ใช้งาน
  • SOAP ง่ายต่อการสื่อสารผ่าน proxy และ firewall เพราะเป็น http
  • มีความสามารถในการทำงานต่าง protocol ใน transport layer

ข้อเสียของ SOAP

  • SOAP ค่อนข้างช้า ถ้าเทียบกับ มาตราฐานอื่น เช่น CORBA เพราะ SOAP ใช้ XML format ขนาดใหญ่
  • SOAP มีข้อจำกัดในเรื่องการทำ pool เพราะ client สามารถใช้งาน ได้เพียงแค่ 1 service ในสถานการณ์ปกติ
  • เนื่องจากใช้ HTTP ใน transport protocol ทำให้บางครั้ง เมื่อผ่าน firewall จะเกิด latency สูงเพราะแยกไม่ออกระหว่าง web browser และ SOAP
  • SOAP support หลายภาษาก็จริง แต่ระดับความสามารถไม่เท่ากันเช่น python และ PHP จะสู้ Java และ .NET ไม่ได้

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com,https://en.wikipedia.org

2 Thoughts to “SOAP คืออะไร SOAP Protocol ใช้แลกเปลี่ยนข้อมูลระหว่าง webservice”

  1. […] ซึ่งต่างจาก webservice แบบอื่นเช่น WSDL และ SOAP การทำงานของ RESTful Webservice จะอาศัย URI/URL ของ […]

Leave a Reply