두 가지 구성 요소가있는 분산 응용 프로그램에서 작업 중입니다. 하나는 표준 C++ (관리되지 않는 C++ 및 Linux 플랫폼에서 실행)로 작성되었으며 다른 하나는 C#으로 작성되었습니다. 둘 다 메시지 버스를 통해 통신합니다.C++ 및 C#의 이진 직렬화/비 직렬화
나는 C++에서 C# 응용 프로그램으로 개체를 전달해야하므로이 개체를 C++로 serialize하고 C# (마샬링/언 마샬링 .NET과 같은 기능)에서 직렬화해야하는 상황이 있습니다. . 필자는이 직렬화를 XML로하지 않고 바이너리로 수행해야합니다 (성능상의 이유로).
Boost.Serialization
은 양쪽 끝이 C++로 구현되었지만 이제는 한쪽 끝에 .NET 응용 프로그램이 있으므로 Boost.Serialization
은 실행 가능한 솔루션이 아닙니다.
저는 C++ 및 .NET 경계 (즉, 크로스 플랫폼 이진 직렬화)에서 직렬화를 수행 할 수있는 솔루션을 찾고 있습니다.
C++ DLL에 (비) 직렬화 코드를 구현하고 .NET 응용 프로그램에서 P/Invoke
을 사용할 수 있다는 것을 알고 있지만 최후의 수단으로 사용하고 싶습니다.
또한 gzip과 같은 표준을 사용하고 있는지 알고 싶습니다. 효율적입니까? gzip에 대한 다른 대안이 있습니까? 그것들의 장단점은 무엇입니까?
감사
가장 좋은 제안은하지 않는 것입니다. json, xml 또는 다른 것을 사용하여 데이터를 전송하십시오. 처음에 너무 느리게 끝나면 무엇이 시간이 걸리는지 분석하십시오. – Cine
XML 직렬화로 시작했고 이진 직렬화 (양쪽에서 C++ 응용 프로그램을 실행하는 것)와 비교할 때 속도가 느려졌습니다. 이것이 내가 Boost를 선택한 이유입니다. 처음에는 직렬화를 사용했습니다. –
간단한 COM 응용 프로그램, C++ 및.NET은 내가 아는 한 COM 기술을 지원합니다. –