92 votes

Les arguments pour ou contre .NET (la bête)

Je suis une .NET développeur, et je n'ai pas de pellicules. L'entreprise pour laquelle je travaille utilise C++ Builder 6. Nous avons été en développement en code natif depuis la conception. Notre produit phare est entièrement écrite en code natif.

Entre dans le .NET Framework avec de belles cloches, sifflets, moelleux, les lapins et les cudly chatons. Je tombe, crochet, ligne et plomb. Je convaincre la direction que .NET doit absolument être notre nouveau cadre pour tous les nouveaux logiciels de développement et que nous devrions commencer la migration de nos codeline ASAP. Avec tous les avantages qu'il ne prend pas beaucoup de convaincant. Ils acceptent ma proposition, comme d'habitude.

À ce stade, je commence à développer mon tout premier .NET application. C'est tout ce passe comme prévu. Le projet n'est qu'une composante de notre produit. Et si je reçois au point de créer un programme d'installation de cette nouvelle composante. En tant que société, nous sommes fiers de rendre les choses pour l'utilisateur facile que possible. Même Microsoft avec des milliers de développeurs de ne pas créer des installateurs comme nous le faisons. Lorsque vous installez Microsoft CRM par exemple, vous obtenez seulement une liste d'échecs et de conditions préalables qui ont des besoins de l'installation avant de pouvoir continuer. Pas nous. Jamais. Si vous besoin de quelque chose, nous allons l'installer pour vous. Imaginez que.

Nous, le lancement de l'EXE, pour vous...

Cela rend nos installations se sentir tellement facile. .NET Framework n'est pas installé? Pas de problème! Nous le ferons pour vous. Besoin de SQL Native client? Très bien!

La question est, maintenant que d'une seule composante de notre solution est écrit .NET, cela complique le processus d'installation incroyablement. Avant que je puisse même d'arriver à l'installation de notre produit, j'ai besoin de faire ce qui suit:

  • Détecter si la condition préalable est installé

  • L'installer si ce n'est pas

  • Vérifiez qu'il a été installé avec succès

  • Prochaine préalable

Pour installer .NET Framework, j'ai besoin de Windows Installer 4.5 première. Mais il y a des versions différentes pour les différents Systèmes d'exploitation, j'ai donc ajouter détection de système d'exploitation et de lancer le bon EXE. Oh, .NET framework est déjà emballé avec 2k8 et le programme d'installation exe ne peut pas s'exécuter sur elle, vous avez à courir OCSetup.exe avec les paramètres de l'installer. Soupir.

Et donc, qu'elle exploite. SQL Express 2005 doit être installé. Les dépendances augmenter une fois de plus.

Je soutiens avec la direction que même Microsoft ne le faites pas cette facile pour l'utilisateur. Leur réponse est qu'il n'y a aucune raison pour nous de ne pas être meilleur qu'eux de cette façon. Je ne peux pas argumenter avec ça, sauf que je sens qu'il y a de très bonnes raisons, ils sont allés avec leur approche.

Soudain, notre programme d'installation est massif. Toutes les conditions préalables pour .NET, ne parlons même pas de support 64 bits qui dispose d'un ensemble séparé de la gamme de Exe à installer. Alors maintenant, il en arrive au point où nous voulons que les utilisateurs soient en mesure de télécharger un "rapide" de l'évaluation. Quelle blague. Vous devez télécharger 500MO pour obtenir un 30MB application en cours d'exécution. Le majoritiy le package d'installation est un prérequis.

La direction estime que nous avons trop de dépendances/conditions préalables. Je comprends tout à fait. Ils suggèrent que nous nous éloignons de la .NET framework, de retour en terre natale où les choses étaient toujours "facile" en termes d'installation. C'est là une partie de moi veut se lever pour .NET en expliquant les avantages dans l'ensemble, l'amélioration de l'expérience du développement, de la facilité de l'entretien et de l'ensemble de la qualité du code. L'autre partie de moi est d'accord avec eux de tout cœur! Le développement de .NET tout simplement vous oblige à installer un trop grand nombre de conditions préalables qui complique l'installation.

Oui, certains de la .NET défenseurs affirment que tout devrait être installé sur une version modifiée et mise à jour du système d'exploitation. C'est vrai, mais pas tous les clients, et dire tout simplement "je suis désolé, d'abord mettre à jour", ne suffit pas. Rappelez-vous, nous sommes fiers de nous-mêmes dans l'expérience globale de l'utilisateur.

Nous envisageons maintenant écrit en code natif de nouveau et je sais que nous sommes en train de perdre en termes de rapidité de développement et tous les goodies de .NET. Mais nous sommes de plus en ce domaine, être petit si vous regardez l'image ou pas. Comme nous l'avons code natif de développement des compétences et de l' .NET est en fait un terrain nouveau pour nous, il fait même sens pour revenir.

Ma question, finalement, est-ce, qu'est-ce que votre compagnie est d'avis sur cette question, même s'il est un problème et ce sera le cas pour l'entreprise ressembler que je propose à la gestion en supposant que je veux continuer la migration de l'ensemble de nos produits .NET?

50voto

jgauffin Points 51913

