ความสัมพันธ์ระหว่าง SDK และ API คืออะไร
ในการพัฒนาซอฟต์แวร์ เมื่อขนาดของระบบเพิ่มขึ้นอย่างต่อเนื่อง การแบ่งระบบที่ซับซ้อนออกเป็นส่วนประกอบย่อยๆ จึงมีความสำคัญอย่างยิ่ง โดยเฉพาะอย่างยิ่งการออกแบบอินเทอร์เฟซ การออกแบบอินเทอร์เฟซที่ดีที่สุดคือการกำหนดความรับผิดชอบของระบบซอฟต์แวร์อย่างเหมาะสม การออกแบบอินเทอร์เฟซที่ดีสามารถลดการพึ่งพากันระหว่างส่วนต่างๆ ของระบบ เพิ่มความสอดคล้องของโมดูล และลดความเชื่อมโยงระหว่างโมดูล ซึ่งจะช่วยเพิ่มความสามารถในการบำรุงรักษาและความสามารถในการขยายระบบของระบบ API ในฐานะรูปแบบหนึ่งของอินเทอร์เฟซ มีบทบาทสำคัญในการโต้ตอบระหว่างโปรแกรม และ SDK และ API มีความสัมพันธ์ที่ใกล้ชิดกัน
01 API
(1) แนวคิดของ API
API หรือ "Application Programming Interface" คือชุดฟังก์ชันที่กำหนดไว้ล่วงหน้า ซึ่งมีจุดมุ่งหมายเพื่อทำหน้าที่เป็น "อินเทอร์เฟซ" เชื่อมต่อสองสิ่งที่ไม่เหมือนกัน มันให้วิธีการที่แอปพลิเคชันและนักพัฒนาสามารถเข้าถึงขั้นตอนย่อยของซอฟต์แวร์หรือฮาร์ดแวร์ได้ โดยไม่ต้องเข้าถึงซอร์สโค้ดหรือทำความเข้าใจรายละเอียดของกลไกการทำงานภายใน
ในความเป็นจริง API คือฟังก์ชันที่เขียนไว้ล่วงหน้าโดยผู้อื่น ซึ่งสามารถรับรู้ฟังก์ชันเฉพาะได้ คุณเพียงแค่ต้องเรียกใช้เมธอดตามอินเทอร์เฟซที่ให้มา และส่งผ่านพารามิเตอร์ที่ระบุ ฟังก์ชันนั้นจะช่วยให้คุณรับรู้ฟังก์ชันเหล่านี้

