Ceras เป็นซีเรียลไลเซอร์แบบไบนารี มันแปลงวัตถุ ใด ๆ ให้เป็น byte[]
และย้อนกลับ มันเหนือกว่าในแง่ของฟีเจอร์ ความเร็ว และความสะดวกสบาย รองรับลูปอ้างอิง, สายการสืบทอดขนาดใหญ่/ซับซ้อน, การแยกวัตถุออกเป็นส่วน ๆ ...
บุคคลในคลาส { ชื่อสตริงสาธารณะ; อายุสาธารณะ; }var p = บุคคลใหม่ { ชื่อ = "riki", อายุ = 5 };var ceras = ใหม่ CerasSerializer();var bytes = ceras.Serialize(p);
>> ตัวอย่างอื่นๆ อีกมากมายในบทช่วยสอนโค้ด
>> คำแนะนำโดยละเอียดสำหรับสถานการณ์เฉพาะในบล็อกของฉัน
>> อ่าน 'การเพิ่มประสิทธิภาพและข้อผิดพลาดในการใช้งาน'
>> บันทึกการเปลี่ยนแปลง v3.0 (ridev.com/new-features-in-ceras-3-0-2)
>> คุณสมบัติใหม่ใน v4.0 (https://github.com/rikimaru0345/Ceras/releases/tag/4.0)
ไบนารี่เอาท์พุตขนาดเล็กที่รวดเร็วมาก (ดู ประสิทธิภาพ )
รองรับทุกประเภท:
ตัวจัดรูปแบบที่เขียนด้วยลายมือสำหรับประเภท .NET ทั่วไปทั้งหมด
มาพร้อมกับฟอร์แมตเตอร์สำหรับประเภท Unity ทั่วไปทั้งหมด
สร้างฟอร์แมตเตอร์ใหม่ขณะรันไทม์สำหรับประเภทใหม่/ผู้ใช้
ง่ายต่อการขยายและปรับแต่ง
รองรับการคงอยู่ของการอ้างอิง อย่างสมบูรณ์ (รวมถึงการอ้างอิงแบบวงกลมด้วย!)
การสนับสนุน อย่างเต็มที่ สำหรับความหลากหลาย / การสืบทอด / อินเทอร์เฟซ
สามารถซีเรียลไลซ์วัตถุออกเป็นส่วน ๆ เป็น "ExtenalObjects" (มีประโยชน์ในหลาย ๆ สถานการณ์)
การรองรับเวอร์ชันอัตโนมัติ ไม่จำเป็นต้องวางคุณลักษณะใดๆ ในชั้นเรียนของคุณ!
รายการคุณสมบัติทั้งหมด (และคุณสมบัติที่วางแผนไว้)
โดยทั่วไปแล้ว Ceras จะอยู่ในอันดับต้นๆ ของสเปกตรัมประสิทธิภาพ ร่วมกับ NetSerializer และ MessagePack-CSharp หากต้องการทราบว่า Ceras ทำงานอย่างไร นี่คือผลลัพธ์การวัดประสิทธิภาพเบื้องต้น ขนาดไบนารี่ที่ได้จะใกล้เคียงกับ MessagePack-CSharp
ผลลัพธ์ที่แสดงได้มาจาก โค้ดนี้ และฉันขอแนะนำให้คุณไม่เพียงแต่ลองด้วยตัวเอง แต่ยังให้ข้อเสนอแนะเกี่ยวกับสถานการณ์ที่คุณได้ผลลัพธ์ที่ดีและไม่ดีด้วย
อย่าลืมปรับการตั้งค่าใน SerializerConfig
ให้เหมาะกับสถานการณ์เฉพาะของคุณ การใช้ Ceras เพื่ออ่าน/เขียนแพ็กเก็ตเครือข่ายอาจต้องใช้การตั้งค่าที่แตกต่างจาก เช่น การบันทึกวัตถุการตั้งค่าลงในไฟล์ หรือรายการ/คาถา/สัตว์ประหลาดที่มีอยู่ในเกม หรือ ...
โครงการนี้ยังคงอยู่ในระหว่างดำเนินการอย่างหนัก ซึ่งหมายความว่าจะมีการเพิ่มประสิทธิภาพต่างๆ มากขึ้นเมื่อเวลาผ่านไป (ความคิดเห็นของคุณมีความสำคัญที่นี่!)
เป้าหมายหลักคือการสร้าง Universal Serializer ที่สามารถใช้ได้ในทุกสถานการณ์ โดยส่วนตัวแล้วความตั้งใจหลักของฉันคือการคงอยู่ของวัตถุอย่างง่ายและการสื่อสารผ่านเครือข่าย ฉันได้เพิ่มคุณสมบัติต่างๆ มากมายเมื่อเวลาผ่านไป และเมื่อใดก็ตามที่มีคนนึกถึงสถานการณ์ที่ดีที่ควรได้รับการสนับสนุน ฉันจะทำให้มันเกิดขึ้น
ตัวอย่าง:
การตั้งค่า: การบันทึกออบเจ็กต์ลงดิสก์อย่างรวดเร็วโดยไม่มีปัญหามากนัก: การตั้งค่า บันทึกเกม อะไรก็ได้ ด้วยการกำหนดค่าที่ค่อนข้างเป็นศูนย์ ดูขั้นตอนที่ 1 และ 2 ในคู่มือการใช้งาน
การแยกส่วน: ดังนั้น Person
ของคุณจึงมีการอ้างอิงถึงวัตถุ Person
อื่น แต่แต่ละรายการควรถูกทำให้เป็นอนุกรมแยกกัน!? (โดยไม่ต้องมีการอ้างอิงอย่างรวดเร็วในการลากโปรแกรมทั้งหมดของคุณ) บางทีคุณอาจต้องการที่จะใส่แต่ละ Person
ลงในไฟล์ของตัวเองหรือส่งพวกเขาผ่านเครือข่ายทีละคนตามความจำเป็น? ไม่มีปัญหา! การใช้ IExternalRootObject
ไม่ใช่ปัญหา! ดูคู่มือวัตถุภายนอก (ตัวอย่าง Game DB))
เครือข่าย: เนื่องจาก API ที่เรียบง่ายและชุดฟีเจอร์มากมาย Ceras จึงเหมาะอย่างยิ่งที่จะใช้ 'โปรโตคอลเครือข่าย' เต็มรูปแบบสำหรับคุณ ฉันเขียนคำแนะนำสั้นๆ ที่แสดงให้เห็นว่าการใช้งาน TCP พื้นฐานมีหน้าตาเป็นอย่างไร: Just Send(myObject);
จากนั้น var obj = await Receive();
อีกด้านหนึ่งนั่นแหละ! มันไม่ง่ายไปกว่านี้อีกแล้ว ในขณะนี้ คู่มือมีเพียง 2 ส่วน แต่เมื่อฉันมีบางส่วน (และหากมีการร้องขอ) ฉันอยากจะทำซีรีส์นี้ต่อ และท้ายที่สุดก็สร้างตัวอย่างนั้นให้เป็นเครือข่ายที่เต็มเปี่ยม แข็งแกร่ง และผ่านการทดสอบการต่อสู้แล้ว ระบบ.
เพิ่มเติม: ข้างต้นเป็นเพียงตัวอย่างเท่านั้น Ceras ผลิตขึ้นเพื่อให้สามารถใช้งานได้ในทุกสถานการณ์...
หากคุณต้องการผลลัพธ์ที่มนุษย์สามารถอ่านได้ด้วยเหตุผลบางประการ ตัวอย่างเช่น ไฟล์บางไฟล์ที่คุณต้องการแก้ไขในตัวแก้ไขข้อความ สำหรับการใช้งานเหล่านั้น JSON หรือ XML น่าจะเหมาะสมกว่า
คุณวางแผนที่จะใช้สิ่งนี้บนแพลตฟอร์มที่ไม่รองรับการสร้างโค้ด ซีเรียลไลเซอร์สำหรับประเภทผู้ใช้ถูกสร้างขึ้นที่รันไทม์ผ่านการสร้างโค้ด และหากไม่ได้รับอนุญาต (เช่นบน iOS) Ceras จะไม่สามารถสร้างตัวจัดรูปแบบอ็อบเจ็กต์ตามอำเภอใจได้ ประเภทบิวท์อินจะยังคงใช้งานได้ มีวิธีแก้ไขปัญหานี้... (การสร้างฟอร์แมตเตอร์ล่วงหน้า) ขณะนี้ Ceras มี AotMode
เฉพาะในการกำหนดค่าและตัวสร้างโค้ด (คำแนะนำโดยย่อสำหรับ IL2CPP/Unity/AoT
เปิดประเด็น
เข้าร่วม Discord ของฉัน (อาจเป็นวิธีที่ดีที่สุดสำหรับการช่วยเหลือโดยตรงแบบตัวต่อตัว)
ตรวจสอบให้แน่ใจว่าคุณได้อ่านคำถามที่พบบ่อยและการเพิ่มประสิทธิภาพและข้อผิดพลาดแล้ว