2011-03-22 17 views
5

Estoy a punto de comenzar a construir una aplicación que se utilizará en todas las plataformas. Usaré monotouch y monodriod para poder guardar las cosas en .netconstruyendo una aplicación para WP7, Iphone y Android

Soy un poco flojo, así que quiero poder reutilizar la mayor cantidad de código posible.

Digamos que quiero crear una aplicación que almacene información de contacto. p.ej. Nombre & Número de teléfono

Mi aplicación necesita poder recuperar datos de un servicio web y también almacenar datos localmente.

El patrón MVVM se ve como el camino a seguir, pero no soy seguro de mi acercamiento a continuación es 100% correcto

Es esto correcto?

  1. Un proyecto que contiene mis modelos
  2. Un proyecto que contiene mis puntos de vista, los métodos de almacenamiento local y también ver modelos que Ato mis vistas. En este caso no habría 3 proyectos diferentes en función de proyecto capa
  3. Un acceso a los datos del 3 de OS que se utilizaron para la unión a los servicios y almacenamiento de datos local

Cualquier sugerencia sería grande.

Gracias por su tiempo

+0

Intenta buscar SO, esto se ha preguntado un par de veces en el pasado reciente (demasiado vago para buscarlo yo mismo :)) – Praetorian

Respuesta

5

No responder específicamente a su pregunta, pero aquí hay algunos consejos perezosos ...

  • definitivamente se puede volver a utilizar una gran cantidad de código a través de las 3 plataformas (más MonoWebOS ?!)
  • reutilizar el código es bastante fácil, pero necesitará mantener archivos de proyecto separados para cada biblioteca en cada plataforma (esto puede ser una tarea rutinaria)
  • MVVM ciertamente funciona para WP7. No es tan bien atendidos en MonoTouch y MonoDroid
  • algunas de las áreas principales que tendrá que codificar por separado para cada dispositivo son:
    • abstracciones de interfaz de usuario - cada plataforma tiene su propia idea de "pestañas", " listas", "tostadas", etc
    • operaciones de red - las capacidades de System.Net son ligeramente diferentes en cada archivo
    • IO
    • capacidades multitarea
    • interacción dispositivo (por ejemplo, la ubicación, la realización de llamadas, etc.)
  • interfaz de abstracción y IoC (¿Ninject?) Podrían ayudar con todos estos
  • ¿Las mismas pruebas unitarias deberían poder ejecutar las 3 plataformas?

Actualización - No puedo creer que acabo encontré con mi propia respuesta ...:) Además de esta respuesta, es posible que desee ver en Monocross y MvvmCross - y sin duda un montón de otras plataformas híbridas en el camino:

1

Creo que la forma más fácil de escribir el código una vez y hacer que funcione en las tres plataformas probablemente sea una aplicación basada en la web. Consulte Untappd por ejemplo.

1

Puede comenzar observando el marco MonoTouch MVVM de Robert Kozak. Es solo un comienzo sin embargo.

MonoTouch MVVM

+0

Hay un proyecto GitHub que te permite use Visual Studio para codificar todo excepto la IU. https://github.com/follesoe/VSMonoTouch Además, tiene un muy buen tutorial sobre desarrollo multiplataforma móvil https://github.com/follesoe/FlightsNorway/tree/workshop –

2

Jonas Follesoe's cross platform development talk: tiene que ser el recurso más completo que hay en este momento. Habla sobre la mejor manera de compartir código y recursos, abstraer gran parte de las diferencias de UI y UX, muestra el uso reutilizable viable de MVVM en todas las plataformas y buenas técnicas para armar una compilación casi automatizada. (Sí, eso incluye una forma de compilar sus monotouch en Visual Studio)

Lo mejor de todo es que tiene un código fuente disponible para el producto terminado y para un número del componente principal colocado individualmente en su propio taller proyecto y un pdf de 50 páginas detallando los pasos para hacerlo. FlightsNorway on github

IMO lo único que falta es la mejor manera de manejar el almacenamiento local de datos en todas las plataformas. En ese caso, lo dirigiría al Vici Cool Storage, un ORM que puede funcionar con WP7, MonoTouch y (aunque oficialmente no es compatible) MonoDroid.

* Descargo de responsabilidad * La documentación del sitio no es la más actualizada, pero el código fuente está disponible. (Debido a que la documentación es Kriptonite para muchos programadores)

Cuestiones relacionadas