Cette question est spécifiquement lié à une architecture recommandée, et les gens des expériences précédentes pour la croix-plate-forme de WP7, iOS, Android, les applications développées à l'aide de C#, Monotouch et Monodroid, respectivement. J'ai fait des recherches précédentes questions ici, ici et ici. Ils fournissent de bonnes réponses, mais pas tout à fait ce que je cherche. J'ai aussi trouvé cette excellente question qui ne vont dans le coût des prestations, donc il y a un certain chevauchement.
J'ai un besoin de développer une croix-plate-forme de l'iPhone/iPad, MT7 et application android pour la santé et de remise en forme de l'entreprise, qui va intégrer à leur site web. L'application nécessite une petite quantité de stockage de données locales pour le mode hors connexion et la synchronisation avec le site web lorsqu'un réseau est disponible. Je suis un Windows (C#/C++) développeur à travers et à travers et ne pas vraiment envie d'aller en bas de la route de trois Objective-C, Java et C# apps, bien que je le ferai si je dois le faire. Je vais aussi fonctionner comme tech plomb et de l'agriculture de certaines tâches à une équipe sur ce projet.
Je voudrais savoir si quelqu'un ici a de l'expérience, de la croix-plate-forme de développement à l'aide de Monotouch, Monodroid et WP7 et à partager leur expérience sur l'architecture de l'application de réutiliser autant de code que possible. L'architecture que j'envisage est comme suit:
Ma question est comme suit:
- A quelqu'un ici a essayé quelque chose comme ça?
- Sont ces cadres (Monotouch, monodroid) digne de ce nom pour ce genre de travail?
- Puis-je configurer l'ensemble du projet dans Visual Studio 2010 avec des projets distincts (dll/exe) pour le Monotouch, Monodroid et Wp7 cible (mais le code partagé en utilisant "Ajouter en tant que Lien")?
- Quelle sorte de réutiliser le code puis-je raisonnablement s'attendre à ce (ou similaire) de l'architecture? c'est à dire quelles stratégies / modèles puis-je utiliser pour re-utiliser les locaux d'accès aux données, webservices, et la logique métier?
Meilleures salutations,
Réponses
Trop de publicités?Vous voudrez peut-être regarder dans le MonoCross projet qui est conçu pour vous aider à la réutilisation de code C# avec de multiples couches de présentation:
http://code.google.com/p/monocross/
Les auteurs de MonoCross ITR (Mobilité) ont créé de multiples mobiles de la croix-plate-forme des solutions pour une variété de clients et a écrit deux livres sur le sujet que l'on est "iPad dans l'Entreprise" (http://amzn.to/zAhQK6) et le prochain "de la Croix-Plate-forme de Développement Mobile avec C#" (http://amzn.to/wM6RsF).
En attendant, vous pouvez regarder Scott Olson présentation qu'il avait fait à Monospace 2011 qui décrit l'utilisation de MonoCross à cibles multiples, mobiles et plates-formes de bureau à la fois de réutiliser la logique d'entreprise:
http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise
Ils respecter une stricte MVC split dans leur code:
Le plus grand avantage de la conception d'une application avec ce modèle est que vous pouvez exécuter la même application native pour les interfaces utilisateur sur chaque plate-forme. Vous obtenez natif iOS, Android, Windows INTERFACE utilisateur et ils ont même un ASP.NET front-end qui vous permet de publier des versions Web de la même logique d'entreprise.
Cette technologie a été utilisée avec succès par Medtronic exemple d'application qui est présenté par Apple de l'iPad d'affaires:
http://www.apple.com/ipad/business/profiles/medtronic/
Je vous suggère également de vérifier Scott blog où il poste régulièrement sur son expérience avec la croix-plate-forme de l'architecture.
En fonction de vos commentaires de vos besoins pour une croix-plate-forme mobile qui va intégrer à leurs services existants, mais aussi le travail en mode hors connexion. Vous êtes particulièrement intéressé en C# via Mono, cependant, vous avez indiqué que vous n'êtes pas l'actualisation d'autres approches.
J'ai l'impression que HTML / PhoneGap / JavaScript est un itinéraire que vous devriez examiner en détail. Le WP7 version de ce cadre vient d'être publié, et j'ai de l'expérience de la publication d'une application sur le marché à l'aide de cette approche.
PhoneGap enveloppe votre code HTML / JavaScript code, dans le cas de WP7 c'est chargé dans le local de stockage. Cela permet à l'application de travailler en mode hors connexion. Cela est vrai pour toutes les versions (iOS, Android, etc...)
Probablement le plus gros problème avec PhoneGap / HTML5 est la même question que nous avons lors de l'élaboration complexe des applications sur le web pour le navigateur. L'outillage pour le JavaScript n'est pas grande et le navigateur différences sont un problème constant. Cependant, il est une solution éprouvée.
Enfin, il est possible de créer une INTERFACE utilisateur de l'application qui est tout à fait différent pour chaque plate-forme. En utilisant le pattern MVVM, j'ai réussi à partager l'ensemble de mes JavaScript logique d'entreprise entre WP7 et iOS applications tout en ayant un totalement différent de l'INTERFACE utilisateur:
Comparez cela à la WP7 écrans:
REMARQUE: j'ai l'intention d'avoir la version iOS de recherche de la Propriété dans l'AppStore peu de temps, j'ai juste besoin de travailler sur la façon d'utiliser PhoneGap Build!
Juste en ajoutant une autre alternative pour le mix - mvvmcross
Ce projet a été développé à partir des expériences avec monocross, mvvmlight, et opennetcf.
C'est assez d'une opiniâtre mvvm cadre (à mon avis!!!), il comprend des données-prise en charge de liaison pour le Droid et le Toucher, et il n'a vraiment encourager la réutilisation du code entre les plates-formes.
La source est disponible à partir de https://github.com/slodge/MvvmCross, il a été utilisé dans au moins un couple de grands projets déjà et il est encore en développement actif.
Il y a un cours d'introduction à la présentation sur slideshare: http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding
L'un des plus complet des échantillons est une conférence de l'app:
La question est très difficile de répondre, mais je voudrais faire part de quelques réflexions.
La situation avec le développement mobile est très similaire à l'élaboration, à la première moitié des années 90. Téléphone ont des ressources limitées des ordinateurs avaient, Os mobiles font leurs premiers pas d'un bébé, d'où l'écosystème est relativement faible. Ils ont une philosophie, des outils et même des langues. Et c'est une bonne chose, mais conduit à un casse-tête pour la croix-plate-forme de développement. En conséquence, il y a beaucoup de tentatives pour effacer un peu. Les gens construisent des cadres, emballages etc. qui est une sorte d'abstraction et d' abstractions sont fuit. Cela est extrêmement important pour les appareils mobiles, non seulement le rendement en nombre de cycles CPU, mais aussi les performances de la batterie, qui est beaucoup plus important pour l'utilisateur.
Si j'étais vous, je voudrais construire des applications dans un environnement natif en particulier si vous avez quelques considérations sur les performances. Meilleur soutien, des outils, des ressources pédagogiques, etc. paie le double de la logique métier. Dans l'ensemble, ce n'est pas un OS ou Système de Gestion de Base de données, base de code ne sera pas énorme ;)
Cela étant dit. Concernant Monotouch et Monodroid, je serais très prudent car Apple bloque l'iPhone OS applications créées par de nombreux tiers des compilateurs et Le Roi ne s'inquiètent pas vraiment de développeurs. Le cas mono sera affichée à l'peiné par la contrefaçon de brevet ou de propriété des fournisseurs de logiciels est très probable. C'est triste pour moi, cause C# est ma langue préférée.
PS. Je ne crois pas que HTML5 pour mobile prendra plus de temps.