J'ai besoin d'aide pour décider entre silverlight / silverlight out-of-browser / wpf

10

Je suis dans la phase de planification initiale d'un projet de réécriture et je décide entre silverlight / silverlight oob / wpf. TL; DR à la fin.

C'est une application LOB qui gère les calendriers des prospects / clients / rendez-vous. Pas trop compliqué. Je recherche indépendamment ces options ailleurs, mais je pensais que je demanderais autour. Certaines exigences initiales approximatives / problèmes prévisibles sont:

Je dois pouvoir appeler un exe sur le système avec des arguments de ligne de commande (téléphone SIP).

Rend SL un problème

La base d'utilisateurs est distribuée et je souhaite limiter le plus possible le trafic sur le câble et éviter certains problèmes de concurrence désagréables

Je peux voir que c'est un problème en utilisant WPF

Le déploiement / la mise à jour du logiciel doit être extrêmement simple . Certains utilisateurs sont très non techniques (voir: 70 ans, sur un ordinateur pour la première fois)

Ce n'est pas un gros problème maintenant avec l'application ClickOnce que nous remplaçons, et j'ai le contrôle sur les machines sur lesquelles elle est utilisée. Cependant, c'est plus simple pour les utilisateurs s'ils n'ont même pas besoin de cliquer sur le bouton "Installer". Je ne sais pas comment cela est géré avec Silverlight OOB.

La société prévoit une forte expansion dans 12 mois, le déploiement du matériel devrait donc être rapide / facile. L'idée est d'obtenir une connexion Internet à un nouvel emplacement, de brancher certains ordinateurs et de pouvoir travailler sans avoir besoin de personnel informatique dédié ou de configuration de serveur.

Rend SL attrayant

L'intégration avec d'autres services (logiciels financiers, serveur Astérix) n'est pas un objectif immédiat, mais c'est un objectif éventuel de faire partie du système. Cela est rendu beaucoup plus simple / plus efficace si un seul service est configuré pour s'intégrer à ces services secondaires et n'a pas à transférer toutes ces données sur le câble

Rend SL attrayant

Faire plusieurs «versions» est par la fenêtre. Je ne sais pas ce que c'est que de maintenir une version oob silverlight + silverlight (s'il y a même des problèmes)

Pourrait faire de WPF une meilleure option.

TL; DR: De mon point de vue, une application Silverlight a le meilleur sens pour 90% des utilisateurs - les 10% restants ne peuvent pas l'utiliser car ils doivent exécuter un exe. Silverlight OOB pourrait être un juste milieu, mais je ne sais pas pour l'instant à quoi ressemble le modèle d'exécution (y a-t-il encore un concept de code côté serveur? Si oui, ce serait peut-être idéal) et je ne sais pas savoir comment le déploiement / la mise à jour fonctionne pour lui.

Steven Evers
la source
Pourquoi voulez-vous remplacer l'application ClickOnce en premier lieu? ClickOnce a une option pour rechercher et télécharger automatiquement une mise à jour disponible au démarrage de l'application. Je l'ai fait voir replayer.codeplex.com
Marcel

Réponses:

6

Eh bien - problème intéressant. Vous avez oublié de mentionner que vous pouvez avoir une application de confiance totale Silverlight à partir de SL4, donc si vous pensez à WPF, vous voudrez peut-être envisager cela à la place. Il faudrait installer (ClickOnce), mais vous semblez vous éloigner de cela.

Je n'ai encore rien fait avec OOB, mais je suis à peu près sûr que le même binaire peut être utilisé à la fois dans broswer et hors navigateur car c'est un paramètre de projet plutôt qu'une cible de build distincte.

"Activer l'exécution de l'application hors du navigateur"

sous l'onglet Silverlight du projet Silverlight.

Il n'y aurait donc pas de problème de maintenance séparé.

Vous pouvez créer une bonne quantité de code dans l'application Web qui héberge l'application Silverlight et communiquer à l'aide des services WCF RIA - encore une fois, vous devrez utiliser .NET 4 et SL 4 pour obtenir la version 1.0 de cela. .NET 3.5 et SL 4 ne prennent en charge que la version bêta des services WCF RIA. Cela réduirait a) la taille du téléchargement et b) la quantité de code à exécuter sur le client, mais augmenterait le trafic réseau.

Sur ce point, vous pouvez diviser votre code Silverlight en plusieurs assemblages et utiliser quelque chose comme Prism pour les charger à la demande. Cela signifie que l'utilisateur télécharge uniquement les parties de l'application qu'il utilise réellement. Vous pouvez réduire davantage le montant téléchargé en consultant la

"Réduisez la taille XAP en utilisant la mise en cache de la bibliothèque d'applications"

option.

Si vous avez un fichier "extmap" pour aller avec des DLL externes (tierces ou .NET), cela signifie qu'elles sont regroupées dans un fichier zip et téléchargées séparément pour être partagées entre tous les fichiers xap de votre projet. Cela maintient les fichiers xap individuels à leur taille minimale et garantit que vous n'avez qu'une seule copie de ces autres DLL sur la machine cliente.

ChrisF
la source
1
+1: Merci pour votre contribution @ChrisF. J'aimerais juste te connaître IRL pour pouvoir choisir ton cerveau.
Steven Evers
2

Votre analyse est très bonne.

La seule autre chose que je mentionnerais est que TOUT le cadre n'est pas disponible pour vous dans une application Silverlight. Cette restriction PEUT faire basculer votre choix vers WPF, mais vous devrez voir comment cette restriction s'applique ou non aux besoins de votre application.

Walter
la source
L'application est principalement une application crud, à l'exception de la nécessité d'appeler un téléphone SIP via son exe + args, donc je ne pense pas que je manquerai aucune des parties manquantes du cadre.
Steven Evers
2

Juste quelques petites choses:

Déploiement et «code côté serveur»: une application Silverlight est une application côté client, simple et simple. Ne laissez pas le simple fait qu'il est fourni via le navigateur vous dérouter - lorsque vous exécutez une application SL dans le navigateur, vous téléchargez les assemblys de cette application dans un package zippé, les extrayez et les exécutez à l'aide du plug-in. Silverlight en lui-même n'a aucune notion de "code côté serveur" - si vous voulez que le code s'exécute sur un serveur distant, écrivez un service WCF.

Mise à jour de l'application: il s'agit d'un scénario courant pour les applications OOB et SL a une prise en charge intégrée. Google autour de CheckAndDownloadUpdateAsync.

Modifier: J'ai oublié de mentionner - l'installation de l'application se fait à partir de l'application. Par défaut, une application SL installable aura une action de menu contextuel pour l'installer. Cependant, l'installation peut également être effectuée par programme en réponse au clic de l'utilisateur sur un bouton. L'état d'installation peut également être détecté par programme, donc ce que j'ai vu certaines applications SL qui sont uniquement destinées à exécuter OOB, c'est d'abord détecter si elles sont installées. Si c'est le cas, exécutez l'application. Sinon, affichez simplement un écran de démarrage avec un bouton qui installe l'application.

nlawalker
la source