Chúng tôi có một dự án lớn chủ yếu được viết bằng C# (dịch vụ, đa luồng, v.v ...). Tuy nhiên, thuật toán crunching số lõi được viết bằng C++ không được quản lý để nhanh (OpenMP, v.v.).Sử dụng các thuộc tính C# trong mã C++ không được quản lý
Thật không may, hiện tại chúng tôi phải làm rất nhiều nỗ lực để trao đổi dữ liệu giữa hai thế giới này. Tức là, chúng ta phải viết các lớp gói trong C++/CLI cho mỗi lớp C++. Đối với (hầu như) bất kỳ thiết lập bắt buộc nào (Properties) trong C# - "thế giới" có một bản sao trong thế giới C++ (một tệp tiêu đề) và một chuyển đổi rõ ràng qua lại trong lớp trình bao bọc. Kiến trúc này có vẻ rất kém hiệu quả và khá dễ bị lỗi.
Câu hỏi chính: Có cách nào để chia sẻ C#-class với các thuộc tính bằng cách nào đó tự động trong C++ không được quản lý không? (chúng tôi phải đọc và viết!)
Câu hỏi phụ: Bạn có thể đưa ra bất kỳ lời khuyên nào về cách cải thiện kiến trúc trong trường hợp như được mô tả ở trên không. Một trong những xem xét của chúng ta là hoàn toàn chuyển sang C + +, nhưng phải tìm thư viện thích hợp và viết mã sạch cho tất cả những thứ (system-) chúng tôi làm trong. NET tại thời điểm này không cảm thấy tốt.
Rất cám ơn sự giúp đỡ của bạn Trân trọng, Jakob
Bạn đã xác minh rằng việc viết các thuật toán trong C# là một nút cổ chai? C# 4.0 có hỗ trợ tốt cho sự phát triển song song hiện nay. – Nick
Không, chúng tôi chưa làm điều này, và bạn nói đúng: Chúng tôi nên cố gắng chắc chắn về điểm này. Nhưng khi chúng ta dựa vào các thuộc tính cụ thể của bộ nhớ đệm và giống như tôi thực sự nghi ngờ rằng thuật toán sẽ chạy với tốc độ tương tự trong CLR. –
Làm thế nào về [Protocol Buffers] (http://code.google.com/p/protobuf/)? Có khả năng sử dụng nó cùng với C# sử dụng [protobuf-net] (http://code.google.com/p/protobuf-net/). – megabyte1024