Tenemos un gran proyecto escrito principalmente en C# (servicios, multihilo, etc.). Sin embargo, los algoritmos de crujido de números centrales están escritos en C++ no administrado para ser rápidos (OpenMP, etc.).Usar las propiedades de C# en el código de C++ no administrado
Desafortunadamente, por el momento tenemos que esforzarnos mucho para intercambiar datos entre estos dos mundos. Es decir, tenemos que escribir clases de ajuste en C++/CLI para cada una de las clases de C++. Para (virtualmente) cualquier ajuste requerido (Propiedades) en C# - "mundo" hay una copia en el mundo de C++ (un archivo de encabezado) y una conversión explícita de ida y vuelta en la clase contenedora. Esta arquitectura parece muy ineficiente y bastante propensa a errores.
Pregunta principal: ¿Hay alguna manera de compartir una clase C# con propiedades de alguna manera automáticamente en C++ no administrado? (tenemos que leer y escribir!)
Pregunta secundaria: ¿Podría darnos algún consejo sobre cómo mejorar la arquitectura en un caso como el descrito anteriormente? Una consideración nuestra fue cambiar completamente a C++, pero tener que encontrar las bibliotecas apropiadas y escribir código limpio para todas las cosas (del sistema) que hacemos en .NET en este momento no nos hace sentir bien.
Muchas gracias por su ayuda y saludos, Jakob
¿Has verificado que escribir los algoritmos en C# es un cuello de botella? C# 4.0 tiene un buen soporte para el desarrollo paralelo ahora. – Nick
No, aún no lo hemos hecho, y tiene razón: debemos intentarlo para estar seguros de este punto. Pero a medida que dependemos de propiedades particulares del almacenamiento en memoria caché y similares, realmente dudo que el algoritmo se ejecute con una velocidad similar en el CLR. –
¿Qué le parece [Protocol Buffers] (http://code.google.com/p/protobuf/)? Existe la posibilidad de usarlo junto con C# utilizando [protobuf-net] (http://code.google.com/p/protobuf-net/). – megabyte1024