Hice algo no muy diferente. Era una aplicación para un modelador y motor de gráficos, con los gráficos realizados en Open GL y Direct 3D. Eres similar, porque al menos tendrás que dibujar algunas líneas para CAD, ¿verdad?
Esto es lo que encontré.
La parte .NET fue totalmente fácil de hacer, con la interfaz de usuario que involucra paneles, herramientas y otras cosas. Ni siquiera necesitaba mirar libros para hacerlo. Simplemente abra Visual Studio y arrastre y suelte. Todo es obvio.
- Recientemente en mi empresa, hemos recurrido más a empresas externas para el desarrollo. Soy un desarrollador nuevo, ¿cómo puedo desarrollar mis habilidades en este entorno?
- ¿Cómo convertir hardware a software? Es decir, ¿cuál es el sistema intermediario que le permite ingresar código para que lo ejecute un robot?
- En términos de matemática y lógica, ¿cuál es más desafiante, el aprendizaje automático supervisado o el aprendizaje automático no supervisado?
- ¿Cuál es el punto de que las grandes casas de software compren desarrolladores talentosos más pequeños si solo homogeneizan y finalmente matan la IP y los talentos que compraron?
- ¿Qué tipo de habilidades se requieren para las pruebas manuales y cuáles son las funciones y responsabilidades de un probador de software?
La parte gráfica seria: de ninguna manera en el infierno, y lo digo en serio. Tuve que volver a C ++. Lo que no hubiera sido tan malo, excepto …
La interfaz interna entre C ++ y .NET era como discutir con un colon espástico. Hacer que trabajen juntos me llevó al menos el 80% de mi tiempo. Además, era tan difícil hacer pruebas unitarias que hizo que las demás partes del desarrollo tomaran más tiempo.
ETA, porque me preguntaron. Model-view-controller es una buena forma de estructurar, y creo que fue esencial para lo que estaba tratando de hacer. El controlador tenía que estar en .NET. La vista (bueno, al menos la parte 3-D) tenía que estar en C ++ o C. En realidad, había múltiples vistas, y algunas estaban en .NET, pero estas eran representaciones groseras de geometría como objetos. Algunos de los controladores tenían que estar en C ++, debido a ciertos tecnicismos. Había un patrón que C # era casi pero no lo suficientemente bueno como para implementarlo de manera elegante, pero podía hacerlo en C ++ con plantillas. De todos modos, me estoy desviando …
El problema no era la arquitectura, aunque hubiera sido peor en otras arquitecturas. El problema era obtener una comunicación significativa entre la parte .NET y la parte C ++.
Otra pregunta que he visto recientemente es si .NET fue un fracaso. Mi punto de vista es sí, en parte debido a esta incomodidad. Si tiene un código C ++, es realmente difícil refactorizarlo. No hay un mecanismo de transición obvio; es prácticamente todo o nada a través de un canal estrecho. Entonces, los trucos de andamios que hacen posible las transiciones son prácticamente imposibles. Este era un código nuevo, por lo que no era inconcebible, pero aún así era muy complicado.
No es, por ejemplo, como Objective C, donde puedes usar funciones de C e incluso usar C ++ con archivos .m. Por lo tanto, puede juntar bits aproximadamente para ver si funcionan y luego refactorizar para usar su capa de pegamento agradable y bien diseñada.