Ceras adalah serializer biner. Itu mengubah objek apa pun menjadi byte[]
dan sebaliknya. Ini melampaui dan melampaui dalam hal fitur, kecepatan, dan kenyamanan. Mendukung loop referensi, rantai pewarisan besar/rumit, membagi objek menjadi beberapa bagian, ...
kelas Orang { nama string publik; usia int publik; }var p = Orang baru { Nama = "riki", Umur = 5 };var ceras = baru CerasSerializer();var bytes = ceras.Serialize(p);
>> Masih banyak lagi contoh di tutorial kode
>> Panduan terperinci untuk skenario spesifik di blog saya
>> Baca 'Kesalahan Pengoptimalan & Penggunaan'
>> Changelog v3.0 (rikidev.com/new-features-in-ceras-3-0-2)
>> Fitur baru di v4.0 (https://github.com/rikimaru0345/Ceras/releases/tag/4.0)
Output biner yang sangat cepat dan kecil (lihat Kinerja )
Mendukung hampir semua jenis:
Pemformat tulisan tangan untuk semua tipe .NET umum
Dilengkapi dengan pemformat untuk semua tipe Unity yang umum
Menghasilkan pemformat baru saat runtime untuk semua tipe pengguna/baru
Sangat mudah untuk diperluas dan disesuaikan
Dukungan penuh untuk persistensi referensi (termasuk referensi melingkar!)
Dukungan penuh untuk polimorfisme/warisan/antarmuka
Dapat membuat serial objek menjadi beberapa bagian sebagai "ExtenalObjects" (berguna dalam banyak skenario)
Toleransi versi otomatis, tidak perlu menempatkan atribut apa pun di kelas Anda!
daftar fitur lengkap (dan fitur yang direncanakan)
Ceras umumnya menempati peringkat teratas dalam spektrum kinerja, bersama dengan NetSerializer dan MessagePack-CSharp. Untuk mendapatkan gambaran tentang kinerja Ceras, berikut adalah hasil benchmark awal. Ukuran biner yang dihasilkan hampir sama dengan MessagePack-CSharp.
Hasil yang ditampilkan diperoleh dari kode ini dan saya mendorong Anda untuk tidak hanya mencobanya sendiri, tetapi juga memberikan umpan balik tentang skenario yang Anda dapatkan hasil baik dan buruknya.
Jangan lupa untuk menyesuaikan pengaturan di SerializerConfig
untuk situasi spesifik Anda. Menggunakan Ceras untuk membaca/menulis paket jaringan mungkin memerlukan pengaturan yang berbeda dari, katakanlah, menyimpan objek pengaturan ke file, atau mempertahankan item/mantra/monster dalam game, atau ...
Proyek ini masih dalam proses, yang berarti seiring waktu akan ada lebih banyak pengoptimalan yang diterapkan (masukan Anda penting di sini!).
Tujuan utamanya adalah membuat serializer universal yang dapat digunakan di segala situasi. Secara pribadi niat utama saya adalah persistensi objek yang mudah dan komunikasi jaringan. Saya telah menambahkan banyak fitur dari waktu ke waktu dan kapan pun seseorang dapat memikirkan skenario bagus yang juga harus didukung, saya akan mewujudkannya.
Contoh:
Pengaturan: Menyimpan objek ke disk dengan cepat tanpa banyak kesulitan: pengaturan, simpan permainan, apa pun itu. Dengan hampir nol konfigurasi. Lihat langkah 1 dan 2 di Panduan Penggunaan
Pemisahan: Jadi Person
Anda memiliki referensi ke objek Person
lainnya, tetapi masing-masing objek harus diserialkan secara individual!? (tanpa referensi dengan cepat menyeret seluruh program Anda). Mungkin Anda ingin memasukkan setiap Person
ke dalam filenya sendiri, atau mengirimkannya melalui jaringan satu per satu sesuai kebutuhan? Tidak masalah! Menggunakan IExternalRootObject
itu tidak menjadi masalah! Lihat Panduan Objek Eksternal (contoh Game DB)).
Jaringan: Karena API yang sederhana dan serangkaian fitur yang luas, Ceras secara unik cocok untuk mengimplementasikan 'protokol jaringan' lengkap untuk Anda. Saya menulis panduan singkat yang menunjukkan seperti apa implementasi dasar TCP: Just Send(myObject);
itu, maka var obj = await Receive();
di sisi lain, itu dia! Benar-benar tidak ada yang lebih mudah dari itu. Saat ini panduan ini hanya memiliki 2 bagian, tetapi ketika saya memiliki beberapa (dan jika ada permintaan untuk itu) saya ingin melanjutkan seri ini, pada akhirnya membangun sampel tersebut menjadi jaringan yang lengkap, kuat, dan teruji pertempuran. sistem.
Lebih lanjut: Di atas hanyalah contoh, Ceras dibuat agar dapat digunakan di hampir semua situasi...
Jika Anda memerlukan keluaran yang dapat dibaca manusia karena alasan tertentu. Misalnya beberapa file yang ingin Anda edit di editor teks. Untuk penggunaan tersebut, JSON atau XML mungkin lebih cocok.
Anda berencana untuk menggunakan ini pada platform yang tidak mendukung pembuatan kode. Serializer untuk tipe pengguna dibuat saat runtime melalui pembuatan kode. Dan jika hal itu tidak diizinkan (misalnya di iOS) Ceras tidak akan dapat menghasilkan pemformat objek sembarangan. Tipe bawaan akan tetap berfungsi. Namun ada cara untuk memperbaikinya... (membuat formatter sebelumnya) Ceras sekarang memiliki AotMode
khusus di konfigurasi dan generator kode (panduan cepat untuk itu di sini) untuk IL2CPP/Unity/AoT.
Buka masalah
Bergabunglah dengan Discord saya (mungkin yang terbaik untuk bantuan langsung satu lawan satu)
Pastikan Anda telah membaca FAQ dan Optimasi & Kesalahan