Il doit y avoir un meilleur moyen que de simplement "publier" dans Visual Studio et de devoir ensuite FTP manuellement les fichiers qui ont changé?
Le rasoir d'Occam est généralement l'approche préférée: le plus simple, le mieux. FTP est facile avec peu ou pas de complications. Certaines personnes utilisent XCOPY, Filezilla ou WSFTP, d'autres peuvent utiliser l'outil de déploiement Web MS (que je ne connais pas encore), mais dans l'ensemble, il existe une meilleure façon de déployer des applications Web ASP.NET (et d'autres applications en général). IMO, si le déploiement est pris en considération dès le début du développement, le déploiement peut être intégré à l'application Web, ce qui permet un déploiement relativement indolore et sans heurt à l'avenir.
En tant que développeur .NET qui a travaillé dans plusieurs sociétés développant des applications Web ASP.NET de taille, de complexité et de nombre d'utilisateurs (de plusieurs centaines d'utilisateurs à des dizaines de milliers), le «déploiement» de l'OMI est souvent le sujet le plus «fluide». Certaines organisations vont trop loin en termes de bureaucratie tandis que d'autres ne résolvent aucun problème de déploiement. D'après mon expérience, les problèmes de déploiement ont tendance à tomber dans 1 ou plusieurs des 3 catégories en termes de difficultés / échecs:
Le déploiement est ignoré / oublié en profondeur pendant la phase de conception: la
plupart des applications Web ont tendance à incorporer un serveur Web et une base de données. Au-delà du code d'application, peut-être de certaines procédures stockées et de tables de base de données, le déploiement n'a pas besoin de beaucoup de réflexion. ASP.NET est plus que capable d'aider dans le déploiement , mais le plus souvent les développeurs sont distraits en termes d'obtenir l'application réelle en cours d' exécution et faire tâche de tout en laissant la façon de déploiement comme une question distincte.
Le déploiement est complexe sur plusieurs systèmes et personnes en jeu: la
complexité est une chienne. Depuis MSMQ, les procédures stockées et déclencheurs T-SQL, Reporting Services, la messagerie SOAP / XML, l'authentification AD, SSAS / SSIS, etc., etc., le nombre de technologies en jeu augmente le nombre de personnes impliquées. Pire encore, tous ces différents composants sont généralement gérés par différentes entités au sein d'une organisation. À moins que tout le monde ne soit synchronisé les uns avec les autres, les déploiements peuvent rapidement devenir plus complexes et entraîner de multiples points de défaillance.
Paresse, apathie ou manque de communication et / ou de gestion: de
peu ou pas de documentation au manque de communication et de protocole coordonnés, il est facile de bousiller un processus relativement simple. Le déploiement devrait être une procédure simple avec de nombreuses vérifications en place tout en documentant ce qui est fait, mais souvent ce n'est jamais le cas. La plupart des gens veulent juste que ce putain de site soit en marche. D'après mon expérience, les gens (non-programmeurs) ne se soucient pas vraiment tant que quelque chose ne va pas vraiment . La responsabilité incombe rarement à une seule personne pour effectuer le déploiement, car personne ne veut vraiment être la raison de l'échec, de sorte que la responsabilité est généralement dispersée.
Il y a tellement d'exceptions de fichiers délicates que je devrais plutôt automatiser le processus autant que possible, pour éviter les téléchargements accidentels. Alors, comment fait votre équipe?
Je ne connais aucun fournisseur disponible pour automatiser le déploiement, bien que je ne serais pas surpris s'il y en avait quelques-uns. Vous pouvez probablement créer un script pour une solution via VBScript / WMI ou un script par lots pour une solution, mais la réalité est que vous devez adapter une solution ensemble pour des sites ASP.NET plus complexes. Sites simples composés de pages, de connectivité à la base de données et rien d'autre, vous n'avez pas besoin d'en faire autant pour adapter vos efforts de déploiement à la complexité de l'application elle-même.
Jusqu'à présent, dans mon travail actuel, le déploiement se fait toujours via FTP et déplace un tas de fichiers. C'est moche, facile à foutre et il n'y a aucun sens d'une histoire précise. Certes, vous pouvez passer au peigne fin les journaux FTP, personne ne dérange vraiment de le faire. Nos applications sont assez simples sans grand besoin de FTP. La façon dont mon équipe déploie nos applications Web ne vous est d'aucune utilité. Au lieu de cela, je préfère profiter de cette occasion pour suggérer de meilleures pratiques.
- N'assume rien. Comptes d'utilisateurs, privilèges R / W / X, ACL, pare-feu, calendrier (quand déployer et combien de temps vous devez le faire), et si possible, tester le déploiement dans tous les environnements avant la "date de lancement" finale.
- Avant que le développement ne commence réellement, intégrez le déploiement au développement. S'il s'agit d'un simple site, qu'il en soit ainsi. S'il y a de nombreuses pièces mobiles, facteur tout cela et fait construire un plan auquel tous les composants (code, base de données, rapports, files d' attente, etc.) sont tous sur le même plan.
- Coordonnez-vous avec les autres parités et communiquez efficacement.
- Documentez autant d'informations pertinentes que possible.
- Environnement: un serveur Web par rapport à une batterie de serveurs Web; 32 bits contre 64 bits; trouver un moyen de surveiller les journaux / erreurs / rotation, etc.
- Trouvez (ou créez) des outils qui peuvent aider au déploiement.
- Si possible pour un déploiement programmable, choisissez un paradigme et respectez-le. Par exemple, si vous souhaitez utiliser un serveur de base de données comme moyen principal pour effectuer l'état, le déploiement, l'accès et ainsi de suite d'une application, intégrez-le dans l'application et respectez-le. Si vous préférez lire les fichiers XML (comme web.config) par tous les moyens, respectez simplement un paradigme cohérent de déploiement de l'application. Autre exemple: certaines organisations laissent web.config en tant que fichier statique dans chaque environnement qui ne doit pas être déployé dans d'autres environnements. Le programme web.config de l'autre de manière à pouvoir être déployé sans erreur dans les environnements.
Je me rends compte que ce message pourrait être exagéré pour la question qui a été initialement posée. Malheureusement, le déploiement n'est tout simplement pas une chose simple car les applications peuvent varier en complexité. Je parierais que la plupart des organisations qui déploient des applications ASP.NET complexes ont au fil du temps développé certaines stratégies de travail (au moins) de manière fiable.