Visual Studio'da "Yayınlama" ve daha sonra değişen dosyaları el ile FTP zorunda daha iyi bir yolu olmalı?
Occam tıraş makinesi tipik olarak tercih edilen yaklaşımdır: daha basit, daha iyi. FTP, çok az veya hiç komplikasyon olmadan kolaydır. Bazı insanlar XCOPY, Filezilla veya WSFTP kullanır, diğerleri MS Web Dağıtım Aracı'nı (henüz bilmiyorum) kullanabilir, ancak hepsi bir arada, ASP.NET web uygulamalarını (ve diğerlerini dağıtmanın daha iyi bir yolu vardır) genel uygulamalar). IMO, dağıtım geliştirme başlangıcından itibaren dikkate alınırsa, dağıtım , gelecekte nispeten ağrısız ve sorunsuz bir dağıtım sağlayan web uygulamasıyla entegre edilebilir .
Boyut, karmaşıklık ve kullanıcı sayısı (birkaç yüz kullanıcıdan on binlerce) arasında değişen ASP.NET web uygulamaları geliştiren birkaç şirkette çalışan bir .NET geliştiricisi olarak IMO 'dağıtımı' genellikle en "akıcı" konudur. Bazı kuruluşlar bürokrasi açısından çok ileri giderken, diğerleri konuşlandırmayla ilgili herhangi bir sorunu ele almamaktadır. Deneyimlerime göre, dağıtım sorunları, zorluklar / başarısızlıklar açısından 3 kategoriden birine veya daha fazlasına düşme eğilimindedir:
Tasarım aşamasında dağıtım yok sayılır / unutulur:
Çoğu web uygulaması bir web sunucusu ve bir veritabanı içerir. Uygulama kodunun ötesinde, belki bazı saklı yordamlar ve veritabanı tabloları, dağıtım çok düşünmek gerekmez. ASP.NET dağıtımında yardım edebilen daha fazladır fakat en sık geliştiriciler çalıştıran gerçek uygulamayı alma ve bakımından dikkati dağılır yapıyor bırakarak kendi görev how ayrı bir sorun olarak konuşlandırılması.
Dağıtım, birden fazla sistem ve oyundaki insanlar arasında
karmaşıktır : Karmaşıklık bir sürtüktür. MSMQ, T-SQL saklı yordamlar ve tetikleyiciler, Raporlama Hizmetleri, SOAP / XML mesajlaşma, AD kimlik doğrulama, SSAS / SSIS, vb. En kötüsü, tüm bu farklı bileşenler genellikle bir kuruluştaki farklı varlıklar tarafından yönetilir. Herkes birbiriyle senkronize olmadıkça, konuşlandırmalar karmaşıklığı hızla artırabilir ve bu da birden fazla hata noktasına yol açabilir.
Tembellik, ilgisizlik veya iletişim ve / veya yönetim eksikliği:
Çok az veya hiç dokümantasyondan koordineli iletişim ve protokol eksikliğine kadar, nispeten basit bir süreci ortadan kaldırmak kolaydır. Dağıtım, yapılanları belgelendirirken birçok kontrolün yapıldığı basit bir prosedür olmalıdır, ancak çoğu zaman böyle değildir. Çoğu insan sadece lanet olası sitenin yayınlanmasını istiyor. Deneyimlerime göre, insanlar (programcı olmayanlar) bir şey gerçekten fubar olana kadar gerçekten umursamıyorlar . Hiç kimse gerçekten başarısızlığın nedeni olmak istemediğinden, sorumluluk genellikle dağıtımı yapmak için sadece bir kişiye düşer, bu nedenle hesap verebilirlik genellikle dağıtılır.
Kazara yüklemeleri önlemek için işlemi olabildiğince otomatik hale getirmem gerektiğini düşündüğüm çok fazla dosya istisnası var. Peki ekibiniz bunu nasıl yapıyor?
Birkaç olsaydı şaşırmamam da, dağıtımı otomatikleştirmek için eldeki herhangi bir satıcı bilmiyorum. Muhtemelen bir çözümü VBScript / WMI veya toplu komut dosyası bir çözüm ile kodlayabilirsiniz, ancak gerçek şu ki bir çözümü birlikte daha karmaşık ASP.NET siteleri için uyarlamanız gerekir. Sayfalar, veritabanı bağlantısı ve başka hiçbir şeyden oluşan basit siteler, dağıtım çabalarınızı uygulamanın kendisinin karmaşıklığına göre ölçeklendirmenize gerek yoktur.
Şimdiye kadar, şu anki işimde dağıtım hala FTP üzerinden ve bir sürü dosyayı taşıyor. Çirkin, vidalanması kolaydır ve doğru bir tarih duygusu yoktur. FTP günlükleri üzerinden tarama yapabilirsiniz, kimse bunu gerçekten rahatsız. Uygulamalarımız, FTP'nin ötesinde çok fazla ihtiyaç duymadan oldukça basittir. Ekibimin web uygulamalarımızı nasıl dağıttığı sizin için çok azdır veya hiç faydası yoktur. Bunun yerine, bu fırsatı daha iyi uygulamalar önermek için kullanmayı tercih ederim .
- Hiçbir şey varsaymamak. Kullanıcı hesapları, R / W / X ayrıcalıkları, ACL'ler, güvenlik duvarları, zamanlama (ne zaman konuşlandırılacağını ve ne kadar zaman yapmanız gerektiğini ) ve mümkünse, son "başlatma tarihinden" önce tüm ortamlara dağıtımı test edin.
- Kalkınma aslında başlamadan önce, kalkınmaya etki faktörü. Basit bir site ise, öyle olsun. Orada sayısız hareketli parçalar, faktör içinde her şeyi ve aslında Eğer inşa planını hangi tüm bileşenleri (kod, veritabanı, raporlar, kuyruklar, vs.) aynı plan üzerinde tümü.
- Diğer paritelerle koordinasyon sağlayın ve etkili ve verimli iletişim kurun.
- Mümkünse ilgili bilgileri belgeleyin.
- Çevre: bir web sunucusu ile web grubu arasındaki bağlantı; 32 bit ve 64 bit; günlükleri / hataları / döndürmeyi vb. izlemenin bir yolunu bulma
- Dağıtımda yardımcı olabilecek araçları bulun (veya oluşturun).
- Programlanabilir kurulum için mümkünse, bir paradigma seçin ve buna bağlı kalın. Örneğin, bir uygulamanın durumunu, dağıtımını, erişimini ve benzerlerini yürütmek için bir veritabanı sunucusu olarak bir veritabanı sunucusu kullanmak istiyorsanız, onu uygulamaya dönüştürün ve buna bağlı kalın. XML dosyalarını (web.config gibi) elbette okumayı tercih ediyorsanız , uygulamayı dağıtma konusunda tutarlı bir paradigmaya sadık kalmanız yeterlidir . Başka bir örnek: bazı kuruluşlar web.config dosyasını her ortamda diğer ortamlara dağıtılmaması gereken statik bir dosya olarak bırakır . Diğerlerinin web.config programı, ortamlara hatasız olarak dağıtılabilecek şekilde.
Bu gönderinin ilk başta sorulan soru için aşırıya kaçmış olabileceğini anlıyorum. Ne yazık ki, uygulamalar karmaşıklık bakımından farklılık gösterebileceğinden, dağıtım basit bir şey değildir. Karmaşık ASP.NET uygulamalarını dağıtan çoğu kuruluşun zamanla (en azından) güvenilir bir şekilde belirli stratejiler geliştirdiğine bahse girerim .