Monday, 3 March 2008

ความแตกต่างระหว่าง SOAP กับ REST

วันนี้ผมจะมาอธิบายความแตกต่างระหว่าง SOAP กับ REST แบบง่ายๆชาวบ้านๆเลยนะครับโดยทั้ง SOAP และ REST เกี่ยวข้องกับ Web Service ทั้งนั้นครับ โดย SOAP ย่อมาจาก "Simple Object Access Protocol" และ REST "Representational State Transfer" ผมขอยืมคำพูดจาก Blognone หน่อยนะครับผมว่าเขาอธิบายได้ดี

"ใน​การพัฒนา​เว็บเซอร์วิส​นั้น​เรา​สามารถ​เลือกที่​จะ​พัฒนา​แบบ​ SOAP ​หรือ​แบบ​ REST ​ก็​ได้​ ​ถ้า​เราพัฒนา​ SOAP Web services ​เรา​จะ​ต้อง​มีการส่งข้อ​ความ​ XML (เอกซ์​เอ็มแอล) ​ตามรูปแบบที่กำ​หนด​ไว้​โดย​โปรโตคอล​ SOAP ​อีก​ทั้ง​ต้อง​มี​เอกสารอธิบายการเรียก​ใช้​เว็บเซอร์วิสประกอบ​ ​ซึ่ง​เอกสารที่อธิบายนี้​จะ​เขียน​โดย​ใช้​ภาษา​ WSDL (วิสเดิล) ​ใน​แง่ของ​ผู้​เรียก​ใช้​ ​จะ​ต้อง​มีการ​เข้า​ใจเอกสารที่อฺธิบายการเรียก​ใช้​ SOAP Web services ​หรือ​มี​เครื่องมือที่​จะ​เข้า​ใจ​และ​เรียก​ใช้​ได้​อย่างถูก​ต้อง​ ​ใน​ขณะที่​ REST Web service ​จะ​เป็น​รูปแบบของซอฟต์​แวร์ที่มองว่าข้อมูลต่าง​ ​ๆ​ ​เป็น​ Resource ​ซึ่ง​คน​สามารถ​เรียก​ใช้​ได้​ผ่านทางโปรโตคอล​ HTTP ​และ​ข้อมูลที่ส่งกลับมา​ให้​ผู้​ใช้​เป็น​ข้อมูลรูปแบบ​ XML ​ใด​ ​ๆ​ ​ก็​ได้​ ​ใน​แง่ของ​ผู้​เรียก​ใช้​ REST Web service ​ก็ขอเพียงแค่​ให้​ทราบ​ URL ​ของ​ REST Web service ​และ​การอ่านข้อมูล​ XML ​ก็​จะ​ดึงข้อมูลที่ตนเอง​ต้อง​การ​ได้"

ถ้าจะว่าถึงความง่ายในการทำ Web Service ผมว่าทำง่ายพอๆกัน ถ้าคุณรู้จัก Tool ต่างๆแล้วรู้วิธีใช้ แต่ถ้าถามว่าอันไหนศึกษาแล้วทำได้ง่ายกว่าผมว่า REST จะง่ายมากครับเพียงคุณนำ Output ไปหุ้มด้วย XML เพียงเท่านี้คุณก็จะได้ Web Service แล้ว (แต่คนใช้ก็ต้องถอด xml ที่คนทำ web service ทำไว้ ซึ่งหา library มาใช้ง่ายมาก) ส่วน SOAP นั้นถ้าไม่ใช่ Tool Generate แล้วละก็ถือว่ามี Learning Curve ที่สูงเอาการเลย โดยภาษาที่ดังด้านนี้คือ .NET , PHP แล้วก็ Java (อันดับท้ายใน 3 เลยซะงั้น) ผมมี Resource มาฝากทุกท่านด้วยครับ

SOAP กับ REST คงยังต้องต่อสู้กันต่อไปกระแสคงบอกว่า SOAP จะดับแล้ว REST จะมาแทนที่แต่ผมว่าืัทั้ง 2 แบบมีจุดเด่นจุดด้อยของมันเอง เพียงแต่ REST มีจุดเด่นที่เรียนรู้และเข้าใจง่าย ทำให้คนส่วนใหญ่ชอบใช้งานแบบ REST มากกว่าก็เท่านั้นเอง...

1 comment:

Unknown said...

มีตัวอย่างOracle call web service แบบ REST มั้ยครับ