Es muss einen besseren Weg geben, als nur in Visual Studio zu "veröffentlichen" und dann die geänderten Dateien manuell per FTP zu übertragen.
Occams Rasiermesser ist normalerweise der bevorzugte Ansatz: Je einfacher, desto besser. FTP ist einfach mit wenig bis gar keinen Komplikationen. Einige Benutzer verwenden XCOPY, Filezilla oder WSFTP, andere verwenden möglicherweise das MS Web Deployment Tool (mit dem ich noch nicht vertraut bin), aber insgesamt gibt es eine bessere Möglichkeit, ASP.NET-Webanwendungen (und andere) bereitzustellen Apps im Allgemeinen). IMO: Wenn die Bereitstellung von Beginn der Entwicklung an berücksichtigt wird, kann die Bereitstellung in die Web-App integriert werden, was in Zukunft eine relativ schmerzfreie und reibungslose Bereitstellung ermöglicht.
Als .NET-Entwickler, der in mehreren Unternehmen an der Entwicklung von ASP.NET-Webanwendungen gearbeitet hat, die sich in Größe, Komplexität und Anzahl der Benutzer (von mehreren hundert Benutzern bis zu Zehntausenden) unterscheiden, ist die IMO-Bereitstellung häufig das "flüssigste" Thema. Einige Organisationen gehen in Bezug auf die Bürokratie zu weit, während andere überhaupt keine Probleme mit der Bereitstellung ansprechen. Nach meiner Erfahrung fallen Probleme mit der Bereitstellung in Bezug auf Schwierigkeiten / Fehler in eine oder mehrere von drei Kategorien:
Die Bereitstellung wird während der Entwurfsphase eingehend ignoriert / vergessen:
Die meisten Web-Apps enthalten in der Regel einen Webserver und eine Datenbank. Abgesehen von Anwendungscode, möglicherweise einigen gespeicherten Prozeduren und Datenbanktabellen, erfordert die Bereitstellung nicht viel Nachdenken. ASP.NET ist mehr als fähig , bei der Bereitstellung von Unterstützung , aber die meisten Entwickler oft in Bezug abgelenkt werden , um die tatsächliche Anwendung immer laufen und dabei die es Aufgabe während verlassen , wie der Einsatz als separates Thema.
Die Bereitstellung ist systemübergreifend und spielerisch komplex:
Komplexität ist eine Hündin. Von MSMQ, gespeicherten T-SQL-Prozeduren und -Triggern, Reporting Services, SOAP / XML-Messaging, AD-Authentifizierung, SSAS / SSIS usw. usw. erhöht die Anzahl der verwendeten Technologien die Anzahl der beteiligten Personen. Am schlimmsten ist jedoch, dass all diese verschiedenen Komponenten normalerweise von verschiedenen Entitäten innerhalb einer Organisation verwaltet werden. Wenn nicht alle miteinander synchronisiert sind, kann die Komplexität von Bereitstellungen schnell zunehmen und zu mehreren Fehlerquellen führen.
Faulheit, Apathie oder mangelnde Kommunikation und / oder Verwaltung:
Von wenig bis gar keiner Dokumentation bis hin zu mangelnder koordinierter Kommunikation und Protokollierung ist es einfach, einen relativ einfachen Prozess zu vermasseln. Die Bereitstellung sollte ein einfaches Verfahren sein, bei dem zahlreiche Überprüfungen durchgeführt werden, während dokumentiert wird, was getan wurde. Oft ist dies jedoch nie der Fall. Die meisten Leute wollen nur, dass die verdammte Seite in Betrieb ist. Nach meiner Erfahrung kümmern sich Leute (Nicht-Programmierer) nicht wirklich darum, bis etwas wirklich fubar wird. Die Verantwortung liegt selten bei nur einer Person, um die Bereitstellung tatsächlich durchzuführen, da niemand wirklich der Grund für das Scheitern sein möchte, sodass die Verantwortlichkeit normalerweise verstreut ist.
Es gibt so viele fummelige Dateiausnahmen, dass ich den Prozess lieber so weit wie möglich automatisieren möchte, um versehentliche Uploads zu verhindern. Wie macht Ihr Team das?
Ich kenne keine Anbieter, die die Bereitstellung automatisieren könnten, obwohl ich mich nicht wundern würde, wenn es einige gäbe. Sie könnten wahrscheinlich eine Lösung über VBScript / WMI oder ein Batch-Skript erstellen, aber in Wirklichkeit müssen Sie eine Lösung für komplexere ASP.NET-Sites zusammenstellen. Bei einfachen Websites, die aus Seiten, Datenbankkonnektivität und nichts anderem bestehen, müssen Sie nicht annähernd so viel tun, um Ihre Bereitstellungsbemühungen an die Komplexität der Anwendung selbst anzupassen.
Bisher erfolgt die Bereitstellung bei meiner aktuellen Arbeit noch über FTP und das Verschieben einer Reihe von Dateien. Es ist hässlich, leicht zu vermasseln und es gibt keinen Sinn für eine genaue Geschichte. Zugegeben, Sie könnten FTP-Protokolle durchkämmen, niemand stört sich wirklich daran. Unsere Apps sind ziemlich einfach, ohne dass über FTP hinaus viel benötigt wird. Wie mein Team unsere Web-Apps bereitstellt, ist für Sie von geringem bis gar keinem Nutzen. Stattdessen möchte ich diese Gelegenheit lieber nutzen, um bessere Praktiken vorzuschlagen .
- Nimm nichts an. Benutzerkonten, R / W / X Privilegien, ACLs, Firewalls, Timing (wenn zu implementieren und wie viel Zeit Sie haben , es zu tun), und , wenn möglich, Testbereitstellung für alle Umgebungen vor dem letzten „Starttermin“.
- Bevor die Entwicklung tatsächlich beginnt, sollten Sie die Bereitstellung in die Entwicklung einbeziehen. Wenn es eine einfache Seite ist, soll es so sein. Wenn es zahlreiche bewegliche Teile gibt, berücksichtigen Sie alles und erstellen Sie einen Plan, in dem sich alle Komponenten (Code, Datenbank, Berichte, Warteschlangen usw.) auf demselben Plan befinden.
- Koordinieren Sie mit anderen Paritäten und kommunizieren Sie effektiv und effizient.
- Dokumentieren Sie so viele relevante Informationen wie möglich.
- Umgebung: ein Webserver vs. Webfarm; 32-Bit vs. 64-Bit; Finden Sie einen Weg, um Protokolle / Fehler / Rotationen usw. zu überwachen.
- Suchen (oder Erstellen) von Tools, die bei der Bereitstellung helfen können.
- Wenn möglich für eine programmierbare Bereitstellung, wählen Sie ein Paradigma und bleiben Sie dabei. Wenn Sie beispielsweise einen Datenbankserver als primäres Mittel zum Ausführen des Status, der Bereitstellung, des Zugriffs usw. einer Anwendung verwenden möchten, backen Sie ihn in die Anwendung und bleiben Sie dabei. Wenn Sie XML-Dateien (wie web.config) unbedingt lesen möchten, halten Sie sich einfach an ein konsistentes Paradigma für die Bereitstellung der Anwendung. Ein weiteres Beispiel: Einige Organisationen belassen web.config als statische Datei in jeder Umgebung, die nicht in anderen Umgebungen bereitgestellt werden sollte . Das Programm web.config von Other ist so, dass es fehlerfrei in verschiedenen Umgebungen bereitgestellt werden kann.
Mir ist klar, dass dieser Beitrag für die ursprünglich gestellte Frage möglicherweise übertrieben ist. Leider ist die Bereitstellung nicht einfach, da die Komplexität der Anwendungen variieren kann. Ich wette, dass die meisten Organisationen, die komplexe ASP.NET-Apps bereitstellen, im Laufe der Zeit bestimmte Strategien entwickelt haben, um (zumindest) zuverlässig zu arbeiten.