Çalışmalarımızda, birçok temel işlevselliği paylaşan birkaç farklı .net uygulamamız var. Bu uygulamaları temiz n katmanlı bir mimari kullanarak yaptık, ancak aynı işlevleri birkaç farklı kez yeniden uyguladığımızı anladığımız anı vurduk. Açıkçası bu DRY'yi ihlal ediyor ve bunu düzeltmek istiyoruz. Nuget'i zaten yaygın tutkal kodu (IoC, günlük kaydı, ayarlar) için bazı başarılarda kullanmaktayız, ancak aynı zamanda veri ve iş katmanlarımızı tüm uygulamalarımız arasında paylaşmak istiyoruz. Fikir, UI'nin sadece iş katmanının gerçekten ihtiyaç duyduğu bölümleri ele alacağıdır.
Bu başlangıçta basit bir sorun gibi görünüyor, ancak devam eden gelişme bazı tuzaklar sağlayabilir ve nasıl ilerleyeceğimizden emin değiliz. Diyelim ki Tek İşletme Katmanımızı Hepsini Yönetmek İçin Yapıyoruz. Kısacası ben buna "Vakıf" diyeceğim. Vakfı kullanmak için uygulamalarımızı taşıyoruz ve her şey harika çalışıyor. Vakıf, hafif UI katmanlarına nuget yoluyla dağıtılır ve iyi görünüyoruz. Ama sonra uygulamalarımıza özellikler eklemeye başlıyoruz ve başımız belada.
Diyelim ki A Projesi üzerinde çalışıyoruz ve Vakıfta değişiklik gerektiren yeni bir özellik ekliyoruz. Vakfta (Vakıf-A) değişiklikler yaparız ve kararsız bir paket olarak nuget yemine göndeririz. A Projesi en son nuget paketini alıyor ve her şey yolunda. Bu arada, başka bir geliştirici Proje B üzerinde çalışıyor. En son Vakfı kaynak kontrolünden alıyor, ancak istikrarlı bir daldan alıyor, böylece Proje A'da değişiklik yok. Değişiklikler yaparak Vakıf-B'yi yarattı. Ve her şey yolunda. Ancak daha sonra, aslında kodu paylaşabilecek olan Foundation-A ve Foundation-B uygulama işlevlerini keşfediyoruz, bu yüzden bunları birleştiriyoruz. Bu arada Foundation-C kendi değişiklikleriyle yüzüyor. Sonunda, Foundation-B üretime hazırdır, bu yüzden onu dışarı çıkarıyoruz. Ama sonra Üretim A, B'yi güncellemeliyiz,
Bu işe yarayabilir gibi görünüyor, ancak farklı veritabanı şemalarıyla çalışmaktan ve Vakıf veri havuzunun çeşitli dalları ile Proje A, B ve C depoları arasında her şeyi senkronize tutmak konusunda endişeliyiz. Muhtemelen hata olasılığını açan çok fazla manuel çalışma alacak gibi görünüyor. Bunu olabildiğince otomatik olarak istiyorum.
İşte kullandığımız yığın: C #, Sürekli Entegrasyonlu TFS, Nuget. Uygulamalarımız çeşitli ASP.NET uygulamalarıdır. İşleri kolaylaştıracaksa farklı SCM'lere bakmaya hazırız.
Farklı kaynak kodu şubelerimizle Nuget aklı başında tutmanın yollarını arıyorum. Yanlış Nuget Paketine referans verdiğimiz için geliştirme kodunu yanlışlıkla üretime sokmak istemiyoruz.