Tôi đang làm việc trên một ứng dụng phân tán có hai thành phần. Một được viết bằng tiêu chuẩn C++ (không được quản lý C++ và chạy trên nền tảng Linux) và một được viết bằng C#. Cả hai đều đang giao tiếp thông qua một chiếc xe buýt thông báo.Phân loại/tuần tự hóa nhị phân trong C++ và C#
Tôi có một tình huống mà tôi cần phải vượt qua các đối tượng từ C++ đến ứng dụng C# và cho điều này tôi cần serialize những đối tượng trong C++ và de-serialize chúng trong C# (một cái gì đó như marshaling/un-marshaling trong .NET) . Tôi cần phải thực hiện serialization này trong nhị phân và không phải trong XML (do lý do hiệu suất).
Tôi đã sử dụng Boost.Serialization
để thực hiện điều này khi cả hai đầu được triển khai trong C++ nhưng bây giờ tôi có ứng dụng .NET ở một đầu, Boost.Serialization
không phải là giải pháp khả thi.
Tôi đang tìm một giải pháp cho phép tôi thực hiện (de) tuần tự hóa trên ranh giới C++ và .NET tức là, serial serial nhị phân chéo.
Tôi biết tôi có thể triển khai mã tuần tự (de) trong một tệp C++ và sử dụng P/Invoke
trong ứng dụng .NET, nhưng tôi muốn giữ nó như một phương sách cuối cùng.
Ngoài ra, tôi muốn biết nếu tôi sử dụng một số tiêu chuẩn như gzip, điều đó có hiệu quả không? Có bất kỳ lựa chọn thay thế nào khác cho gzip không? Ưu/nhược điểm của chúng là gì?
Cảm ơn
Đề xuất tốt nhất của tôi là KHÔNG làm điều đó. Sử dụng json, xml hoặc một cái gì đó khác để chuyển dữ liệu của bạn. Thực hiện rằng FIRST, nếu nó kết thúc quá chậm thì phân tích những gì đang mất thời gian ... – Cine
Tôi bắt đầu với serialization XML và nó đã chứng minh chậm hơn so với serialization nhị phân (với cả hai đầu chạy một ứng dụng C++). Đây là lý do tôi chọn Boost.Serialization ở nơi đầu tiên. –
Bạn đã xem xét việc phát triển một ứng dụng COM đơn giản, C++ và.NET hỗ trợ công nghệ COM theo như tôi biết. –