RRQMSocket เป็นเฟรมเวิร์กบริการการสื่อสารเครือข่ายแบบผสานรวมที่มีน้ำหนักเบาเป็นพิเศษ มีลักษณะของการเชื่อมต่อพร้อมกันสูง การประมวลผลพร้อมกันสูง การสมัครสมาชิกเหตุการณ์ ส่วนขยายปลั๊กอิน การประมวลผลแบบมัลติเธรด พูลหน่วยความจำ พูลอ็อบเจ็กต์ ฯลฯ ช่วยให้ผู้ใช้สามารถสร้างเฟรมเวิร์กเครือข่ายได้ง่ายและรวดเร็วยิ่งขึ้น ในแง่ของประสิทธิภาพการส่งข้อมูล การส่งข้อมูลแบบซิงโครนัสสามารถเข้าถึง 20w/s และการส่งข้อมูลแบบอะซิงโครนัสสามารถเข้าถึง 60w/s ประสิทธิภาพการรับและการประมวลผลของเซิร์ฟเวอร์ขึ้นอยู่กับจำนวนเธรด
สภาพแวดล้อมการสนับสนุน:
.NET Framework 4.5 ขึ้นไป
.NETCore3.1 ขึ้นไป
.NETStandard2.0 ขึ้นไป
กรอบการทำงานที่รองรับ:
ดับบลิวพีเอฟ
วินฟอร์ม
เบลเซอร์
ซามาริน
โมโน
ความสามัคคี
อื่นๆ (เช่น ระบบ C# ทั้งหมด)
คุณสมบัติ:
1. กลุ่มวัตถุ
พูลอ็อบเจ็กต์มีแอปพลิเคชันจำนวนมากใน RRQMSocket สองแอปพลิเคชันที่สำคัญที่สุดคือพูลอ็อบเจ็กต์การเชื่อมต่อและพูลอ็อบเจ็กต์การประมวลผล พูลอ็อบเจ็กต์การเชื่อมต่อหมายความว่าเมื่อไคลเอ็นต์เชื่อมต่อสำเร็จ อันดับแรกไคลเอ็นต์จะค้นหา TcpSocketClient ในกลุ่มอ็อบเจ็กต์การเชื่อมต่อ จากนั้นจึงสร้างขึ้นหากไม่มีอยู่ หากไคลเอนต์ออฟไลน์ TcpSocketClient จะถูกรีไซเคิล นี่คือเหตุผลในการนำ ID มาใช้ซ้ำ
จากนั้นจะมีพูลอ็อบเจ็กต์การประมวลผล ใน RRQMSocket เธรดที่ได้รับข้อมูลและเธรดเคอร์เนล IOCP จะถูกแยกออก ตัวอย่างเช่น ไคลเอนต์ส่งข้อมูล 10,000 ชิ้นไปยังเซิร์ฟเวอร์ แต่เซิร์ฟเวอร์จะประมวลผลช้ามากหลังจากได้รับ จากนั้น iocp แบบเดิมจะชะลออัตราการรับลงอย่างแน่นอน จากนั้นแจ้งหน้าต่าง TCP ของลูกค้าว่าเกิดความแออัด แล้วปล่อยให้ไคลเอ็นต์ระงับการส่ง อย่างไรก็ตาม ใน RRQMSocket ข้อมูลที่ได้รับทั้งหมดจะถูกจัดเก็บไว้ในคิว ประการแรก มันจะไม่ส่งผลกระทบต่อการรับ iocp ในเวลาเดียวกัน เธรดจะถูกจัดสรรเพื่อประมวลผลข้อมูลข้อความที่ได้รับ ซึ่งเทียบเท่ากับ "การระบายน้ำท่วม ทะเลสาบ" ซึ่งสามารถปรับปรุงความสามารถในการประมวลผลข้อมูลได้อย่างมาก
2. มัลติเธรด
เนื่องจากการมีอยู่ของพูลอ็อบเจ็กต์การประมวลผล การประมวลผลแบบมัลติเธรดจึงกลายเป็นเรื่องง่าย เมื่อการเชื่อมต่อไคลเอนต์เสร็จสมบูรณ์ เธรดตรรกะการประมวลผลข้อความของคลาสเสริมไคลเอนต์ (TcpSocketClient) จะถูกกำหนดโดยอัตโนมัติ หากจำนวนเธรดเซิร์ฟเวอร์คือ 10 ไคลเอนต์ที่เชื่อมต่อตัวแรกจะถูกกำหนดให้กับเธรด 0 และการเชื่อมต่อที่สองจะ กำหนดให้กับเธรดหมายเลข 1 และอื่นๆ ในลักษณะวงกลม เมื่อไคลเอ็นต์ได้รับข้อมูล ไคลเอ็นต์จะจัดคิวข้อมูลไว้ในคิวของเธรดปัจจุบันและปลุกเธรดเพื่อดำเนินการ
3. IOCP และ RRQMSocket แบบดั้งเดิม
IOCP ของ RRQMSocket ยังแตกต่างจากแบบเดิม ตัวอย่างเช่น MemoryBuffer ใช้เพื่อเปิดหน่วยความจำ จากนั้นแบ่งเท่าๆ กัน จากนั้นจัดสรรพื้นที่สำหรับแต่ละเซสชันเพื่อรับข้อมูล ข้อมูล ทำสำเนาอีกครั้ง จากนั้นจึงคัดลอกการประมวลผลการโยนข้อมูล RRQMSocket จะนำบล็อกหน่วยความจำที่มีอยู่จากพูลหน่วยความจำก่อนการรับแต่ละครั้ง จากนั้นจึงใช้บล็อกหน่วยความจำดังกล่าวโดยตรงเพื่อรับข้อมูล หลังจากได้รับข้อมูลแล้ว บล็อกหน่วยความจำจะหลุดออกไปโดยตรง ดังนั้นจึงหลีกเลี่ยงการดำเนินการคัดลอก แม้ว่าจะเป็นเพียงการออกแบบขนาดเล็กก็ตาม แต่เมื่อส่งข้อมูล 64kb 1,000w ครั้ง ประสิทธิภาพจะแตกต่าง 10 เท่า ดังนั้นประสิทธิภาพในการถ่ายโอนไฟล์จึงสูงตามนี้
4. อะแดปเตอร์ประมวลผลข้อมูล
ฉันเชื่อว่าทุกคนเคยใช้ผลิตภัณฑ์ Socket อื่นๆ เช่น HPSocket, SuperSocket เป็นต้น ดังนั้นการออกแบบ RRQMSocket จึงดึงเอาแนวคิดการออกแบบที่ยอดเยี่ยมของผลิตภัณฑ์อื่นๆ มาใช้ และอะแดปเตอร์ประมวลผลข้อมูลก็เป็นหนึ่งในนั้น แต่สิ่งที่แตกต่างจาก การออกแบบผลิตภัณฑ์อื่นๆ ก็คือ RRQMSocket ฟังก์ชั่นอะแดปเตอร์มีประสิทธิภาพมากขึ้น โดยสามารถละเว้นข้อมูลจริงและจำลองข้อมูลที่ต้องการได้ เช่น สามารถประมวลผลข้อมูลล่วงหน้าเพื่อแก้ปัญหาการทำแพ็กเก็ตข้อมูลได้ เพื่อแก้ปัญหาแพ็กเก็ตเหนียว คุณยังสามารถแยกวิเคราะห์โปรโตคอล HTTP ได้โดยตรงและส่งคืนอ็อบเจ็กต์ HttpRequest หลังจากประมวลผลโดยอะแด็ปเตอร์
5. แพ็คเกจเหนียวและโซลูชั่นการรับเหมาช่วง
มันง่ายมากที่จะจัดการกับปัญหาการติดแพ็กเก็ต TCP และปัญหาแพ็กเก็ตย่อยใน RRQMSocket เพียงเปลี่ยนอะแดปเตอร์ประมวลผลข้อมูลอื่น ตัวอย่างเช่น หากต้องการใช้ส่วนหัวคงที่ คุณจะต้องกำหนดอินสแตนซ์ของ FixedHeaderDataHandlingAdapter ให้กับ TcpSocketClient และ TcpClient เท่านั้น โปรเซสเซอร์ที่เกี่ยวข้องนั้นมีความยาวคงที่ การแบ่งส่วนอักขระที่สิ้นสุด ฯลฯ