สำรวจความซับซ้อนของการใช้งานตัวจัดการโปรโตคอล web serial frontend สำหรับการจัดการโปรโตคอลการสื่อสารที่แข็งแกร่งในแอปพลิเคชันเว็บสมัยใหม่ เรียนรู้เกี่ยวกับสถาปัตยกรรม ความปลอดภัย การจัดการข้อผิดพลาด และการแปลเป็นสากล
ตัวจัดการโปรโตคอล Web Serial Frontend: การจัดการโปรโตคอลการสื่อสารสำหรับแอปพลิเคชันเว็บสมัยใหม่
Web Serial API ได้เปิดโลกทัศน์ใหม่สำหรับแอปพลิเคชันเว็บ ทำให้สามารถสื่อสารโดยตรงกับอุปกรณ์อนุกรมได้ ซึ่งเปิดโอกาสให้โต้ตอบกับฮาร์ดแวร์ ระบบฝังตัว และอุปกรณ์อื่นๆ อีกมากมายได้โดยตรงจากเบราว์เซอร์ โดยไม่ต้องใช้แอปพลิเคชันดั้งเดิมหรือส่วนขยายเบราว์เซอร์ อย่างไรก็ตาม การจัดการการสื่อสารกับอุปกรณ์เหล่านี้อย่างมีประสิทธิภาพต้องใช้ ตัวจัดการโปรโตคอล web serial frontend ที่แข็งแกร่ง บทความนี้เจาะลึกถึงความซับซ้อนของการใช้งานตัวจัดการดังกล่าว ครอบคลุมถึงสถาปัตยกรรม ความปลอดภัย การจัดการข้อผิดพลาด และการแปลเป็นสากล เพื่อให้มั่นใจถึงประสบการณ์ที่เชื่อถือได้และสามารถเข้าถึงได้ทั่วโลก
ทำความเข้าใจ Web Serial API
ก่อนที่จะเจาะลึกถึงตัวจัดการโปรโตคอล มาทบทวน Web Serial API กันคร่าวๆ ก่อน ซึ่งช่วยให้แอปพลิเคชันเว็บสามารถ:
- เชื่อมต่อกับพอร์ตอนุกรม: API ช่วยให้ผู้ใช้สามารถเลือกพอร์ตอนุกรมที่เชื่อมต่อกับระบบของตนได้
- อ่านข้อมูลจากอุปกรณ์อนุกรม: รับข้อมูลที่ส่งโดยอุปกรณ์ที่เชื่อมต่อ
- เขียนข้อมูลไปยังอุปกรณ์อนุกรม: ส่งคำสั่งและข้อมูลไปยังอุปกรณ์ที่เชื่อมต่อ
- ควบคุมพารามิเตอร์พอร์ตอนุกรม: กำหนดค่าอัตราบอด, บิตข้อมูล, พาริตี และบิตหยุด
API ทำงานแบบอะซิงโครนัส โดยใช้ Promises เพื่อจัดการการสร้างการเชื่อมต่อ การส่งข้อมูล และเงื่อนไขข้อผิดพลาด ลักษณะอะซิงโครนัสนี้นำไปสู่การพิจารณาอย่างรอบคอบเมื่อออกแบบตัวจัดการโปรโตคอล
สถาปัตยกรรมของตัวจัดการโปรโตคอล Web Serial Frontend
ตัวจัดการโปรโตคอลที่ออกแบบมาอย่างดีควรเป็นแบบโมดูลาร์ บำรุงรักษาได้ และปรับขนาดได้ สถาปัตยกรรมทั่วไปอาจประกอบด้วยส่วนประกอบดังต่อไปนี้:
1. ตัวจัดการการเชื่อมต่อ
ตัวจัดการการเชื่อมต่อมีหน้าที่รับผิดชอบในการสร้างและดูแลรักษาการเชื่อมต่อแบบอนุกรม จัดการการโต้ตอบของผู้ใช้สำหรับการเลือกพอร์ต และจัดการการเรียก Web Serial API ที่อยู่เบื้องหลัง นอกจากนี้ยังควรมีวิธีการเปิดและปิดการเชื่อมต่ออย่างนุ่มนวล
ตัวอย่าง:
class ConnectionManager {
constructor() {
this.port = null;
this.reader = null;
this.writer = null;
}
async connect() {
try {
this.port = await navigator.serial.requestPort();
await this.port.open({ baudRate: 115200 }); // Example baud rate
this.reader = this.port.readable.getReader();
this.writer = this.port.writable.getWriter();
return true; // Connection successful
} catch (error) {
console.error("Connection error:", error);
return false; // Connection failed
}
}
async disconnect() {
if (this.reader) {
await this.reader.cancel();
await this.reader.releaseLock();
}
if (this.writer) {
await this.writer.close();
await this.writer.releaseLock();
}
if (this.port) {
await this.port.close();
}
this.port = null;
this.reader = null;
this.writer = null;
}
// ... other methods
}
2. การกำหนดโปรโตคอล
ส่วนประกอบนี้กำหนดโครงสร้างของข้อความที่แลกเปลี่ยนระหว่างแอปพลิเคชันเว็บและอุปกรณ์อนุกรม โดยระบุรูปแบบของคำสั่ง ชุดข้อมูล และการตอบสนอง วิธีการทั่วไป ได้แก่:
- โปรโตคอลแบบข้อความ (เช่น คำสั่ง ASCII): ใช้งานง่าย แต่อาจมีประสิทธิภาพน้อยกว่า
- โปรโตคอลไบนารี: มีประสิทธิภาพมากขึ้นในแง่ของแบนด์วิดท์ แต่ต้องมีการเข้ารหัสและถอดรหัสอย่างระมัดระวัง
- โปรโตคอลที่ใช้ JSON: อ่านง่ายและแยกวิเคราะห์ได้ง่าย แต่สามารถเพิ่มค่าใช้จ่ายได้
- โปรโตคอลแบบกำหนดเอง: ให้ความยืดหยุ่นสูงสุด แต่ต้องมีการออกแบบและการใช้งานจำนวนมาก
การเลือกโปรโตคอลขึ้นอยู่กับข้อกำหนดเฉพาะของแอปพลิเคชัน รวมถึงปริมาณข้อมูล ข้อจำกัดด้านประสิทธิภาพ และความซับซ้อนของการสื่อสาร
ตัวอย่าง (โปรโตคอลแบบข้อความ):
// Define command constants
const CMD_GET_STATUS = "GS";
const CMD_SET_VALUE = "SV";
// Function to format a command
function formatCommand(command, data) {
return command + ":" + data + "\r\n"; // Add carriage return and newline
}
// Function to parse a response
function parseResponse(response) {
// Assuming responses are in the format "OK:value" or "ERROR:message"
const parts = response.split(":");
if (parts[0] === "OK") {
return { status: "OK", value: parts[1] };
} else if (parts[0] === "ERROR") {
return { status: "ERROR", message: parts[1] };
} else {
return { status: "UNKNOWN", message: response };
}
}
3. ตัวเข้ารหัส/ถอดรหัสข้อมูล
ส่วนประกอบนี้มีหน้าที่แปลงข้อมูลระหว่างการนำเสนอภายในของแอปพลิเคชันเว็บและรูปแบบที่ต้องการโดยโปรโตคอลอนุกรม จัดการการเข้ารหัสข้อมูลก่อนการส่งและการถอดรหัสข้อมูลที่ได้รับจากอุปกรณ์อนุกรม
ตัวอย่าง (การเข้ารหัส/ถอดรหัสจำนวนเต็ม):
// Function to encode an integer as a byte array
function encodeInteger(value) {
const buffer = new ArrayBuffer(4); // 4 bytes for a 32-bit integer
const view = new DataView(buffer);
view.setInt32(0, value, false); // false for big-endian
return new Uint8Array(buffer);
}
// Function to decode a byte array into an integer
function decodeInteger(byteArray) {
const buffer = byteArray.buffer;
const view = new DataView(buffer);
return view.getInt32(0, false); // false for big-endian
}
4. ตัวแยกวิเคราะห์/ตัวสร้างข้อความ
ตัวแยกวิเคราะห์/ตัวสร้างข้อความจัดการการสร้างและการตีความข้อความที่สมบูรณ์ตามคำจำกัดความของโปรโตคอล ช่วยให้มั่นใจได้ว่าข้อความได้รับการจัดรูปแบบอย่างถูกต้องก่อนการส่งและการแยกวิเคราะห์อย่างถูกต้องเมื่อได้รับ
ตัวอย่าง (การสร้างข้อความ):
function buildMessage(command, payload) {
// Example: Format the message as
const STX = 0x02; // Start of Text
const ETX = 0x03; // End of Text
const commandBytes = new TextEncoder().encode(command);
const payloadBytes = new TextEncoder().encode(payload);
const length = commandBytes.length + payloadBytes.length;
const message = new Uint8Array(3 + commandBytes.length + payloadBytes.length); // STX, Command, Length, Payload, ETX
message[0] = STX;
message.set(commandBytes, 1);
message[1 + commandBytes.length] = length;
message.set(payloadBytes, 2 + commandBytes.length);
message[message.length - 1] = ETX;
return message;
}
5. ตัวจัดการข้อผิดพลาด
ตัวจัดการข้อผิดพลาดเป็นส่วนประกอบที่สำคัญสำหรับการรับประกันความแข็งแกร่งของตัวจัดการโปรโตคอล ควรจะสามารถ:
- ตรวจจับข้อผิดพลาดในการสื่อสารแบบอนุกรม: จัดการข้อผิดพลาด เช่น ข้อผิดพลาดในการจัดกรอบ ข้อผิดพลาดด้านพาริตี และข้อผิดพลาดในการโอเวอร์รัน
- รายงานข้อผิดพลาดให้ผู้ใช้ทราบ: ให้ข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์เพื่อช่วยให้ผู้ใช้แก้ไขปัญหา
- พยายามกู้คืนข้อผิดพลาด: ใช้กลยุทธ์ในการกู้คืนจากข้อผิดพลาด เช่น การลองส่งซ้ำที่ไม่สำเร็จ หรือการรีเซ็ตพอร์ตอนุกรม
- บันทึกข้อผิดพลาดสำหรับการแก้ไขข้อบกพร่อง: บันทึกข้อมูลข้อผิดพลาดสำหรับการวิเคราะห์ในภายหลัง
ตัวอย่าง (การจัดการข้อผิดพลาด):
async function readSerialData(reader) {
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// The serial port has been closed.
console.log("Serial port closed.");
break;
}
// Process the received data
console.log("Received data:", value);
}
} catch (error) {
console.error("Serial port error:", error);
// Handle the error appropriately (e.g., display an error message)
} finally {
reader.releaseLock();
}
}
6. คิวข้อความ (ทางเลือก)
ในสถานการณ์ที่มีปริมาณข้อมูลสูงหรือการโต้ตอบที่ซับซ้อน คิวข้อความสามารถช่วยจัดการการไหลของข้อมูลระหว่างแอปพลิเคชันเว็บและอุปกรณ์อนุกรมได้ มีบัฟเฟอร์สำหรับข้อความขาเข้าและขาออก ป้องกันการสูญเสียข้อมูล และตรวจสอบให้แน่ใจว่าข้อความได้รับการประมวลผลตามลำดับที่ถูกต้อง
ข้อควรพิจารณาด้านความปลอดภัย
Web Serial API มีมาตรการรักษาความปลอดภัยโดยธรรมชาติ แต่ยังคงเป็นสิ่งสำคัญที่จะต้องพิจารณาถึงผลกระทบด้านความปลอดภัยเมื่อออกแบบตัวจัดการโปรโตคอล web serial frontend
- สิทธิ์ของผู้ใช้: เบราว์เซอร์ต้องได้รับอนุญาตจากผู้ใช้อย่างชัดเจนก่อนที่จะอนุญาตให้แอปพลิเคชันเว็บเข้าถึงพอร์ตอนุกรม สิ่งนี้ช่วยป้องกันไม่ให้เว็บไซต์ที่เป็นอันตรายเข้าถึงอุปกรณ์อนุกรมโดยไม่รู้ตัว
- ข้อจำกัดต้นทาง: แอปพลิเคชันเว็บสามารถเข้าถึงพอร์ตอนุกรมได้จากต้นทางที่ปลอดภัย (HTTPS) เท่านั้น
- การตรวจสอบความถูกต้องของข้อมูล: ตรวจสอบความถูกต้องของข้อมูลที่ได้รับจากอุปกรณ์อนุกรมเสมอเพื่อป้องกันการโจมตีแบบแทรกหรือช่องโหว่อื่นๆ
- การออกแบบโปรโตคอลที่ปลอดภัย: ใช้กลไกการเข้ารหัสและการตรวจสอบสิทธิ์ภายในโปรโตคอลอนุกรมเพื่อปกป้องข้อมูลที่ละเอียดอ่อน
- การอัปเดตเป็นประจำ: ทำให้เบราว์เซอร์และไลบรารีที่เกี่ยวข้องเป็นปัจจุบันอยู่เสมอเพื่อแก้ไขช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น
การใช้งานการแปลเป็นสากล (i18n)
เพื่อให้เหมาะกับผู้ชมทั่วโลก ตัวจัดการโปรโตคอล web serial frontend ควรสากล สิ่งนี้เกี่ยวข้องกับ:
- การแปลองค์ประกอบส่วนติดต่อผู้ใช้: แปลองค์ประกอบส่วนติดต่อผู้ใช้ทั้งหมด เช่น ป้ายกำกับปุ่ม ข้อความแสดงข้อผิดพลาด และข้อความช่วยเหลือ เป็นหลายภาษา
- การจัดการรูปแบบตัวเลขและวันที่ที่แตกต่างกัน: ตรวจสอบให้แน่ใจว่าแอปพลิเคชันสามารถจัดการรูปแบบตัวเลขและวันที่ที่ใช้ในภูมิภาคต่างๆ ได้อย่างถูกต้อง
- การรองรับการเข้ารหัสอักขระที่แตกต่างกัน: ใช้การเข้ารหัส UTF-8 เพื่อรองรับอักขระที่หลากหลาย
- การให้ตัวเลือกการเลือกภาษา: อนุญาตให้ผู้ใช้เลือกภาษาที่ต้องการ
ตัวอย่าง (i18n โดยใช้ Javascript):
// Sample localization data (English)
const en = {
"connectButton": "Connect",
"disconnectButton": "Disconnect",
"errorMessage": "An error occurred: {error}"
};
// Sample localization data (French)
const fr = {
"connectButton": "Connecter",
"disconnectButton": "Déconnecter",
"errorMessage": "Une erreur s'est produite : {error}"
};
// Function to get the localized string
function getLocalizedString(key, language) {
const translations = (language === "fr") ? fr : en; // Default to English if language is not supported
return translations[key] || key; // Return the key if the translation is missing
}
// Function to display an error message
function displayError(error, language) {
const errorMessage = getLocalizedString("errorMessage", language).replace("{error}", error);
alert(errorMessage);
}
// Usage
const connectButtonLabel = getLocalizedString("connectButton", "fr");
console.log(connectButtonLabel); // Output: Connecter
ข้อควรพิจารณาด้านการเข้าถึง
การเข้าถึงเป็นสิ่งสำคัญในการพัฒนาเว็บ ตัวจัดการโปรโตคอลที่ออกแบบมาอย่างเหมาะสมควรเป็นไปตามแนวทางปฏิบัติเกี่ยวกับการเข้าถึงเพื่อให้แน่ใจว่าผู้ที่มีความพิการสามารถโต้ตอบกับแอปพลิเคชันได้อย่างมีประสิทธิภาพ
- การนำทางด้วยคีย์บอร์ด: ตรวจสอบให้แน่ใจว่าองค์ประกอบแบบโต้ตอบทั้งหมดสามารถเข้าถึงและใช้งานได้โดยใช้คีย์บอร์ด
- ความเข้ากันได้ของโปรแกรมอ่านหน้าจอ: จัดเตรียมแอตทริบิวต์ ARIA ที่เหมาะสมเพื่อให้แอปพลิเคชันสามารถเข้าถึงได้สำหรับโปรแกรมอ่านหน้าจอ
- ความคมชัดของสีที่เพียงพอ: ใช้ความคมชัดของสีที่เพียงพอระหว่างข้อความและพื้นหลังเพื่อปรับปรุงการอ่านได้สำหรับผู้ที่มีความบกพร่องทางสายตา
- ภาษาที่ชัดเจนและกระชับ: ใช้ภาษาที่ชัดเจนและกระชับในข้อความแสดงข้อผิดพลาดและข้อความช่วยเหลือเพื่อให้เข้าใจแอปพลิเคชันได้ง่ายขึ้น
ตัวอย่างการใช้งานจริงและกรณีการใช้งาน
นี่คือตัวอย่างการใช้งานจริงและกรณีการใช้งานบางส่วนที่สามารถใช้ตัวจัดการโปรโตคอล web serial frontend ได้:
- การควบคุมเครื่องพิมพ์ 3 มิติ: การพัฒนาส่วนต่อประสานเว็บสำหรับการควบคุมและตรวจสอบเครื่องพิมพ์ 3 มิติ
- การควบคุมหุ่นยนต์: การสร้างแผงควบคุมบนเว็บสำหรับแขนหุ่นยนต์หรือระบบหุ่นยนต์อื่นๆ
- การได้มาซึ่งข้อมูลเซ็นเซอร์: การสร้างแอปพลิเคชันเว็บสำหรับการรวบรวมและแสดงภาพข้อมูลจากเซ็นเซอร์ที่เชื่อมต่อกับพอร์ตอนุกรม ตัวอย่างเช่น การตรวจสอบข้อมูลสภาพแวดล้อมในเรือนกระจกในเนเธอร์แลนด์ หรือการติดตามสภาพอากาศในเทือกเขาแอลป์สวิส
- ระบบอัตโนมัติทางอุตสาหกรรม: การพัฒนาส่วนต่อประสานระหว่างมนุษย์กับเครื่องจักร (HMI) บนเว็บสำหรับการควบคุมอุปกรณ์อุตสาหกรรม
- การรวมอุปกรณ์ทางการแพทย์: การรวมอุปกรณ์ทางการแพทย์ เช่น เครื่องวัดความดันโลหิตหรือเครื่องวัดออกซิเจนในเลือด เข้ากับแอปพลิเคชันการดูแลสุขภาพบนเว็บ การตรวจสอบให้แน่ใจว่าเป็นไปตาม HIPAA เป็นสิ่งสำคัญในบริบทนี้
- การจัดการอุปกรณ์ IoT: การจัดการและกำหนดค่าอุปกรณ์ IoT ผ่านส่วนต่อประสานเว็บ สิ่งนี้เกี่ยวข้องทั่วโลกเนื่องจากอุปกรณ์ IoT แพร่หลาย
การทดสอบและการแก้ไขข้อบกพร่อง
การทดสอบและการแก้ไขข้อบกพร่องอย่างละเอียดมีความสำคัญต่อการรับประกันความน่าเชื่อถือของตัวจัดการโปรโตคอล web serial frontend พิจารณา:
- การทดสอบหน่วย: เขียนการทดสอบหน่วยเพื่อตรวจสอบฟังก์ชันการทำงานของแต่ละส่วนประกอบ เช่น ตัวเข้ารหัส/ถอดรหัสข้อมูล และตัวแยกวิเคราะห์/ตัวสร้างข้อความ
- การทดสอบการรวม: ทำการทดสอบการรวมเพื่อให้แน่ใจว่าส่วนประกอบต่างๆ ทำงานร่วมกันได้อย่างถูกต้อง
- การทดสอบแบบ End-to-End: ทำการทดสอบแบบ End-to-End เพื่อจำลองสถานการณ์การใช้งานจริง
- อีมูเลเตอร์พอร์ตอนุกรม: ใช้อีมูเลเตอร์พอร์ตอนุกรมเพื่อทดสอบแอปพลิเคชันโดยไม่ต้องใช้อุปกรณ์อนุกรมจริง
- เครื่องมือแก้ไขข้อบกพร่อง: ใช้เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์เพื่อแก้ไขข้อบกพร่องของแอปพลิเคชันและตรวจสอบการสื่อสารแบบอนุกรม
- การบันทึก: ใช้การบันทึกที่ครอบคลุมเพื่อบันทึกเหตุการณ์ที่เกี่ยวข้องทั้งหมด รวมถึงการส่งข้อมูล ข้อผิดพลาด และคำเตือน
แนวทางปฏิบัติที่ดีที่สุดสำหรับการนำไปใช้
นี่คือแนวทางปฏิบัติที่ดีที่สุดบางประการที่ควรปฏิบัติตามเมื่อใช้งานตัวจัดการโปรโตคอล web serial frontend:
- การออกแบบแบบโมดูลาร์: แบ่งตัวจัดการโปรโตคอลออกเป็นส่วนประกอบแบบโมดูลาร์เพื่อปรับปรุงความสามารถในการบำรุงรักษาและการทดสอบ
- การเขียนโปรแกรมแบบอะซิงโครนัส: ใช้เทคนิคการเขียนโปรแกรมแบบอะซิงโครนัสเพื่อหลีกเลี่ยงการบล็อกเธรดหลักและรับประกันส่วนต่อประสานผู้ใช้ที่ตอบสนอง
- การจัดการข้อผิดพลาด: ใช้การจัดการข้อผิดพลาดที่แข็งแกร่งเพื่อจัดการกับสถานการณ์ที่ไม่คาดคิดอย่างนุ่มนวล
- การตรวจสอบความถูกต้องของข้อมูล: ตรวจสอบความถูกต้องของข้อมูลทั้งหมดที่ได้รับจากอุปกรณ์อนุกรมเพื่อป้องกันช่องโหว่ด้านความปลอดภัย
- เอกสารโค้ด: จัดทำเอกสารโค้ดอย่างละเอียดเพื่อให้ง่ายต่อการทำความเข้าใจและบำรุงรักษา
- การปรับประสิทธิภาพ: ปรับโค้ดให้เหมาะสมเพื่อประสิทธิภาพในการลดความล่าช้าและเพิ่มปริมาณงานสูงสุด
- การรักษาความปลอดภัย: ใช้แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยเพื่อปกป้องข้อมูลที่ละเอียดอ่อนและป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต
- การปฏิบัติตามมาตรฐาน: ปฏิบัติตามมาตรฐานเว็บและแนวทางปฏิบัติเกี่ยวกับการเข้าถึงที่เกี่ยวข้อง
อนาคตของ Web Serial API และการจัดการโปรโตคอล
Web Serial API ยังคงพัฒนาอย่างต่อเนื่อง และเราคาดว่าจะเห็นการปรับปรุงและการปรับปรุงเพิ่มเติมในอนาคต บางพื้นที่ของการพัฒนาที่เป็นไปได้ ได้แก่:
- การจัดการข้อผิดพลาดที่ได้รับการปรับปรุง: ข้อความแสดงข้อผิดพลาดที่มีรายละเอียดและให้ข้อมูลมากขึ้น
- คุณสมบัติความปลอดภัยขั้นสูง: กลไกความปลอดภัยที่ได้รับการปรับปรุงเพื่อป้องกันการโจมตีที่เป็นอันตราย
- การรองรับพารามิเตอร์พอร์ตอนุกรมเพิ่มเติม: ความยืดหยุ่นที่มากขึ้นในการกำหนดค่าพารามิเตอร์พอร์ตอนุกรม
- ไลบรารีโปรโตคอลที่เป็นมาตรฐาน: การเกิดขึ้นของไลบรารีโปรโตคอลที่เป็นมาตรฐานเพื่อลดความซับซ้อนของการพัฒนาแอปพลิเคชัน web serial
สรุป
การใช้งานตัวจัดการโปรโตคอล web serial frontend ที่แข็งแกร่งเป็นสิ่งจำเป็นสำหรับการสร้างแอปพลิเคชันเว็บสมัยใหม่ที่โต้ตอบกับอุปกรณ์อนุกรม ด้วยการพิจารณาอย่างรอบคอบถึงสถาปัตยกรรม ความปลอดภัย การจัดการข้อผิดพลาด การแปลเป็นสากล และด้านการเข้าถึง นักพัฒนาสามารถสร้างแอปพลิเคชันที่เชื่อถือได้และเป็นมิตรกับผู้ใช้ ซึ่งเปิดศักยภาพสูงสุดของ Web Serial API ในขณะที่ API ยังคงพัฒนาอย่างต่อเนื่อง เราสามารถคาดการณ์ความเป็นไปได้ที่น่าตื่นเต้นยิ่งขึ้นสำหรับการโต้ตอบฮาร์ดแวร์บนเว็บในอีกไม่กี่ปีข้างหน้า พิจารณาการใช้ไลบรารีและเฟรมเวิร์กเพื่อเร่งการพัฒนา แต่ทำความเข้าใจหลักการพื้นฐานของการสื่อสารแบบอนุกรมอยู่เสมอ