Ceras는 바이너리 직렬 변환기입니다. 모든 객체를 byte[]
로 변환하고 그 반대로 변환합니다. 기능, 속도, 편안함 측면에서 그 이상입니다. 참조 루프, 크고/복잡한 상속 체인, 객체를 여러 부분으로 분할 등을 지원합니다.
클래스 사람 { 공개 문자열 이름; 공개 int 연령; }var p = new Person { 이름 = "riki", 나이 = 5 };var ceras = new CerasSerializer();var bytes = ceras.Serialize(p);
>> 코드 튜토리얼에 더 많은 예제가 있습니다.
>> 내 블로그의 특정 시나리오에 대한 자세한 가이드
>> '최적화 및 사용의 함정' 읽기
>> 변경 로그 v3.0 (rikidev.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를 사용하여 네트워크 패킷을 읽고 쓰려면 설정 개체를 파일에 저장하거나 게임에서 아이템/주문/몬스터를 유지하는 것과는 다른 설정이 필요할 수 있습니다.
프로젝트는 여전히 진행 중입니다. 즉, 시간이 지남에 따라 더 많은 최적화가 구현될 것입니다(여기서 귀하의 피드백이 중요합니다!).
주요 목표는 모든 상황에서 사용할 수 있는 범용 직렬 변환기를 만드는 것입니다. 개인적으로 나의 주된 의도는 쉬운 객체 지속성과 네트워크 통신이었습니다. 나는 시간이 지남에 따라 많은 기능을 추가했으며 누군가가 지원해야 할 좋은 시나리오를 생각할 때마다 그것을 실현할 것입니다.
예:
설정: 설정, 게임 저장 등 많은 문제 없이 개체를 디스크에 빠르게 저장합니다. 구성이 거의 없습니다. 사용 가이드의 1단계와 2단계를 참조하세요.
분할: 따라서 Person
에는 다른 Person
객체에 대한 참조가 있지만 각 객체는 개별적으로 직렬화되어야 합니다!? (본질적으로 전체 프로그램에 참조를 빠르게 끌어 넣지 않고). 어쩌면 각 Person
자신의 파일에 넣거나 필요에 따라 네트워크를 통해 하나씩 보낼 수 있기를 원하십니까? 괜찮아요! IExternalRootObject
사용하면 문제가 되지 않습니다! 외부 개체 가이드(게임 DB 예)를 참조하세요.
네트워크: 간단한 API와 광범위한 기능 세트로 인해 Ceras는 완전한 '네트워크 프로토콜'을 구현하는 데 고유하게 적합합니다. 나는 기본 TCP 구현이 어떻게 보이는지 보여주는 짧은 가이드를 작성했습니다. Just Send(myObject);
그런 다음 var obj = await Receive();
반대편에는 그게 다야! 말 그대로 이보다 더 쉬울 수는 없습니다. 현재 가이드에는 2개의 부분만 있지만 일부가 확보되면(요청이 있는 경우) 시리즈를 계속해서 최종적으로 해당 샘플을 본격적이고 강력하며 전투 테스트를 거친 네트워킹으로 구축하고 싶습니다. 체계.
더보기: 위의 내용은 예시일 뿐이며, Ceras는 거의 모든 상황에서 사용할 수 있도록 만들어졌습니다...
어떤 이유로 사람이 읽을 수 있는 출력이 필요한 경우. 예를 들어 텍스트 편집기에서 편집할 수 있는 파일이 있습니다. 이러한 용도에는 JSON 또는 XML이 더 적합할 수 있습니다.
코드 생성을 지원하지 않는 플랫폼에서 이를 사용할 계획입니다. 사용자 유형에 대한 직렬 변환기는 코드 생성을 통해 런타임에 생성됩니다. 그리고 그것이 허용되지 않으면(예를 들어 iOS에서) Ceras는 임의의 객체 포맷터를 생성할 수 없습니다. 내장 유형은 여전히 작동합니다. 하지만 이 문제를 해결할 수 있는 방법이 있습니다... (포매터 사전 생성) 이제 Ceras에는 구성에 전용 AotMode
있고 IL2CPP/Unity/AoT용 코드 생성기(여기서 빠른 가이드)가 있습니다.
이슈 열기
내 Discord에 가입하세요(직접적인 일대일 도움을 제공하는 데 가장 적합할 것임)
FAQ와 최적화 및 함정을 읽었는지 확인하세요.