การแนะนำ
Simple Network Framework สำหรับ Java (SNF4J) เป็นเฟรมเวิร์กแอปพลิเคชันเครือข่ายที่ขับเคลื่อนด้วยเหตุการณ์แบบอะซิงโครนัสเพื่อการพัฒนาแอปพลิเคชันเครือข่ายที่รวดเร็วและง่ายดาย
SNF4J ทำหน้าที่เป็นเฟรมเวิร์กแอปพลิเคชันเครือข่ายที่เรียบง่าย น้ำหนักเบา และเป็นอิสระ ซึ่งช่วยในการพัฒนาแอปพลิเคชันเครือข่ายประสิทธิภาพสูงและปรับขนาดได้ โดยจัดเตรียม API แบบอะซิงโครนัสผ่าน Java NIO เพื่อจัดการการขนส่งต่างๆ เช่น TCP/IP, UDP/IP และ SCTP/IP
กรอบงานได้รับการออกแบบให้ใช้งานง่ายและเข้าใจง่ายปานกลาง นักพัฒนาแอปพลิเคชันที่ต้องการเอาหูแนบสนิทจะไม่ถูกครอบงำด้วยโทนเสียงของซอร์สโค้ด โดยมุ่งเน้นที่การนำเสนอฟังก์ชันการทำงานของเครือข่ายหลักในการถ่ายโอนข้อมูลระหว่างแอปพลิเคชันเครือข่ายที่สื่อสารตั้งแต่สองตัวขึ้นไปด้วยวิธีที่เรียบง่ายแต่มีประสิทธิภาพ เพื่อให้ความเป็นส่วนตัวและความสมบูรณ์ของข้อมูลที่ถ่ายโอน จึงให้การสนับสนุนโปรโตคอล SSL/TLS/DTLS
ออกแบบ
- Unified API สำหรับประเภทเลเยอร์การขนส่ง: TCP, UDP และ SCTP
- API ที่ขับเคลื่อนด้วยเหตุการณ์สำหรับการพัฒนาแอปพลิเคชันเครือข่ายแบบอะซิงโครนัส
- เอ็นจิ้นโปรโตคอลที่ปรับแต่งได้สำหรับประเภทเลเยอร์การขนส่ง: TCP และ UDP
- ยูทิลิตี้สำหรับการพัฒนาแอปพลิเคชันเซิร์ฟเวอร์ UDP
- API อย่างง่ายสำหรับไปป์ไลน์ตัวเข้ารหัส-ตัวถอดรหัสที่ปรับแต่งได้
- ให้ความสะดวกในการตั้งโปรแกรมแอปพลิเคชันแบบมัลติเธรดด้วยวิธีเธรดเดียว
- การสร้างไปป์ไลน์ของเซสชันที่ใช้ช่องซ็อกเก็ตเดียวกัน
ประสิทธิภาพและความสามารถในการขยายขนาด
- รองรับการคัดลอกหน่วยความจำที่ไม่จำเป็นให้เหลือน้อยที่สุดหรือเป็นศูนย์
- รองรับการใช้หน่วยความจำเหลือน้อยในแอปพลิเคชันแบบหลายเซสชัน
- เวลาแฝงที่ต่ำกว่า
- การบีบอัด zlib และ gzip
- การรวมลูปตัวเลือกที่ปรับแต่งได้
- ตัวจัดสรรบัฟเฟอร์ไบต์ที่ปรับแต่งได้
รุ่นด้าย
- เหตุการณ์ของตัวจัดการทั้งหมด (เช่น การอ่าน เหตุการณ์ ตัวจับเวลา ข้อยกเว้น เหตุการณ์) จะถูกไล่ออกจากเธรดที่ดำเนินการ I/O สำหรับช่องสัญญาณ (เธรด I/O)
- เมธอดของเซสชันทั้งหมดปลอดภัยสำหรับเธรดและสามารถเรียกจากเธรดใดก็ได้ รวมถึงเธรด I/O และเธรดที่ไม่ใช่ I/O
- เหตุการณ์ของตัวจัดการใดๆ ที่ถูกทริกเกอร์เป็นผลข้างเคียงของการเรียกเมธอดของเซสชันจะถูกไล่ออกจากเธรด I/O
- รหัสของตัวแปลงสัญญาณจะถูกประมวลผลในเธรด I/O เสมอ
- รหัสของเครื่องยนต์จะถูกประมวลผลในเธรด I/O เสมอ
โปรโตคอลที่รองรับ
- โปรโตคอลการเชื่อมต่อ HTTP เว็บพร็อกซี
- โปรโตคอลถุงเท้า
- โปรโตคอลเว็บซ็อกเก็ต
- ชุดเครื่องมือสำหรับโปรโตคอล TLS 1.3 (ตัวแยกวิเคราะห์/ตัวจัดรูปแบบ กลไกการจับมือ ยูทิลิตี้เลเยอร์บันทึก และกลไก TLS ที่สมบูรณ์)
ความปลอดภัย
- รองรับโปรโตคอล SSL/TLS/DTLS อย่างสมบูรณ์
- เชื่อมต่อเว็บพร็อกซีที่ปลอดภัย
บูรณาการ
- ไม่มีการขึ้นต่อกันเพิ่มเติม JDK 8 หรือ JDK 9 (สำหรับ DTLS) ก็เพียงพอแล้ว
- การบันทึกที่ปรับแต่งได้อย่างเต็มที่ (SLF4J, Log4j 2 อยู่ที่นี่แล้ว)
- โรงงานด้ายที่ปรับแต่งได้
- ตัวจับเวลาเซสชันที่ปรับแต่งได้
- โมเดลการส่งแพ็กเก็ตที่ปรับแต่งได้ในระหว่างการจับมือ DTLS
กำลังรวบรวม
คุณต้องใช้ Apache maven 3.8 ขึ้นไป , Java 8 ขึ้นไป
ลิงค์