Je pense avoir une compréhension des attentes du développement des applications de consommation pour Windows 8. Créez une nouvelle interface utilisateur basée sur la métro au-dessus de WinRT, déployez-la à votre client via le marché et tout le monde gagne. Semble assez simple. Malheureusement, je ne suis pas dans cette affaire.
Je travaille sur des applications internes de la ligne d'entreprise pour une grande entreprise. Nous utilisons actuellement des technologies .NET telles que WPF et Silverlight afin de créer des UIS riches pouvant être facilement déployés sur nos utilisateurs via Web ou ClickOnce. Les applications peuvent prendre en charge WinXP et Win7 sans trop de mal de tête, et nos développeurs utilisent XAML, une technologie UI très solide.
Il semble que WPF et Silverlight ont des futurs discutables à ce stade, il est donc un peu inquiétant de continuer à investir dans ceux-ci. Mais une interface utilisateur métropolitaine ne semble pas appropriée pour les applications d'entreprise et l'API WinRT est assez limite en ce qui concerne les choses "typiques" que les applications d'entreprise doivent faire.
Comment devrais-je archiver mes applications basées sur XAML, actuellement déployées sur WinXP et Win7, de sorte qu'ils seront soulevés et évolutifs sur Win8?
Supposons aux fins de cette question que les fonctionnalités fournies par HTML5 au-dessus de ASP.NET ne sont pas adéquates pour les applications que je cherche à créer. Je comprends que je peux utiliser HTML5 pour certaines applications, mais j'essaie de comprendre ce que je devrais faire quand cela ne suffit pas.
Edit n ° 1 : Ceci est en réponse au commentaire de @emmad Kareem. Je conviens que Silverlight/WPF est viable à court terme (2-5 ans). Cependant, les applications que nous produisons ont potentiellement très longue durée de vie (10-20 + ans). Donc, la survivabilité à long terme pour une technologie donnée est une préoccupation pour nous. En outre, nous nous sommes inquiétants qu'il sera de plus en plus difficile de trouver des développeurs qui sont intéressés par le développement Silverlight/WPF si ces technologies sont considérées comme des "mortes" par la communauté. Je veux juste comprendre mes options et prendre une décision avec mes yeux ouverts.
Comment j'ai appris à arrêter de vous inquiéter et d'aimer la pile MS
Vous pouvez toujours exécuter applications VB6 sur Windows 8 . Compatibilité rétro pour bon ou mauvais a toujours été une tendance dans l'écosystème MS. Vous ne devriez pas vous inquiéter de la survie des technologies telles que WPF/Silveright, et même Winforms pour cette affaire.
D'autre part, vous devez accepter cela pour un projet à long terme, vous n'aurez jamais la technologie la plus dernière et la plus précaire.
En fait, les questions que vous devriez vous poser du choix d'une technologie sont les suivantes:
C'est la combinaison des réponses à ces questions qui devraient mener votre choix, et non les tendances qui forgèrent principalement pour des raisons de marketing.
Pour en savoir plus sur cette thématique de la technologie en constante évolution, vous devriez lire "Feu et mouvement" de Joel Spolsky :=:
Les entreprises qui trébuchent sont celles qui passent trop de temps à lire des feuilles de thé pour comprendre la direction future de Microsoft. Les gens s'inquiètent de .net et décident de réécrire toute leur architecture pour .NET parce qu'ils pensent qu'ils doivent. Microsoft vous tire dessus et il suffit de couvrir le feu de manière à ce qu'ils puissent avancer et vous ne pouvez pas, car c'est comme c'est ainsi que le jeu est joué, Bubby. Allez-vous soutenir Hailstorm? DU SAVON? RDF? Soutiens-tu parce que vos clients en ont besoin, ou parce que quelqu'un tire à vous et que vous avez envie de répondre? Les équipes de vente des grandes entreprises comprennent le feu de couverture.
Et cela a été écrit il y a près de dix ans.
Architecture et technologies
L'architecture et les technologies sont deux choses séparées et des choix à faire:
Vous pouvez utiliser des services, des ressources, des contrôles de tiers, des ormes, etc. avec toutes ces technologies, et peut-être, ou peut-être pas, avec les suivants.
Vous pouvez tordre et plier MVC de nombreuses façons avec toutes ces technologies: contraignant ou non? code derrière la vue ou pas? Contrôleur ou pas? ViewModel à chaque fois ou seulement si nécessaire? Il existe tellement de façons de mettre en œuvre un modèle de conception, même dans la portée d'une technologie spécifique.
Ce serait irréaliste de vous forcer dans l'un d'entre eux sans connaissance avancée de votre projet et de votre équipe. Il ne serait basé que sur des préférences personnelles et se retrouverait dans une "ma technologie vaut mieux que la vôtre" Showdown.
La seule chose qui puisse être suggérée honnêtement et objectivement, c'est utiliser les meilleures pratiques que vous pouvez postuler pour créer une architecture qui résistera à l'épreuve du temps, et peut-être, peut-être vraiment être portable ou réutilisée au moins dans des pièces avec une future technologie inconnue. . Et que la mise à niveau/la transférabilité ne devrait même pas être l'objectif principal de votre architecture.
Le but principal de votre architecture et de votre technologie choisie consiste à fournir un produit à votre patron/client qui répond à ses exigences réalistes.
Mvc (et c'est plus jeune frère MVVM) s'est avéré de plus en plus une base d'architecture robuste depuis 1979 dans le OOP Langues arène et au-delà. Mais choisir quelle technologie spécifique Devrait être utilisé dans un projet de 10 ans de 10 ans devrait rester votre décision.
Une chose que je vais aborder dans mon livre sur MVVM est la manière de tirer parti du modèle pour créer une application de base réutilisable. Vous devriez créer une interface utilisateur natale pour les différentes plateformes que vous ciblez (que ce soit Web, Silverlight, téléphone, WPF ou WinRT). Mais pour la plupart, vous pouvez encapsuler la logique conduisant à l'interface utilisateur derrière une vue de vue.
Tous les services que vous accédez doivent être enveloppés derrière une interface (motif de façade) plus ou moins portable entre les plates-formes. L'interface doit mapper sur votre API client à l'avant et traduire à l'API du service emballé sur le dos.
Cette stratégie vous aide à créer un cadre de base solide qui nécessite uniquement une nouvelle interface utilisateur de se mettre en couches. Pensez-y comme votre point de vue étant les muscles, vos services rendent le squelette (et les organes). WPF/Silverlight/WinRt forme la peau.
En fait, une chose que je souligne très tôt dans mon livre est que le MVVM n'est pas aussi nouveau que cela semble être. Dolphin Smalltalk avait un schéma similaire qu'ils appelaient MMVC (les deux m étaient des modèles d'application et du modèle de domaine). Le point de vue que nous utilisons aujourd'hui est simplement une combinaison du modèle d'application et du contrôleur de MMVC. En fait, de nombreux développeurs constatent que séparer parfois la vue de la vue dans ses deux composants est logique (le contrôleur étant utilisé pour la navigation et l'orchestre plusieurs VM de manière à ce que le VM peut rester parfaitement ignorant d'autres composants).
Mon principe est que vous ne devriez pas trop se concentrer sur les détails de votre implémentation de vos applications. Si vous regardez une image plus grande, vous pouvez isoler vos dépendances technologiques. En isolatin, la dépendance à par exemple. XAML/WPF/Silverlight Vous vous assurez que vous pouvez remplacer le composant/technologie UI avec une technologie de génération suivante et garantit donc la continuité même dans 20 ans. Cela aidera également à découpler les composants de vos systèmes et à l'impact d'avoir à effectuer un tel remplacement. (Dans ce cas, je suppose que pour fournir une continuité, il est correct de bricoler avec une solution pour l'obtenir sur une plate-forme de génération suivante)
Une autre façon de fournir une isolation à partir de ces dépendances technologiques permet de faciliter la virtualisation. Si vous créez vos applications de manière à ce que vous puissiez les exécuter dans une machine virtuelle, vous pourrez le faire dans 20 ans!
Vous dites que xaml est solide mais disent ensuite que WPF a un avenir discutable. Sauf si je manque quelque chose, WPF utilise XAML et je ne vois pas les deux jamais séparés. Y a-t-il des nouvelles sur WPF sur le WPF en utilisant une autre technologie de base, ou sur Microsoft, même éventuellement en tenant compte de la construction de bâtiments encore a ne autre nouvelle façon de construire des UIS? En dehors de cela, je doute que WPF va n'importe où, mais ce ne serait pas la première fois que la SP a obtenu des chargements de bateaux obsolètes de notre code ...
Si vous avez besoin d'une application UI riche et HTML5 ne le coupera pas et que vous êtes org, vous êtes engagé envers Windows OS, je pense que WPF est le meilleur choix que c'est le dernier/le plus grand en ce moment, certainement sur Winforms ...