Library VS Framework VS API VS Plugin
Library, Framework, Plugin, API ต่างเป็นคำที่เราได้ยินกันบ่อยมากครับ
เรามาทำความเข้าใจของแต่ละชนิด และความแตกต่างกันครับ
Library
// PHPMailer require 'vendor/PHPMailer/PHPMailerAutoload.php'; $mail_customer = new PHPMailer; $mail_customer->isSMTP(); $mail_customer->SMTPAuth = true; $mail_customer->Host = EMAIL_HOST; $mail_customer->Username = EMAIL_USER; $mail_customer->Password = EMAIL_PASS; $mail_customer->Port = EMAIL_PORT; $mail_customer->SMTPSecure = 'tls'; $mail_customer->Priority = 3; $mail_customer->isHTML( true ); $mail_customer->Subject = SITE_TITLE;
ปกติแต่ละ Library จะออกแบบมาเพื่อ 1 วัตถุประสงค์ครับ และมีลักษณะคือ
- เรามี Source code (Download ของเขามา สามารถปรับแต่งได้ตาม License)
- เราเรียกใช้เอง
อย่างตัวอย่างจะเป็น PHPMailer ที่ใช้ในการส่งเมลครับ
จะเห็นว่าเรา include ตัว library เข้ามาเอง ตั้งค่าและเรียกใช้เองครับ
Framework
ตัวนี้ค่อนข้างคลุมเครือครับ อาจจะเป็น
- Library
- ที่รวม / เก็บ Library หลายๆอย่าง ที่มีวัตถุประสงค์เดียวกัน
- ที่รวมส่วนๆหลายๆส่วนมารวมกัน
ส่วนตัวผมให้น้ำหนักอันหลังสุด คือรวมส่วนต่างๆมารวมกัน และผมเพิ่มนิยามเข้าไปอีกด้วยว่า เราต้องทำตามระบบของเขา
ยกตัวอย่างคือ PHP Framework ต่างๆครับไม่ว่าจะเป็น CodeIgniter, Laravel ซึ่งมีระบบ
ที่รวมๆการทำงานต่างๆเบื่องต้นในการสร้าง Web Application ให้เราแล้ว
และเราต้องทำตาม Pattern ของระบบเขาเช่น Routing, MVC, Validation, Request
ส่วนข้อ 1 และ 2 นี่ผมถือว่า ถ้าผมเจอ Framework ไหนที่เป็นแค่ Library
หรือที่ รวม Library ที่มีวัตถุประสงค์เดียวกันผมจะถือว่าคือ Library เลยเพื่อกันความสับสน
API
คือปกติเวลาเราสร้าง Program ขึ้นมาหนึ่งๆ เนี่ยแล้วเราอยากให้คนอื่นใช้ได้ด้วย เราก็ต้องสร้าง “ช่องทาง” เพื่อให้เขาใช้โปรแกรมของเราได้
แต่จะให้เขาเข้ามาตรงๆไม่ได้ เพราะอาจจะเกิดปัญหาตามมาด้านความปลอดภัยของตัว Program เราได้
ดังนั้นเขาก็ต้องทำตามข้อกำหนดที่เรากำหนดไว้ เช่นการจะ Request ได้แค่แบบนี้, ต้องกำหนด Parameter แบบนี้, ผลลัพธ์จะออกเป็นแบบนี้นะ (แล้วแต่จะกำหนด)
ซึ่ง “ช่องทาง” นี่แหละครับคือ API – ถ้าดูแบบนี้จะคล้ายกับ Library มากครับ เพราะคือการเรียกใช้เหมือนกันแต่ ต่างกันที่ Source code นั้นไม่ได้อยู่ที่เรา
(รูปตัวอย่างคือ Google Maps API ผ่านทาง Javascript)
Plugin
ตัวนี้จะเป็นส่วนต่อ / ส่วนเพิ่มที่ Require ตัวหลักของด้วยครับ อาจะเป็นส่วนต่อของ Library และ Framework
ส่วน API ยังไงเราก็ใช้ของเขาอยู่แล้วถ้าเขามีส่วนเพิ่มเติมก็อาจจะมาในรูปแบบ ให้เราใส่ Parameter เพิ่มเข้าไป
ยกตัวอย่างคือ jQuery ที่เป็น Javascript Library ซึ่งมี Plugin (ลองดูได้ jQuery Rain ครับ)
Plugin พวกนี้จำเป็นต้องใช้งาน Library หลักก่อน ซึ่งก็คือ jQuery ครับ