Ich arbeite an einer verteilten Anwendung, die zwei Komponenten hat. Einer ist in Standard C++ geschrieben (nicht verwaltet C++ und läuft auf einer Linux-Plattform) und der andere ist in C# geschrieben. Beide kommunizieren über einen Nachrichtenbus.Binäre Serialisierung/Deserialisierung in C++ und C#
Ich habe eine Situation, in der ich Objekte von C++ an C# -Anwendung übergeben muss und dafür muss ich diese Objekte in C++ serialisieren und sie in C# deserialisieren (etwas wie Marshalling/Un-Marshalling in .NET) . Ich muss diese Serialisierung in binär und nicht in XML durchführen (aus Leistungsgründen).
Ich habe Boost.Serialization
verwendet, um dies zu tun, wenn beide Enden in C++ implementiert wurden, aber jetzt, dass ich eine .NET-Anwendung an einem Ende habe, Boost.Serialization
ist keine praktikable Lösung.
Ich bin auf der Suche nach einer Lösung, mit der ich (de) Serialisierung über C++ und .NET-Grenze, d. H. Cross-Plattform-Binär-Serialisierung.
Ich weiß, dass ich den (De-) Serialisierungscode in einer C++ - DLL implementieren und P/Invoke
in der .NET-Anwendung verwenden kann, aber ich möchte das als letzten Ausweg behalten.
Auch ich möchte wissen, ob ich einige Standard wie gzip verwenden, wird das effizient sein? Gibt es noch andere Alternativen zu gzip? Was sind die Vor-/Nachteile von ihnen?
Dank
Mein bester Vorschlag ist es NICHT zu tun. Verwenden Sie json, xml oder etwas anderes, um Ihre Daten zu übertragen. Implementiere das FIRST, wenn es zu langsam endet, dann analysiere, was Zeit braucht ... – Cine
Ich begann mit der XML-Serialisierung und es erwies sich als langsamer im Vergleich zur binären Serialisierung (mit beiden Enden läuft eine C++ - Anwendung). Aus diesem Grund habe ich Boost.Serialization auf den ersten Platz gewählt. –
Haben Sie überlegt, eine einfache COM-Anwendung, C++ und.NET unterstützt COM-Technologie, soweit ich weiß. –