ในการพัฒนาระบบงานนั้น
เรามักจะแยกส่วนการทำงานต่าง ๆ ออกจากกัน
แต่จำเป็นต้องการติดต่อสื่อสารสารกันผ่านระบบ network
และมีรูปแบบของการติดต่อผ่านสิ่งที่เรียกว่า
API (Application Programming Interface)
ไม่ว่าจะอยู่ในรูปแบบของ code หรือตาม protocol ต่าง ๆ ก็ว่าไป
โดยที่คุณสมบัติของ API มักจะประกอบไปด้วย
- Customer หรือ Consumer-driven
- ใช้งานง่าย หรือ ยากต่อการใช้ผิด
- ค้นหาได้ง่าย
- มีหน้าที่ที่ชัดเจน
- มีความปลอดภัย
- รองรับการใช้งานที่สูงขึ้น
- มีประสิทธิภาพที่ดี
- Backward-compatibility
- มีรูปแบบที่เป็นมาตรฐาน หรือ ทำงานร่วมกับระบบอื่น ๆ ได้ง่าย
เมื่อเราไปดูเรื่องของรูปแบบ API ระหว่างระบบหรือ service
พบว่ามีหลายรูปแบบตามอายุหรือวิวัฒนาการเลย
ซึ่งเรียงตามดังนี้
- RPC (Remote Procedure Call)
- CORBA (Common Object) Request Broker Architecture)
- XML-RPC
- SOAP (Simple Object Access Protocol)
- REST
- JSON-RPC
- GraphQL, Falcor
- gRPC
ปล. ใครรู้จักทั้งหมดนี้ แสดงว่าอายุไม่น้อยแล้วนะ !!
ในแต่ละแบบนั้นล้วนมีข้อดีและข้อเสียแตกต่างกันไป
รวมทั้ง use case ของการใช้งานเช่นกับ เช่น
- Abstraction ของข้อมูล
- การใช้งานที่ง่าย ในมุมมองของผู้ใช้งาน หรือ ผู้สร้าง
- แยกการทำงานกันชัดเจน หรือ ผูกมัดกันให้น้อย (Loose coupling)
- เรื่องของขนาดของ bandwidth ที่ใช้งาน
- Learning curve
ผู้นำไปใช้งานนั้น จำเป็นต้องรู้และเข้าใจเช่นกันว่า
รูปแบบของ API แต่ละอย่างเป็นอย่างไร
มีข้อดีข้อเสียกับ use case ของเราอย่างไร
เพื่อช่วยให้เราเลือกได้อย่างเหมาะสม
ลองศึกษาเพิ่มเติมกันดูครับ