Deve haver uma maneira melhor do que apenas "Publicação" no Visual Studio e, em seguida, ter que FTP manualmente os arquivos que foram alterados?
A navalha de Occam é normalmente a abordagem preferida: quanto mais simples, melhor. O FTP é fácil, com pouca ou nenhuma complicação. Algumas pessoas usam XCOPY, Filezilla ou WSFTP, outras podem usar a MS Web Deployment Tool (com a qual ainda não estou familiarizado), mas, apesar de tudo, existe uma maneira melhor de implantar aplicativos Web do ASP.NET (e outros aplicativos em geral). Na IMO, se a implantação for levada em consideração desde o início do desenvolvimento, ela poderá ser integrada ao aplicativo Web, o que resultará em uma implantação suave e sem dor no futuro.
Como desenvolvedor .NET que trabalhou em várias empresas desenvolvendo aplicativos Web ASP.NET com tamanho, complexidade e número de usuários (de várias centenas de usuários a dezenas de milhares), a 'implantação' da IMO geralmente é o tópico mais "fluido". Algumas organizações levam isso muito longe em termos de burocracia, enquanto outras não tratam de nenhum problema com a implantação. Na minha experiência, os problemas com a implantação tendem a se enquadrar em 1 ou mais de 3 categorias em termos de dificuldades / falhas:
A implantação é ignorada / esquecida em profundidade durante a fase de design: a
maioria dos aplicativos da Web tende a incorporar um servidor da Web e um banco de dados. Além do código do aplicativo, talvez alguns procedimentos armazenados e tabelas de banco de dados, a implantação não precisa de muita reflexão. ASP.NET é mais do que capaz de auxiliar na implantação, mas na maioria das vezes os desenvolvedores estão distraídos em termos de obter a aplicação real correndo e fazendo a sua tarefa, deixando o como de implantação como uma questão separada.
A implantação é complexa em vários sistemas e pessoas em jogo: a
complexidade é uma chatice. No MSMQ, procedimentos e gatilhos armazenados T-SQL, Reporting Services, mensagens SOAP / XML, autenticação AD, SSAS / SSIS, etc. etc. o número de tecnologias em jogo aumenta o número de pessoas envolvidas. O pior de tudo é que todos esses componentes diferentes geralmente são gerenciados por diferentes entidades dentro de uma organização. A menos que todos estejam sincronizados, as implantações podem aumentar a complexidade rapidamente, levando a vários pontos de falha.
Preguiça, apatia ou falta de comunicação e / ou gerenciamento:
de pouca ou nenhuma documentação à falta de comunicação e protocolo coordenados, é fácil estragar um processo relativamente simples. A implantação deve ser um procedimento simples, com inúmeras verificações, documentando o que está sendo feito, mas muitas vezes nunca é o caso. A maioria das pessoas só quer que o maldito site esteja funcionando. Na minha experiência, as pessoas (não programadores) realmente não se importam até que algo fique realmente fubar. A responsabilidade raramente recai sobre apenas uma pessoa para realmente fazer a implantação, pois ninguém realmente quer ser o motivo do fracasso, de modo que a responsabilidade geralmente é dispersa.
Há tantas exceções de arquivo complicadas que eu devo automatizar o processo o máximo possível, para evitar envios acidentais. Então, como sua equipe faz isso?
Não conheço nenhum fornecedor disponível para automatizar a implantação, embora não me surpreenda se houver alguns. Provavelmente, você pode criar um script de uma solução via VBScript / WMI ou fazer o lote de scripts de uma solução, mas a realidade é que você precisa adaptar uma solução para sites ASP.NET mais complexos. Sites simples que consistem em páginas, conectividade de banco de dados e nada mais, você não precisa fazer quase tanto para dimensionar seus esforços de implantação de acordo com a complexidade do próprio aplicativo.
Até agora, no meu trabalho atual, a implantação ainda é feita via FTP e a movimentação de vários arquivos. É feio, fácil de estragar e não há sentido de uma história precisa. Concedido que você poderia vasculhar os logs de FTP, ninguém realmente se incomoda em fazê-lo. Nossos aplicativos são bastante simples, sem muita necessidade além do FTP. Como minha equipe implementa nossos aplicativos da Web é muito pouco ou nada útil para você. Em vez disso, prefiro usar esta oportunidade para sugerir melhores práticas.
- Supor nada. Contas de usuário, privilégios R / W / X, ACLs, firewalls, tempo (quando implantar e quanto tempo você precisa ) e, se possível, teste a implantação em todos os ambientes antes da "data de lançamento" final.
- Antes que o desenvolvimento realmente comece, considere a implantação no desenvolvimento. Se é um site simples, que assim seja. Se houver várias partes móveis, leve em consideração tudo isso e construa um plano para o qual todos os componentes (código, banco de dados, relatórios, filas etc.) estejam todos no mesmo plano.
- Coordene com outras paridades e comunique-se de forma eficaz e eficiente.
- Documente o máximo possível de informações pertinentes.
- Ambiente: um servidor web versus web farm; 32 bits vs. 64 bits; encontre uma maneira de monitorar logs / erros / rotação, etc.
- Encontre (ou construa) ferramentas que possam ajudar na implantação.
- Se possível para implantação programável, escolha um paradigma e atenha-se a ele. Por exemplo, se você deseja usar um servidor de banco de dados como o principal meio para executar o estado, a implantação, o acesso de um aplicativo e outros, assine-o no aplicativo e atenha-se a ele. Se você preferir ler arquivos XML (como web.config) de qualquer maneira, fique com um paradigma consistente de implantação do aplicativo. Outro exemplo: algumas organizações deixam o web.config como um arquivo estático em cada ambiente que não deve ser implantado em outros ambientes. O programa web.config de outros, de forma que possa ser implantado em ambientes sem erros.
Sei que este post pode ser um exagero para a pergunta que foi feita originalmente. Infelizmente, a implantação não é uma coisa simples, pois os aplicativos podem variar em complexidade. Aposto que a maioria das organizações que implantam aplicativos ASP.NET complexos desenvolveu ao longo do tempo certas estratégias que funcionam (pelo menos) de maneira confiável.