ventajas - Alguien tiene experiencia con la arquitectura para el desarrollo móvil multiplataforma WP7 Android(monotouch, monodroid, C#)
xamarin ventajas y desventajas (4)
Es posible que desee examinar el proyecto MonoCross, que está diseñado para ayudarlo a reutilizar el código C # con múltiples capas de presentación:
http://code.google.com/p/monocross/
Los autores de MonoCross (ITR Mobility) han creado múltiples soluciones móviles multiplataforma para una variedad de clientes y han escrito dos libros sobre el tema, uno es "iPad en la empresa" ( http://amzn.to/zAhQK6 ) y el próximo "Desarrollo móvil multiplataforma con C #" ( http://amzn.to/wM6RsF ).
Mientras tanto, puedes ver la presentación de Scott Olson que hizo en Monospace 2011 que describe cómo usar MonoCross para apuntar a múltiples plataformas móviles y de escritorio al reutilizar la lógica de negocios:
http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise
Imponen una estricta división de MVC en su código:
Patrón MonoCross MVC http://tirania.org/s/0e187c1c.png
El mayor beneficio de diseñar una aplicación con este modelo es que puede ejecutar la misma aplicación con interfaces de usuario nativas en cada plataforma. Obtiene iOS nativo, Android, interfaz de usuario de Windows e incluso tienen un front-end ASP.NET que le permite publicar versiones web de la misma lógica comercial.
Esta tecnología fue utilizada con éxito por la aplicación de muestra Medtronic que Apple exhibió en su negocio de iPad:
http://www.apple.com/ipad/business/profiles/medtronic/
Sugiero que también consulte el blog de Scott, donde publica regularmente sobre sus experiencias con la arquitectura multiplataforma.
Esta pregunta se relaciona específicamente con una arquitectura recomendada y las experiencias previas de las personas para las aplicaciones multiplataforma WP7, iOS y Android desarrolladas con C #, Monotouch y Monodroid, respectivamente. He investigado las preguntas anteriores here , here y here . Proporcionan buenas respuestas, pero no exactamente lo que estoy buscando. También encontré esta excelente pregunta que se incluye en el costo beneficio por lo que hay cierta superposición.
Tengo el requisito de desarrollar una aplicación multiplataforma iPhone / iPad, WP7 y Android para una empresa de salud y fitness, que se integrará con su sitio web. La aplicación requiere una pequeña cantidad de almacenamiento de datos local para el modo fuera de línea y la sincronización con el sitio web cuando hay una red disponible. Soy un desarrollador de Windows (C # / C ++) de principio a fin y realmente no quiero ir por la ruta de tres aplicaciones de Objective C, Java y C #, aunque lo haré si es necesario. También operaré como líder tecnológico y trabajaré un poco para un equipo en este proyecto.
Me gustaría saber si alguien aquí tiene experiencia en el desarrollo multiplataforma usando Monotouch, Monodroid y WP7 y compartir su experiencia en la arquitectura de aplicaciones para reutilizar la mayor cantidad de código posible. La arquitectura que estoy considerando es la siguiente:
Mi pregunta es la siguiente:
- ¿Alguien ha intentado algo como esto?
- ¿Estos marcos (Monotouch, monodroid) valen la pena para este tipo de trabajo?
- ¿Puedo configurar todo el proyecto en Visual Studio 2010 con proyectos separados (dlls / exe) para el objetivo Monotouch, Monodroid y Wp7 (pero código compartido usando ''Agregar como enlace'')?
- ¿Qué tipo de reutilización de código puedo esperar de forma realista con esta arquitectura (o una similar)? es decir, ¿qué estrategias / patrones puedo usar para volver a utilizar el acceso a los datos locales, los servicios web y la lógica comercial?
Atentamente,
La pregunta es muy difícil de responder, pero me gustaría compartir algunas ideas.
La situación con el desarrollo móvil es muy similar al desarrollo de la primera mitad de los 90. El teléfono tiene recursos limitados como tenían las computadoras, los sistemas operativos móviles están dando sus primeros pasos, por lo tanto, el ecosistema es relativamente pequeño. Tienen filosofía propia, herramientas e incluso idiomas. Y esto es algo bueno, pero conduce a un dolor de cabeza para el desarrollo multiplataforma. Como resultado, hay muchos intentos de aclarar esto un poco. La gente construye frameworks, envoltorios, etc., que es un tipo de abstracción y las abstracciones tienen filtraciones . Esto es extremadamente importante para los dispositivos móviles, no solo por el rendimiento como el número de ciclos de CPU, sino también por el rendimiento de la batería, que es mucho más importante para el usuario.
Si fuera usted, crearía aplicaciones en un entorno nativo, especialmente si tiene algunas consideraciones de rendimiento. El mejor soporte, herramientas, recursos educativos, etc. paga la lógica comercial duplicada. En general, no es un sistema operativo o de gestión de base de datos, la base de código no será enorme;)
Habiendo dicho eso. En cuanto a Monotouch y Monodroid, tendría mucho cuidado ya que Apple bloquea las aplicaciones de iPhone OS creadas por muchos compiladores de terceros y a The King realmente no le importan los desarrolladores. El caso de que Mono se vacíe a la trabajadora por infracción de patente o proveedores de software propietario es muy probable. Esto es triste para mí porque C # es mi idioma favorito.
PD. No creo que HTML5 for mobile tome el relevo en el corto plazo.
Según sus comentarios, sus requisitos son para una plataforma móvil que se integrará con sus servicios existentes, pero también funcionará sin conexión. Usted está específicamente interesado en C # a través de Mono, sin embargo, ha indicado que no está descartando otros enfoques.
Siento que HTML / PhoneGap / JavaScript es una ruta que debes explorar con cierto detalle. La versión WP7 de este marco acaba de ser lanzada, y he tenido la experiencia de lanzar una aplicación al mercado utilizando este enfoque.
PhoneGap ajusta su código HTML / JavaScript, en el caso de WP7 esto se carga en el almacenamiento local. Esto permite que la aplicación funcione completamente fuera de línea. Esto es cierto para todas las versiones (iOS, Android, etc.)
Probablemente el mayor problema con PhoneGap / HTML5 es el mismo problema que tenemos cuando desarrollamos aplicaciones complejas basadas en web para el navegador. Las herramientas para JavaScript no son geniales y las diferencias de navegación son un problema constante. Sin embargo, es una solución probada.
Finalmente, es posible crear una interfaz de usuario de la aplicación que sea completamente diferente para cada plataforma. Al utilizar el patrón MVVM, he logrado compartir toda mi lógica de negocios de JavaScript entre las aplicaciones WP7 e iOS a la vez que tengo una UI totalmente diferente:
Compare esto con las pantallas de WP7:
NOTA: planeo tener la versión de iOS de Property Finder en la AppStore en breve, ¡solo tengo que averiguar cómo usar PhoneGap Build!
Solo agregando otra alternativa a la mezcla - mvvmcross
Este proyecto fue desarrollado a partir de experiencias con monocross, mvvmlight y opennetcf.
Es un framework de mvvm bastante dogmático (¡con mis opiniones en él!), Incluye soporte de enlace de datos para Droid y Touch, y realmente fomenta la reutilización del código entre las plataformas.
La fuente está disponible en https://github.com/slodge/MvvmCross , se ha utilizado en al menos un par de grandes proyectos y todavía está en desarrollo activo.
Hay una presentación introductoria en slideshare: http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding
Una de las muestras más completas es una aplicación de conferencia: