Silverlight, Wpf Web App (xbap) ou Cliquez une fois? Avantages et inconvénients

Nous commençons un nouveau projet et j’essaie de décider laquelle des stratégies de développement / déploiement Wpf-esque nous allons suivre. Dans notre cas, nous examinons une application métier assez complexe qui sera utilisée par des centaines de personnes (et non par des milliers). Je me penche donc vers une application à clic. Mon patron aime l’idée d’une application Silverlight car cela signifie un déploiement plus facile. Alors, de quelle manière devrions-nous sauter?

La réponse est bien sûr “ça dépend”. Alors, quels sont les avantages et les inconvénients de chacun?

Je vais commencer la discussion ( Edit Ajouté dans certaines réponses de artur carvalho ):


Silverlight

  • Avantages

Navigateur croisé
Ne nécessite pas de cadre complet.
Meilleur contrôle des utilisateurs. Si vos utilisateurs se connectent, vous n’avez pas à vous soucier des clés d’activation ou de choses similaires.
Cela fonctionne sur Windows et Mac.
Vous pouvez facilement mettre à jour toutes les applications de vos utilisateurs.

  • Les inconvénients

Impossible d’interagir avec le système de fichiers du client, etc.
A moins de fonctionnalités que Full Wpf (quelqu’un a une bonne ressource qui documente les différences?)
Fenêtre unique
Version unique


Wpf Web App (xbap)

  • Avantages

Full Wpf.

  • Les inconvénients

Navigateur unique
Nécessite un cadre complet
Impossible d’interagir avec le système de fichiers du client, etc.
Fenêtre unique
Version unique


Wpf Cliquez une fois

  • Avantages

Wpf complet
Peut travailler hors ligne
Fenêtres multiples
Plusieurs versions (con?)
Meilleur access aux pièces de bas niveau de l’ordinateur
Pas de temps d’arrêt pour la maintenance

  • Les inconvénients

Navigateur unique
Nécessite un cadre complet
Légèrement (?) Plus difficile à installer.

Premièrement, j’évaluerais si un client Web (idéalement MVC + jQuery) ne peut pas faire le travail …

En supposant qu’un client complet est garanti:

Si c’est une application professionnelle qui demande un client, j’aurais tendance à utiliser le cadre complet et ClickOnce; La principale différence ici (concernant le déploiement) réside dans le fait que le client doit disposer de la structure, mais le déploiement de ClickOnce est très simple. En fait, créer un manifeste ClickOnce est beaucoup plus facile que Silverlight, etc., car l’EDI le fera presque entièrement pour vous. il vous suffit d’héberger les fichiers quelque part (par exemple, une URL Web ou un réseau UNC).

Cela vous donne beaucoup plus de contrôle (et de puissance) sur le client, ainsi qu’une gamme beaucoup plus étendue de ressources existantes à utiliser (par exemple, si vous en avez besoin, vous pouvez utiliser un code Winform hérité sur la surface WPF). “Nécessite un cadre complet” est également l’un des avantages les plus importants: “dispose d’un cadre complet”.

Vous devriez peut-être aussi envisager l’installation du “profil client” 3.5; Je ne sais pas à quel point c’est répandu dans la réalité … mais ça vaut le coup de savoir.

Vous n’avez pas précisé s’il s’agissait d’une application destinée uniquement à une entreprise ou à une application publique. Ce seul décidera pour vous.

Si seulement la compagnie, j’irais avec le plein clic de WPF une fois. Cela vous donnera tout. Le cadre complet ne devrait pas être un problème. Il s’agit d’une installation unique exécutée en arrière-plan; votre décision ne devrait donc pas en dépendre. Inconvénients: il ne fonctionne que sous Windows, mais si votre entreprise est exclusivement Windows, cela ne devrait pas poser de problème.

Cependant, les applications WPF peuvent avoir besoin de beaucoup de ressources. Vous devez donc savoir si tous vos ordinateurs clients sont capables d’exécuter les applications WPF de manière fluide.

Si c’est une application Internet, optez pour Silverlight: elle fonctionne sous différents systèmes d’exploitation.

PROs vs. ASP.NET Web Forms

  1. Pas de ViewState ou “merde surprise” o Ceci s’applique également à Silverlight. Silverlight apporte l’expérience de “bureau” à l’utilisateur final et il n’y a pas ViewState utilisé dans Silverlight.
  2. Plus rapide côté serveur et côté client o Silverlight est plus rapide côté client / serveur, selon votre apparence. Silverlight est compilé dans un sous-système .NET de Silverlight. Vous avez access au multithreading, à LINQ, à des structures de données complexes, etc. La performance par rapport à une application ASP.NET ou AJAX / JavaScript est plus grande en raison de l’exécution du client et de certains des éléments normalement gérés dans une BLL de serveur. peut être amené au client
  3. Modèle simplifié pour plusieurs vues associées o Silverlight prend en charge la séparation complète des données et de l’interface utilisateur. Aller plus loin en créant simplement des vues séparées pour un autre consommateur de Silverlight est assez puissant. Vous pouvez appliquer le même modèle MVC / MVP dans Silverlight et atteindre ce niveau d’abstraction. Jason mentionne un exemple de possibilité de créer une vue séparée pour un iPhone et seul le composant Afficher doit être modifié. Cela s’applique également à Silverlight pour différentes choses. Par exemple, j’ai une application Silverlight de grande taille que je souhaite transférer sur SharePoint. Je peux créer une “vue plus petite” pour SharePoint afin qu’elle soit mieux adaptée à l’interface utilisateur. De plus, Silverlight Mobile est en cours de test privé. Je suppose que le même niveau d’abstraction très puissant s’applique également à la création d’une “vue mobile” pour votre application Silverlight.
  4. Testable par unité o Silverlight comprend également une structure de test unitaire. Il peut être téléchargé ici: http://code.msdn.microsoft.com/silverlightut/
  5. Défis si vous n’exécutez pas IIS 7 o Silverlight ne s’inquiète PAS de savoir si vous n’exécutez pas IIS 6, IIS 7 ou Apache. Il s’agit d’une fonctionnalité pour laquelle Silverlight présente un avantage par rapport à ASP.NET MVC.
  6. Mise en cache client o Dans ASP.NET Web Forms ou MVC, vous mettez en cache sur le serveur. Silverlight vous permet de mettre en cache le client via un stockage isolé (pouvant être augmenté à plusieurs centaines de mégas si nécessaire). Cela permet aux applications de fonctionner très rapidement sans écraser le serveur d’hébergement.

CONs vs. ASP.NET Web Forms

  1. Difficulté à convertir le code existant o Silverlight est une plate-forme de programmation complètement différente de ASP.NET WebForms ou de MVC. Non seulement une grande partie du code ne sera pas converti, vous devez également penser à la couche client et, dans la plupart des cas, une refonte complète de l’architecture est nécessaire si vous remplacez des modules volumineux au sein de votre site ASP.NET existant.
  2. Ce n’est pas le meilleur référencement naturel o Google a commencé il y a plusieurs mois à spider les fichiers SWF et à les append au moteur de recherche. Je pense que Silverlight est probablement encore loin d’ici. Ce que vous pouvez faire pour Silverlight SEO, ce sont les astuces de base pour décrire les balises de métadonnées vraiment bien autour du plug-in.
  3. Accès aux données o Dans Silverlight, l’access aux données est limité aux services de données Web Services / WCF / ADO.NET. Vous ne pouvez pas effectuer d’appels directs via ADO.NET ou des procédures stockées vers une firebase database.
  4. Sécurité o Silverlight fonctionne sur le client. Beaucoup de vos bits sont alors errants à l’état sauvage sur Internet. De plus, certaines techniques d’access aux données ne prennent pas en charge la sécurité standard standard WS *. Par conséquent, au-delà de la sécurité de transport basée sur un certificate, vous écrivez beaucoup de votre propre code de plomberie ou vous attendez la prochaine révision. Le code XAML est assez peu sûr. peu d’applications ont leur propriété intellectuelle dans leur interface utilisateur. Dans Silverlight, cela peut très facilement être inversé en utilisant Silverlight Spy, par exemple. Silverlight, par nature, est un peu moins sécurisé qu’une application ASP.NET MVC. Évidemment, vous voudriez crypter / obscurcir vos assemblages Silverlight avant de les laisser tomber à l’état sauvage.

1. Silverlight peut accéder au DOM à partir de la page d’hébergement et
2. la page d’hébergement peut accéder à la partie Silverlight.
C’est un gros + pour Silverlight

Mais toutes les autres limitations appellent WPF / Windows-Forms avec Clickonce
access au fichier, clic droit de la souris, facilité d’access à la firebase database

Les pros

  1. Le plug-in Silverlight signifie que les développeurs peuvent cibler un seul runtime cohérent pour les applications basées sur un navigateur, plutôt que de gérer la complexité de plusieurs navigateurs dans différentes versions. Vous obtenez également des effets vidéo et multimédia difficiles ou impossibles avec HTML et JavaScript purs, bien que Flash Systems d’Adobe offre les mêmes avantages.
  2. Exécutez le code .NET sans déployer le runtime .NET. Le plug-in Silverlight inclut une exécution .NET réduite, mais au lieu de gérer un téléchargement volumineux et la complexité du programme d’installation de Windows, l’utilisateur dispose d’un petit téléchargement d’environ 4 Mo, le tout géré dans le navigateur. D’après mon expérience jusqu’ici, l’installation est simple et facile.
  3. La performance est prometteuse. Silverlight apparaît bien dans cette calculasortingce de nombres premiers, sans doute grâce à la compilation JIT en code natif, même si elle peut ne pas être aussi performante en rendu graphique.
  4. La prise en charge de Moonlight signifie qu’il y aura une implémentation open source officielle de Silverlight, atténuant ainsi l’aspect propriétaire.
  5. Silverlight interprète directement le format XAML, tandis que le langage MXML de Adobe, XML, est converti en SWF au moment de la compilation. En fait, les pages XAML sont incluses en tant que ressources dans le binary .XAP compilé utilisé pour déployer des applications Silverlight. Un fichier .XAP est juste un ZIP avec une extension différente. Cela signifie également que les moteurs de recherche peuvent potentiellement indexer du texte dans une application Silverlight, comme ils le peuvent avec Flash.
  6. Les fournisseurs de composants tiers utilisent déjà bien les add-ons Silverlight. Par exemple, Infragistics, ComponentOne et DevExpress.
  7. Prenez votre code .NET multiplate-forme. Avec la multiplication des Mac, la possibilité de migrer du code Visual Basic ou C # vers un client Silverlight multiplate-forme basé sur un navigateur sera de plus en plus utile. Il est clair que cela ne concerne que les développeurs .NET existants – je suppose que c’est le marché principal de Silverlight, mais il s’agit d’un marché important. La même chose s’applique au point suivant:
  8. Utilise Visual Studio. IDE de Microsoft est un environnement de développement mature et apprécié, et comme il est également l’outil pour ASP.NET, vous pouvez l’utiliser pour le code côté serveur, ainsi que pour le client Silverlight. Pour ceux qui ne maîsortingsent pas Visual Studio, le SDK Silverlight prend également en charge la compilation par ligne de commande.
  9. Choisissez votre langue. La prise en charge de plusieurs langues fait partie de .NET depuis ses débuts et le fait d’avoir le runtime .NET dans Silverlight 2.0 signifie que vous pouvez coder votre logique côté client en C #, Visual Basic ou grâce au DLR (Dynamic Language Runtime) ou Iron Python.
  10. Le stockage isolé permet aux applications Silverlight d’accéder aux fichiers locaux, mais uniquement dans un emplacement protégé spécifique à l’application, offrant ainsi un moyen relativement sécurisé d’obtenir cet avantage.

Les inconvénients

  1. Si Apple n’autorise même pas Flash sur l’iPhone, quelles sont les chances pour Silverlight?
  2. Silverlight est en retard pour le match. Flash est mature, bien fait confiance et omniprésent. Silverlight 2 ne sort de la version bêta qu’en automne (nous l’espérons). C’est la version qui nous tient à cœur – celle qui inclut le runtime .NET – et qui n’a toujours pas été prise en charge sur les appareils mobiles, même Windows Mobile, bien que cela soit promis à une date ultérieure non spécifiée.
  3. Les outils de conception sont Expression Blend et Expression Design – mais qui les utilise? Le monde du design utilise Adobe PhotoShop.
  4. Bien que la compatibilité de la solution entre Expression Blend et Visual Studio semble bonne, il est en réalité fastidieux de devoir utiliser deux outils distincts, en particulier en cas d’incompatibilités insignifiantes, comme dans la version bêta actuelle.
  5. Pas de support pour le populaire codec vidéo H.264. Au lieu de cela, la vidéo haute définition pour Silverlight doit être dans VC-1, ce qui est moins courant.
  6. Il s’agit d’un autre effort visant à promouvoir une technologie brevetée plutôt que des normes ouvertes.
  7. Oui, Linux sera supporté via Moonlight, mais quand? Il semble probable que l’implémentation Linux sera toujours à la traîne par rapport aux versions Windows et Mac.
  8. Silverlight prend en charge les services Web SOAP ou REST à condition de ne pas utiliser PUT ou DELETE, mais ne dispose pas d’un protocole binary optimisé comme le format AMF (ActionScript Message Format) d’Adobe, ce qui entraîne probablement des performances plus lentes dans certains scénarios.
  9. Silverlight est une solution accessible uniquement par navigateur, alors que Flash peut être déployé pour le bureau à l’aide d’Adobe Integrated Runtime (AIR). Cela dit, oui, j’ai vu cela.
  10. Vous devez développer sur Windows. Ceci est particulièrement problématique pour les outils de conception d’Expression, car les concepteurs disposent d’un nombre disproportionné de Mac.

Vous pouvez append aux avantages et aux inconvénients des éléments habituels du débat en ligne et hors ligne. Quelques articles:

Avantages

wpf (hors ligne):

  • meilleur access aux parties basses de l’ordinateur.
  • L’utilisation du processeur est locale, vous avez donc rarement des problèmes de charge du processeur.
  • ne dépend pas du net.
  • pas de temps d’arrêt pour la maintenance.

silverlight (en ligne):

  • Meilleur contrôle des utilisateurs. Si vos utilisateurs se connectent, vous n’avez pas à vous soucier des clés d’activation ou de choses similaires.
  • Cela fonctionne sur Windows et Mac.
  • Vous pouvez facilement mettre à jour toutes les applications de vos utilisateurs.

Je simplifie un peu, il y a des zones grises dans la liste. J’ai seulement bricolé avec XBAP, de sorte que je vais laisser tomber. Les inconvénients ne sont pas difficiles à comprendre après avoir regardé aux pros.

HTH

Je considérerais WPF ClickOnce avec le support du sync framework ( http://www.msdn.com/sync ). Cela vous permettrait de prendre en charge des fonctionnalités limitées lorsque l’utilisateur n’est pas connecté au réseau de l’entreprise (ce qui éliminera tout scénario de déploiement basé sur un navigateur, tel que Silverlight et XBAP).

Si vous n’avez pas besoin de tous les WPF, essayez d’abord de le faire dans Silvelight. Vous pourrez ensuite basculer plus facilement vers WPF si vous en avez besoin ultérieurement.

Ici, je pense que cela applique le principe «less is more»: il est vrai qu’avec WPF, vous avez beaucoup plus d’options et pouvez accéder à l’ordinateur de l’utilisateur, mais cela peut finalement être plus un problème qu’une aide, selon les temps. Pensez par exemple au nombre de modifications que vous pouvez avoir besoin de passer de Windows XP à Vista dans une application qui utilise beaucoup de ressources de «l’ordinateur de l’utilisateur»!

Mark, que voulez-vous dire par «navigateur unique» pour XBAP? XBAP fonctionne avec Firefox par exemple. Cela nécessite en effet .NET Framework et il est peu probable que nous ayons bientôt WPF dans Mono n’importe où (si jamais), vous êtes donc coincé avec Windows, c’est vrai.

N’est-ce pas cliquer une fois sur firefox ces jours-ci, via cet addon: https://addons.mozilla.org/en-US/firefox/addon/1608