WSDL, SOAP และ REST

บทความนี้จะพูดถึง WSDL ,SOAP และ REST การทำงานของแต่ละตัวทำงานอย่างไร

  • Web Service ทั้งหมดเป็น API แต่ตัว API ทั้งหมดไม่ใช่ Web Service
  • Web Service จำกัดการทำงานอยู่บน HTTP ไม่สามารถทำงานได้ในระบบปฏิบัติการหรือสภาพแวดล้อมอื่นๆ แต่ API สามารถทำงานได้ในทุกระบบปฏิบัติการและสภาพแวดล้อม
  • รูปแบบการสื่อสารของ Web Service จะมีเพียงไม่กี่รูปแบบ เช่น SOAP, REST และ XML-RPC แต่ API สามารถใช้รูปแบบการสื่อสารได้หลากหลาย
  • Web Service จำเป็นต้องใช้ระบบเครือข่ายในการทำงาน แต่ API สามารถทำงานได้ทั้งแบบผ่านเครือข่ายและไม่ผ่านเครือข่าย
  • API สามารถสื่อสารกับส่วนต่างๆ ได้โดยตรงอย่างรวดเร็ว ส่วน Web Service การสื่อสารจะต้องผ่านหลายขั้นตอน รวมถึงต้องมีการแปลงข้อมูลให้อยู่ในรูปแบบ XML หรือ JSON ก่อนส่งข้อมูล และต้องแปลงข้อมูลกลับเมื่อจะนำไปใช้งานต่อในระบบ

----------------------------


WSDL คืออะไร?

Web Services Description Language หรือ WSDL คือ เอกสารข้อมูลในรูปแบบ XML ใช้ในการบอกหน้าที่การทำงานของ web service มีลักษณะเป็น file (.wsdl) ซึ่งสามารถอ่านออกได้ทั้ง human และ machine บ่งบอกถึงลักษณะการเรียกใช้งาน web service ค่า parameter อะไรบ้างที่ต้องใส่ และ โครงสร้างของ response กลับมาจะเป็นอย่างไร โดย WSDL อ่านว่า วิส-เต้าว์

ปัจจุบัน version ของ WSDL อยู่ที่ WSDL2.0 ซึ่งความหมายของตัวย่อได้เปลี่ยนไปจาก version 1.1 ที่ D หมายถึง “Definition”

หน้าที่ของ WSDL

WSDL ใช้ในการอธิบายถึงการให้บริการ ของฝั่ง endpoint ที่อยู่ในรูป XML format document มักถูกใช้งานควบคู่กับ SOAP เพื่อให้ข้อมูล XML Schema หรือโครสร้างของ Web service บน Internet โดยฝั่ง client program จะทำการเชื่อมต่อไปยัง web service เพื่ออ่านข่อมูล WSDL file และทำการวิเคราะห์คำสั่งที่สามารถใช้งานได้บน server ส่วนข้อมูล datatype แบบพิเศษที่จำเป็นก็ถูกรวมอยู่ใน WSDL file เช่นกัน ทำให้ client สามารถใช้งาน SOAP เพื่อส่งคำสั่งจากชุดข้อมูลใน WSDL file ไปบน HTTP

สำหรับ version 2.0 ในปัจจุบันจะทำการรับคำสั่ง HTTP ได้ทั้งหมดแล้วทั้ง GET, PUT, POST, DELETE (ไม่ใช่แค่ GET, POST ใน version1.1) แน่นอนว่าย่อมรองรับได้ดีขึ้นสำหรับ RESTful webservice อย่างไรก็ตามการทำให้รองรอบตามมาตราฐานยังค่อยข้างยากสำหรับชุด software ที่มีอยู่ เพราะส่วนใหญ่รองรับ WSDL 1.1 ซะมากกว่า

----------------------------

SOAP คืออะไร?

SOAP ย่อมาจาก Simple Object Access Protocol ถูกกำหนดขึ้นมาตั้งแต่ปี 1998 เป้าหมายเพื่อใช้ในตลาด enterprise โดยเฉพาะ SOAP นั้นต้องสร้างให้ application logic ออกมาเป็น service โดยเป้าหมายเพื่อเป็น protocol ใหม่ของการติดต่อสื่อสาร

ข้อดี

  • สามารถทำงานอยู่บน protocol ใด ๆ ก็ได้
  • อธิบาย service ด้วย WDSL (Web Service Description Language)
  • มีความน่าเชื่อถือ เมื่อเกิดปัญหาสามารถทำการ retry ได้
  • สนับสนุนเรื่อง security อยู่แล้ว ทั้ง authentication, authorization และ การเข้ารหัสข้อมูล

ข้อเสีย

  • ยากต่อการพัฒนา ทำให้ไม่เป็นที่นิยมสำหรับระบบ web และ mobile
  • สนับสนุนรูปแบบข้อมูล XML เพียงอย่างเดียว
  • เนื่องจากมันเป็น standard ทำให้มีข้อจำกัดเยอะ
  • เนื่องจากโครงสร้างมันมีหลายส่วนทำให้มี overhead สูง หรือ ต้องใช้ bandwidth สูงกว่า REST

เมื่อไรถึงควรใช้ SOAP

  • เมื่อต้องการจัดการ transaction เมื่อต้องทำงานกับหลาย ๆ ระบบ
  • เมื่อต้องการความเข้มงวดในการเชื่อมต่อระหว่าง client/server
  • เมื่อตัวอย่างเช่น Finacial service และ Telecommunication service

ดังนั้นจึงไม่แปลกว่า ทำไมในองค์กรใหญ่ ๆ เหล่านี้ใช้ SOAP กันมาก

----------------------------

REST คืออะไร?

REST ย่อมาจาก Representational State Transfer ถูกกำหนดขึ้นมาตั้งแต่ปี 2000 เป้าหมายเพื่อเป็นรูปแบบหนึ่งในการออกแบบ open web technology โดยต้องการทำให้ข้อมูลอยู่ในรูปแบบของ resource ส่วนการกระทำต่าง ๆ เป็นไปตาม HTTP Verb หรือ HTTP Method (GET, POST, PUT, DELETE) และทำงานแบบ Stateless

ข้อดี

  • ทำการอยู่บน HTTP และทำตามมาตรฐานของ HTTP จึงทำให้พัฒนาได้ง่าย
  • สนับสนุนรูปแบบข้อมูลมากมาย เช่น XML, JSON, Plain Text และอื่น ๆ อีกมากมาย
  • รองรับการขยายระบบได้ง่าย
  • มีประสิทธิภาพการทำงานที่ดี
  • รองรับเรื่อง caching ข้อมูล

ข้อเสีย

  • ทำงานได้เฉพาะ HTTP protocol เท่านั้น
  • ไม่มีเรื่องของ security และ reliability มาให้ในตัว ดังนั้นต้องทำเอง
  • รูปแบบข้อมูลที่ส่งไปมาระหว่าง client-server ไม่มีข้อจำกัดอะไรเลย

เมื่อไรถึงควรใช้ REST

  • เมื่อต้องการลดขนาดของข้อมูล และ จำนวน bandwidth ที่ใช้งาน
  • เมื่อต้องการเมื่อทำงานอยู่บนระบบ web และ mobile ตัวอย่างเช่น Social media service, Web Chat service

ดังนั้นจึงไม่แปลกว่า ทำไมระบบ web และ api ต่าง ๆ ผ่าน web จึงเป็น REST

0
465