Simple Object Access Protocol : SOAP

Simple Object Access Protocol : SOAP

•  Inter application communication

เทคโนโลยิปัจจุบันที่ใช้มีการสื่อสารระหว่าง Object ในระยะไกล (Remote Procedure Call : RPC) เช่น DCOM, CORBA  ซึ่งไม่ได้ถูกออกแบบมาใช้สำหรับโปรโตคอล HTTP และยังมีปัญหาเรื่อง Firewall และ Proxy server ดังนั้นจึงมีการเลือกใช้ SOAP ซึ่งทำงานแบบโปรโตคอล HTTP แล้วยังเป็นมาตรฐานเปิดที่จะสามารถติดต่อกับเครื่องที่มีความแตกต่างกันทั้ง OS, เทคโนโลยี และภาษาที่ใช้ในการพัฒนา

•  What is SOAP ?

– SOAP เป็นโปรโตคอลมาตรฐานที่ใช้ใน web service โดย SOAP จะมีพื้นฐานอยูบนมาตรฐาน XML และนิยมใช้ HTTP เป็นโปรโตคอลร่วมสำหรับส่งผ่านข้อมูลบนระบบอินเตอร์เนต

– หลักเกณฑ์ที่สำคัญของ SOAP
1. Message format : ใช้กำหนดแบบแผนสำหรับอธิบายเนื้อหา และรวบรวม message เป็น package
2. Description : คำอธิบายว่าจะใช้ HTTP หรือ SMTP
3. Set of Rules : กฏสำหรับการ encoding
4. Set of Conventions : การส่ง RPC ใน message

– SOAP จะใช้กฎเกณฑ์ของ RPC เป็นแบบแผนในการกำหนดวิธีส่งข้อมูลด้วยวิธี Request และรับข้อมูลด้วย Response

– SOAP เป็น lightweight protocol เพราะมีคุณสมบัติเพียงส่งและรับ HTTP และสามารถ process XML message

•  Distributed messing using SOAP : การส่งข้อมูลผ่าน SOAP

1. Application ของ client สร้าง SOAP message เพื่อเรียกใช้ web service ที่ Provider ประกาศไว้
2. Provider ได้รับ SOAP message จาก Client
3. Web service จะประมวลผลตาม Request
4. Web service ทำการส่งผลลัพธ์ มายัง Web service application
5. Provider สร้าง SOAP message พร้อมแนบผลลัพธ์ ส่งให้ Client
6. Client ได้รับ SOAP message พร้อมผลลัพธ์

• Structure of a SOAP message

– SOAP message อาจเทียบได้กับการส่งจดหมายที่มี application รวมข้อมูลไว้อยู่ภายใน ซึ่ง SOAP message ประกอบด้วย
1. SOAP <Envelop> : ใช้บรรจุเนื้อหาทั้งหมดของ SOAP message ไว้ภายใน
2. SOAP <Header> : ช่วยจัดเตรียมบริการต่างๆให้ กับเนื้อหา
3. SOAP <Body> : ใช้บรรจุเนื้อหาต่างๆ หรือ Payload ของ SOAP message โดย Payload สามารถใช้ RPC เพื่อเรียกดูข้อมูลที่อยู่ในรูปแบบ XML message ได้ ภายใน <Body> element จะประกอบด้วย Application-specific data และ fault message ซึ่งจะมีเพียงอย่างใดอย่างหนึ่งเท่านั้น

– SOAP Intermediaries : จะทำหน้าที่เป็นตัวผ่านหรือตัวกลางในการส่ง SOAP message จากต้นทางไปยังปลายทาง

•  SOAP communication model

– SOAP Communication Model ถูกนิยามโดยลักษณะการ Encoding และ Communication
1. Encoding Style : คือวิธีการของ Application ที่อยู่บน Platform ต่างกัน แชร์และแลกเปลี่ยนข้อมูลกัน ถึงแม้ว่าจะมีชนิดของข้อมูลที่แตกต่างกัน
2. Communication Style :