C’est la raison pour laquelle de nombreuses entreprises ont opté pour des programmes d’installation Web téléchargeant tous les logiciels requis à la volée depuis votre page d’accueil. Comme dans la plupart des cas, le système d'exploitation dispose de 99% des besoins (s'ils ont été mis à jour à l'aide de Windows Update).

Je ne mettrais pas tout pour x64 et x32 dans le même programme d'installation. Créez deux installateurs, un pour chaque architecture.

39voto

Adam Houldsworth Points 38632

Paint.NET enveloppements de l'installation des prérequis joliment sans regroupement le .NET framework avec elle par défaut. Le résultat final est un shim non géré exécutable qui vérifie l' .NET framework et quelques autres trucs et tient la main comme il est installé; toutes téléchargées à la volée lorsqu'ils sont nécessaires. Ils ont ensuite exécuter une application WinForms que pInvokes en MSI pour plus d'envelopper l'installation en coton-laine.

La peine de Google.

Aussi probable est le fait que beaucoup de machines client aura déjà une certaine version de l' .NET Framework est installé comme il fait partie de la mise à Jour de Microsoft - le rendant plus facilement consommable dans le monde des affaires.

Paint.NET les messages de blog à propos de l'installation:

http://blog.getpaint.net/2008/08/24/the-paintnet-install-experience-part-1-version-3xx/

http://blog.getpaint.net/2008/08/25/the-paintnet-install-experience-part-2-version-40/ (merci Rup!)

À lire dans l'histoire un peu plus, sans doute la direction a dû passer par la douleur de déploiement avec le C++ de l'application au moins une fois, mais c'est maintenant fait et classées comme "facile". Mettre un certain temps contre le déploiement et de le présenter à la direction et, en cachant la douleur, de leur montrer comment il est facile à installer :)

37voto

Mark Rushakoff Points 97350

Revenons à pourquoi vous avez voulu changer de code natif .NET code en premier lieu: il est plus efficace pour vous, en tant que programmeur. Beaucoup de choses sont plus faciles .NET qu'elles ne le sont en C++ (ou autre langue maternelle que vous utilisez), et de sorte que vous pouvez développer vos applications beaucoup plus rapidement.

Alors, comment est le temps que vous passez à l'élaboration de la demande de comparer le temps que vous passez le développement de l'installateur? Même si vous avez à dépenser quelques semaines clouer le programme d'installation (en particulier le cadre d'installation de partie), qui devrait être plus ou moins le seul temps que vous avez à passer par là.

Pour toutes les futures applications, vous serez en utilisant à peu près la même installateur, serait encore le faire tous les contrôles préalables, mais au lieu de copier des fichiers à C:\Foo vous êtes à la copie de certains fichiers différents C:\bar.

À mon avis, c'est une simple question d'économie. Oui, il est plus coûteux de développer une (bonne/complet) installer pour une .NET application, mais si c'est l'étape que vous devez prendre une fois à améliorer considérablement votre temps de développement, c'est un no-brainer. Votre retour sur investissement serait probablement de l'ordre de semaines.

17voto

Tom W Points 1801

J'ai besoin de répondre à cette déclaration:

Oui, certains de la .NET défenseurs affirment que tout devrait être installé sur une version modifiée et mise à jour du système d'exploitation. C'est vrai, mais pas tous les clients, et dire tout simplement "je suis désolé, d'abord mettre à jour", ne suffit pas. Rappelez-vous, nous sommes fiers de nous-mêmes dans l'expérience globale de l'utilisateur.

Si votre utilisateur est insistante sur la prise de vue dans le pied par l'exploitation d'un système que le vendeur a informé elles ne sont plus adaptés à l'objectif, alors il n'y a rien beaucoup que vous pouvez faire pour "aider". Je suis conscient que cela me fait ressembler à quelque chose d'odieux militante, mais je le regarde de la même manière qu'un manuel commerçant peut - il appartient au client de s'assurer que l'environnement dans lequel ils veulent me travail est sain et approprié pour le produit. Si ce n'est pas le cas, je vais l'acceptation d'une rétribution pour faire ce travail, mais il peut encore causer plus de travail parce qu'ils n'ont pas eu la clairvoyance pour s'assurer qu'ils ont compris ce qu'ils étaient en train d'acheter.

Je crois que les clients de logiciel ont été autorisés à rester dans l'ignorance depuis assez longtemps, et qu'elles devraient maintenant être nécessaires pour comprendre ce qu'ils achètent. L'exploitation d'un environnement informatique de l'entreprise qui n'est pas correctement patché est la même que la poursuite de l'exécution d'un véhicule qui a fait l'objet d'un fabricant de rappel - un service pack de Windows est équivalent à un rappel à bien des égards. Vous n'êtes pas légalement obligé de se soumettre à un rappel, mais il est dans votre meilleur intérêt de l'entreprise et vous pourriez être tenu responsable pour les dommages causés par votre dérober de la responsabilité.

7voto

abatishchev Points 42425

Toute application Visual C ++ a également des conditions préalables / dépendances externes: runtime 6.0, 2003, 2005, 2008 ou 2010? pas de SP, SP1 ou SP2? x86 ou x64? Quelle version de Windows Installer 2005 SP2 est-elle requise? Et quel 2008 SP1? Et ainsi de suite.

Ainsi, ce sont des arguments tirés par les cheveux! Comme Joel grommelle à propos de .NET. Et regarde ce qui est maintenant !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X