Deve esserci un modo migliore della semplice "Pubblicazione" in Visual Studio e quindi dover FTP manualmente i file che sono stati modificati?
Il rasoio di Occam è in genere l'approccio preferito: più semplice, meglio è. FTP è facile con poche o nessuna complicazione. Alcune persone usano XCOPY, Filezilla o WSFTP, altre potrebbero usare lo strumento di distribuzione Web MS (di cui non ho ancora familiarità), ma tutto sommato esiste un modo migliore di distribuire app Web ASP.NET (e altro app in generale). IMO, se la distribuzione viene presa in considerazione sin dall'inizio dello sviluppo, la distribuzione può essere integrata con l'app Web, il che consente una distribuzione relativamente indolore e regolare in futuro.
Come sviluppatore .NET che ha lavorato in diverse aziende sviluppando app Web ASP.NET di dimensioni, complessità e numero di utenti (da diverse centinaia a decine di migliaia), la "distribuzione" dell'IMO è spesso l'argomento più "fluido". Alcune organizzazioni si spingono troppo oltre in termini di burocrazia, mentre altre non affrontano alcun problema con la distribuzione. Nella mia esperienza, i problemi con la distribuzione tendono a rientrare in 1 o più di 3 categorie in termini di difficoltà / guasti:
La distribuzione viene ignorata / dimenticata in profondità durante la fase di progettazione: la
maggior parte delle app Web tende a incorporare un server Web e un database. Oltre al codice dell'applicazione, forse alcune procedure memorizzate e tabelle del database, la distribuzione non ha bisogno di molte considerazioni. ASP.NET è più in grado di aiutare nella distribuzione ma più spesso gli sviluppatori sono distratti in termini di ottenere l'effettiva applicazione in esecuzione e facendo di essa la compito lasciando il modo di distribuzione come una questione separata.
La distribuzione è complessa su più sistemi e persone in gioco: la
complessità è una cagna. Da MSMQ, T-SQL stored procedure e trigger, Reporting Services, messaggistica SOAP / XML, autenticazione AD, SSAS / SSIS, ecc. Ecc., Il numero di tecnologie in gioco aumenta il numero di persone coinvolte. Peggio ancora, tutti questi diversi componenti sono generalmente gestiti da entità diverse all'interno di un'organizzazione. A meno che tutti non siano sincronizzati tra loro, le implementazioni possono aumentare rapidamente in complessità portando a più punti di errore.
Pigrizia, apatia o mancanza di comunicazione e / o gestione:
dalla poca o nessuna documentazione alla mancanza di comunicazione e protocollo coordinati, è facile rovinare un processo relativamente semplice. La distribuzione dovrebbe essere una procedura semplice con numerosi controlli in atto per documentare ciò che è stato fatto, ma spesso non è mai così. La maggior parte delle persone vuole solo che questo maledetto sito funzioni. In base alla mia esperienza, alle persone (non programmatori) non importa davvero fino a quando qualcosa non diventa veramente fubar. Raramente la responsabilità ricade su una sola persona per eseguire effettivamente la distribuzione poiché nessuno vuole davvero essere la ragione del fallimento, quindi la responsabilità è generalmente dispersa.
Ci sono così tante eccezioni di file difficili che dovrei piuttosto automatizzare il processo il più possibile, per evitare caricamenti accidentali. Quindi come lo fa la tua squadra?
Non conosco fornitori disponibili per automatizzare la distribuzione, anche se non sarei sorpreso se ce ne fossero alcuni. Probabilmente potresti creare una soluzione tramite VBScript / WMI o scrivere in batch una soluzione, ma la realtà è che devi adattare una soluzione insieme per siti ASP.NET più complessi. Siti semplici costituiti da pagine, connettività di database e nient'altro, non è necessario fare altrettanto, quindi scalare le attività di implementazione in linea con la complessità dell'applicazione stessa.
Finora, al mio attuale lavoro, la distribuzione è ancora eseguita tramite FTP e spostando un mucchio di file. È brutto, facile da rovinare e non ha senso una storia accurata. Concesso che potresti controllare i log FTP, nessuno si preoccupa davvero di farlo. Le nostre app sono abbastanza semplici senza molto bisogno oltre FTP. Il modo in cui il mio team distribuisce le nostre app Web è davvero poco utile per te. Invece, preferirei cogliere questa opportunità per suggerire pratiche migliori .
- Non assumere niente. Account utente, privilegi R / W / X, ACL, firewall, tempistica (quando distribuire e quanto tempo è necessario ) e, se possibile, testare la distribuzione in tutti gli ambienti prima della "data di lancio" finale.
- Prima che lo sviluppo abbia effettivamente inizio, fattore di sviluppo nello sviluppo. Se è un sito semplice, così sia. Se ci sono numerose parti mobili, includetele tutte e costruite effettivamente un piano in cui tutti i componenti (codice, database, report, code, ecc.) Siano tutti sullo stesso piano.
- Coordinare con altre parità e comunicare in modo efficace ed efficiente.
- Documentare quante più informazioni pertinenti, se possibile.
- Ambiente: un web server vs. web farm; 32 bit contro 64 bit; trovare un modo per monitorare i registri / errori / ruotare, ecc.
- Trova (o costruisci) strumenti che possono essere di aiuto nella distribuzione.
- Se possibile per una distribuzione programmabile, selezionare un paradigma e attenersi ad esso. Ad esempio, se si desidera utilizzare un server di database come mezzo principale per eseguire lo stato, la distribuzione, l'accesso e così via di un'applicazione, inserirla nell'applicazione e attenersi ad essa. Se si preferisce leggere i file XML (come web.config) in ogni caso, attenersi a un paradigma coerente di distribuzione dell'applicazione. Un altro esempio: alcune organizzazioni lasciano web.config come file statico in ogni ambiente che non dovrebbe essere distribuito ad altri ambienti. Programma web.config di altri in modo tale da poter essere distribuito su più ambienti senza errori.
Mi rendo conto che questo post potrebbe essere eccessivo per la domanda che è stata inizialmente posta. Sfortunatamente, la distribuzione non è una cosa semplice in quanto le applicazioni possono variare in complessità. Scommetto che la maggior parte delle organizzazioni che implementano app ASP.NET complesse hanno sviluppato nel tempo determinate strategie di lavoro (almeno) in modo affidabile.