– Remote Procedure Call (RPC) Style : SOAP RPC เป็นการติดต่อสื่อสารในรูปแบบของการร้องขอ Request และการตอบรับ Response โดย SOAP message อาจกำหนดส่วนที่ใช้เชื่อมต่อ(interface) ด้วยการบรรจุ ชื่อ, พารามิเตอร์, return value ขึ้นกับรูปแบบของ SOAP message
– Document (Message) Style : SOAP messaging เป็นการส่ง SOAP ในรูปแบบของเอกสาร XML โดยใช้ SOAP node ในการส่งและรับข้อมูลโดย SOAP node ที่เป็นผู้่ส่งจะส่ง message ไปพร้อมกับ XML ใน Body ส่วน SOAP node ที่เป็นผู้รับจะรับ message เพื่อนำไปประมวลผล

•  SOAP fault message

– เมื่อ SOAP เกิดข้อผิดพลาดขึ้นจะสร้าง Error Information แล้วส่งกลับไปยังผู้่ส่งโดยจะเข้ารหัสใน Fault Element ส่วนของ element body

– Element ย่อย ของ Fault Element (อยู่ภายใต้ <env:fault>…</env:Fault> )
1. env:Code = ชื่อของการเิกิดข้อผิดพลาด ซึ่งจะมี sub element ย่อยอีกคือ env:value, env:Subcode
2. env:Reason  = แสดงคำอธิบายของข้อผิดพลาด
3. env:Detail  = ข้อมูลรายละเอียดเพิ่มเติมของข้อผิดพลาด (มีหรือไม่มีก็ได้)

•  SOAP over HTTP

– การใช้ HTTP เป็น Transport Protocol คือวิธีที่เหมาะสมที่สุดสำหรับการติดต่อสื่อสารของ SOAP ในรูปแบบ RPC โดยจะอยู่บนพื้นฐานของการ Request และการ Response ผ่าน HTTP ทำให้สามารถรับส่งข้อมูลได้ด้วยการส่งพารามิเตอร์ต่างๆ ไปกับ HTTP Request และรับพารามิเตอร์จาก HTTP Response

– สำหรับ GET : SOAP message คือ Response message (Request ไม่ใช่) แต่สำหรับ POST : SOAP message คือ Response message และ Request message

– ส่วน Header ของ HTTP ประกอบด้วย
1. Content-Type  : ใช้ระบุ MIME ของ message และรูปแบบการ Encoding
2. Content-Length : ใช้ระบุขนาด Body ในหน่วยไบต์

•  Advantages and disadvantages of SOAP

– Advantage : ข้อดี

–   โพรโตคอล SOAP สามารถให้เราเรียกใช้คอมโพเนนต์ หรือ เว็บเซอร์วิส ข้ามเครื่อง ข้าม แพลตฟอร์มหรือข้ามภาษา ได้ โดยอาศัยโพรโตคอลที่มีอยู่เดิมในอินเทอร์เน็ต อย่าง HTTP
–   โครงสร้างข้อมูลของ SOAP เป็นรูปแบบข้อความที่สื่อสารกันด้วยภาษา XML ซึ่งมีลักษณะเป็นข้อความธรรมดาๆปิดล้อมด้วยแท็ค ทำให้เข้าใจได้ในทุกแพลตฟอร์ม
–   โพรโตคอล SOAP สามารถทำงานผ่านระบบไฟล์วอลล์ ได้ง่ายเนื่องจาก SOAP ทำงานอยู่กับ   โพรโตคอล HTTP ซึ่งโดยธรรมชาติของไฟล์วอลล์ จะเปิดให้การสื่อสารด้วย HTTP ผ่านได้อย่างสะดวก
–   SOAP นั้นสนับสนุนจากหลายค่าย เช่น IBM, MS, SUN

– Disadvantage : ข้อเสีย

–   เนื่องจากลักษณะของ SOAP message เป็นเอกสาร XML ทำให้เสียเวลาในการแปลกลับมาเป็นรูปแบบที่โปรแกรมเข้าใจ
–   ในกรณีที่ SOAP ทำงานอยู่กับโพรโตคอล HTTP ซึ่งมีสมรรถนะในการรับ-ส่งข้อมูลต่ำกว่าโพรโตคอล DCOM, RMI, หรือ IIOP จึงทำให้โพรโตคอล SOAP มีอัตราการรับ-ส่งข้อมูลต่ำ

•  อ่านเพิ่มเติม

Intro SOAP

WebServices

Leave a comment