จากแนวคิดของ "อินเทอร์เฟซ" ในสาขาคอมพิวเตอร์ หมายถึงสถานที่ที่เอนทิตีที่แตกต่างกันสองแห่งโต้ตอบกัน ซึ่งอาจเป็นสองระบบที่แตกต่างกันอย่างสมบูรณ์ หรือสองส่วนของโปรแกรม ดังนั้น "I" ของอินเทอร์เฟซจึงสามารถเข้าใจได้ดังนี้ จากสิ่งนี้ สถานที่ที่ผู้คนโต้ตอบกับโปรแกรมเรียกว่า UI (User Interface) ซึ่งรวมถึงรูปแบบการป้อนข้อมูลทั้งหมด เช่น เมาส์ แป้นพิมพ์ หน้าจอสัมผัส และการป้อนข้อมูลด้วยเสียง เป็นต้น การโต้ตอบระหว่างโปรแกรมกับโปรแกรมเรียกว่า API การโต้ตอบทั้งหมดที่ไม่ใช่ของมนุษย์จะดำเนินการผ่าน API โดยพื้นฐานแล้ว การโต้ตอบคือการส่งข้อมูลและการทริกเกอร์ฟังก์ชัน
(2) การจำแนกประเภทของ API
API แบ่งออกเป็น API ระดับระบบ (เช่น Windows, Linux, Unix ฯลฯ) และ API ที่กำหนดเองที่ไม่ใช่ระดับระบบปฏิบัติการ รูปแบบการพัฒนา API ของ Microsoft Windows ได้ถูกนำมาใช้โดยบริษัทพัฒนาแอปพลิเคชันเชิงพาณิชย์จำนวนมาก และได้พัฒนาฟังก์ชัน API ของระบบแอปพลิเคชันเชิงพาณิชย์บางอย่างเพื่อเผยแพร่ เพื่ออำนวยความสะดวกในการขยายฟังก์ชันโดยบุคคลที่สาม ตัวอย่างเช่น API ที่พัฒนาโดย Google, Apple และ Nokia เป็นต้น
API ยังแบ่งออกเป็น API แบบเปิดและ API แบบส่วนตัว ตามชื่อแล้ว API แบบเปิดคืออินเทอร์เฟซที่เปิดเผยต่อสาธารณะ ซึ่งช่วยให้ทุกคนสามารถเรียกใช้และรับข้อมูลเบื้องหลังได้ บางครั้งบริษัทจะใช้ API เป็นระบบเปิดสาธารณะของตน ซึ่งหมายความว่าบริษัทจะกำหนดมาตรฐานอินเทอร์เฟซของระบบเอง และเมื่อจำเป็นต้องดำเนินการรวมระบบ การปรับแต่ง และการประยุกต์ใช้โปรแกรม สมาชิกทุกคนในบริษัทสามารถเรียกใช้ซอร์สโค้ดผ่านมาตรฐานอินเทอร์เฟซนี้ได้ มาตรฐานอินเทอร์เฟซนี้เรียกว่า API แบบเปิด API แบบส่วนตัวคืออินเทอร์เฟซที่ไม่เปิดเผยต่อสาธารณะ
02 SDK
(1) แนวคิดของ SDK
SDK หรือ "Software Development Kit" โดยทั่วไปคือชุดเครื่องมือพัฒนาที่วิศวกรซอฟต์แวร์ใช้เพื่อสร้างแอปพลิเคชันซอฟต์แวร์สำหรับแพ็คเกจซอฟต์แวร์เฉพาะ เฟรมเวิร์กซอฟต์แวร์ แพลตฟอร์มฮาร์ดแวร์ ระบบปฏิบัติการ ฯลฯ กล่าวโดยง่าย SDK คือชุดเครื่องมือที่ผู้ให้บริการบุคคลที่สามจัดหาให้เพื่อรับรู้ฟังก์ชันบางอย่างของผลิตภัณฑ์ซอฟต์แวร์
โดยทั่วไป SDK จะถูกจัดทำโดยบริษัทที่มีความเป็นมืออาชีพ ซึ่งให้บริการชุดบริการระดับมืออาชีพ เช่น การจัดหาเครื่องมือพัฒนา Android หรือบริการพัฒนาตามฮาร์ดแวร์ เป็นต้น นอกจากนี้ยังมี SDK สำหรับฟังก์ชันซอฟต์แวร์บางอย่าง เช่น เทคโนโลยีการแจ้งเตือนแบบพุช เทคโนโลยีการจดจำภาพ เทคโนโลยีการชำระเงินผ่านมือถือ เทคโนโลยีการวิเคราะห์การจดจำเสียง เป็นต้น ในแนวโน้มการเปิดของอินเทอร์เน็ต SDK ที่ใช้งานได้บางอย่างได้ถูกดำเนินการเป็นผลิตภัณฑ์
นักพัฒนาไม่จำเป็นต้องพัฒนาฟังก์ชันแต่ละอย่างของผลิตภัณฑ์อีกต่อไป เพียงแค่เลือกบริการ SDK ที่เหมาะสมและเสถียร และใช้เวลาเพียงเล็กน้อยในการรวมฟังก์ชันบางอย่างเข้ากับผลิตภัณฑ์
(2) ความแตกต่างระหว่าง SDK และ API
SDK เทียบเท่ากับสภาพแวดล้อมเครื่องมือรวมการพัฒนา และ API คืออินเทอร์เฟซข้อมูล การเรียกใช้ข้อมูล API ภายในสภาพแวดล้อม SDK
ในความเป็นจริง SDK มีคำจำกัดความของ API API กำหนดความสามารถ มาตรฐานอินเทอร์เฟซ และ SDK สามารถมีทั้งความสามารถและมาตรฐานเหล่านี้ได้ แต่ SDK ไม่ได้มีเพียง API และการใช้งานเท่านั้น มันเป็นชุดเครื่องมือซอฟต์แวร์ และยังมีฟังก์ชันเสริมอื่นๆ อีกมากมาย
SDK มีเอกสารที่จำเป็นสำหรับการใช้ API ดังนั้น ผู้คนจึงมักเรียกวิธีการพัฒนาการเขียนโปรแกรม Windows โดยใช้ API เพียงอย่างเดียวว่า "การเขียนโปรแกรม SDK"





