¿C # es realmente un lenguaje multiplataforma?

20

C # (y la plataforma .net en general) parece que se está convirtiendo en una buena opción para aplicaciones de orientación múltiple:

  • Marco oficial de MS .net: desarrollo completo de Windows, asp.net dev, Windows phone Dev, etc.
  • mono y todos sus derivados: monotouch, monodroid: el resto del mundo. Estas herramientas son hoy RTM.

  • ¿Significa que C # se está convirtiendo en un buen lenguaje para apuntar a las plataformas más populares: escritorio, web y móvil?

  • ¿Sigue siendo mejor usar el lenguaje "nativo" de las plataformas de destino (objetivo C, Java, etc.)
  • ¿Es solo una pantalla de humo y solo un lenguaje de marketing?

Tenga en cuenta que soy consciente de que no podré copiar / pegar el código entre plataformas. Pero estoy seguro de que las capas inferiores de aplicaciones (modelos, negocios, etc.) pueden reutilizarse, pero sé que tendré que adaptar las capas superiores (Gui, etc.) a la plataforma. Mi objetivo está más centrado en las habilidades requeridas que el intercambio de código técnico.

[edit] Soy un desarrollador ac # en una compañía que usa masivamente c #. Es por eso que hablé de c # en un plan para expandir el rango de plataformas de destino en mi empresa.

Steve B
fuente

Respuestas:

12

Sí, en general, .NET Framework es ideal para aplicaciones que se dirigen a una amplia gama de dispositivos. Pero esto no es exclusivo de .NET; Java hacía eso mucho antes. Lo que hay que tener en cuenta es que no hay una alternativa real a las herramientas nativas para una plataforma en particular.

Las aplicaciones de Mac que cree con .NET nunca se verán como aplicaciones nativas de Mac OS X, y eso es considerado un problema por la gran mayoría de los usuarios de OS X. Es posible que eso no sea importante para usted estratégicamente, dependiendo de si su modelo de negocio valora maximizar la saturación sobre maximizar la satisfacción del usuario, pero ciertamente es algo a tener en cuenta al tomar una decisión.

Los sistemas GUI en Linux y Windows son algo más flexibles en términos de qué aplicaciones parecen "nativas" y encajan bien con la plataforma. Pero culpo principalmente a la falta de pautas claras de interfaz y al hecho de que los desarrolladores de aplicaciones históricamente han estado dispuestos a ignorar los que existen. Muchos usuarios de Mac prefieren la Mac precisamente por su interfaz de usuario consistente.

Teniendo en cuenta que tendrá que adaptar la capa GUI a la plataforma específica (y posiblemente reescribirla en un lenguaje completamente diferente, como Objective-C), lo que le permite aprovechar la plataforma .NET solo para el código de la biblioteca. Y luego no hay una victoria muy clara para C # sobre C ++, en mi opinión.

Para el desarrollo rápido de aplicaciones, existen pocas alternativas que sean mejores que C # y .NET. Y sacar una aplicación rápidamente y tenerla disponible de inmediato en una diversidad de plataformas es sin duda una ventaja comercial. Pero para las verdaderas aplicaciones multiplataforma que tienen como objetivo satisfacer realmente al usuario, no es necesariamente la solución definitiva.

Cody Gray
fuente
99
"Las aplicaciones de Mac que cree con .NET nunca se verán como aplicaciones nativas de Mac OS X, ...". Permíteme presentarte MonoMac: mono-project.com/MonoMac
3
@Dimitris: Digamos que soy escéptico, en el mejor de los casos. La gente de Qt intentó esto, y la gente todavía salta de un lado a otro por haberlo logrado. Están equivocados: no lo han hecho. Las aplicaciones Qt no se parecen a las aplicaciones nativas de OS X. Solo están ... equivocados. No veo ninguna captura de pantalla en el enlace que sugirió, pero incluso si obtienen la interfaz de usuario perfecta, aún se perderán todos los detalles de comportamiento e implementación. Gracias por la referencia, sin embargo. Es algo para ser optimista.
Cody Gray
77
@Cody Gray: MonoMac se ve y actúa de forma nativa porque no es una API multiplataforma, sino que envuelve de forma nativa la API subyacente de Cocoa. Se ve y actúa como nativo porque ES nativo.
1
@Cody Gray: MonoMac es para Mac lo que MonoTouch es para iOS. Puede escribir aplicaciones nativas, solo use C # en lugar de Obj-C. No es "hacer que WinForms o Gtk se vean bien en Mac".
2
Solo quería participar en la conversación anterior, ya que estoy justo en el medio de la construcción de un sistema que abarca iPad y Windows Phone, ASP.NET MVC3 y NT Services en interfaz con un sistema de control de robótica. Mono, MonoDroid, MonoTouch, etc., como Cody señaló anteriormente, es una forma de escribir código en C # que le permite aprovechar el poder de C # y .NET Framework (incluido Linq) mientras disfruta de un acceso ilimitado a su API "nativas" de la plataforma elegida ... al tiempo que evita los muchos problemas de administración de memoria inherentes a la mayoría del código C / C ++ / ObjC nativo.
Richard Turner
6

Microsoft .NET es la implementación oficial de CLR, DLR, BCL, CLI y CLS. Otras empresas, grupos, comunidades o grupos de trabajo no están asociados con Microsoft de manera que puedan tener una implementación 1: 1 de la última versión de marco y lenguaje.

Básicamente, debe revisar qué características de lenguaje y marco le gustaría aprovechar en un proyecto concreto y verificar si están presentes en implementaciones no oficiales de .NET.

Si espera una solución de compilación única y distribuir en todas partes, está equivocado: debe hacer un estudio de caso.

Matías Fidemraizer
fuente
Eso es un montón de TLA s!
Tamlyn
@tamlyn yeah jajajaja
Matías Fidemraizer
Ahora que gran parte de .NET es de código abierto, las cosas han cambiado ...
Ian
@Ian Sure .......
Matías Fidemraizer
2

Uso C # en juegos que se ejecutan en máquinas XBOX y Windows, lo uso en aplicaciones Compact Framework para soluciones de robótica, uso MonoTouch para desarrollo de iPad, tengo algunas aplicaciones web que se ejecutan en Linux y algunas otras soluciones. Por lo general, hay una manera de hacer lo suyo en una plataforma determinada. La capa central es casi la misma para la mayoría de ellos (es necesario un estudio de caso). El problema, y ​​lo considero como una serie, es el entorno de desarrollo. Estoy acostumbrado a Visual Studio y sus características. Pero MonoDevelop, por ejemplo, me vuelve loco.

scarlaxx
fuente
1
Novell lanzó recientemente la extensión A VS 2010 para que pueda desarrollar código Mono en VS.
Morgan Herlocker