Dalam pekerjaan kami, kami memiliki beberapa aplikasi .net yang berbeda yang berbagi banyak fungsi dasar. Kami telah membangun aplikasi ini menggunakan arsitektur n-tier yang bersih, tetapi kami telah mencapai saat di mana kami menyadari bahwa kami telah mengimplementasikan kembali fungsi yang sama beberapa kali berbeda. Jelas ini melanggar KERING, dan kami ingin memperbaikinya. Kami sudah menggunakan Nuget untuk beberapa keberhasilan untuk kode lem umum (memasang IoC, logging, pengaturan), tetapi kami juga ingin berbagi data dan lapisan bisnis antara semua aplikasi kami. Idenya adalah bahwa UI hanya akan berurusan dengan bagian-bagian dari lapisan bisnis yang sebenarnya dibutuhkan.
Ini kelihatannya seperti masalah langsung pada awalnya, tetapi pengembangan yang sedang berlangsung dapat memberikan beberapa jebakan dan kami tidak yakin bagaimana untuk melanjutkan. Katakanlah kita membuat Satu Lapisan Bisnis Kita untuk Mengatur Mereka Semua. Untuk singkatnya, saya akan menyebutnya "Yayasan." Kami port aplikasi kami untuk menggunakan Yayasan, dan semuanya berjalan baik. Yayasan ini didistribusikan ke lapisan UI ringan melalui nuget, dan kami terlihat bagus. Tapi kemudian kami mulai menambahkan fitur ke aplikasi kami, dan kami mengalami masalah.
Katakanlah kita sedang mengerjakan Proyek A dan kami menambahkan fitur baru yang membutuhkan perubahan pada Foundation. Kami membuat perubahan pada fondasi (Foundation-A) dan mendorongnya ke umpan nuget sebagai paket yang tidak stabil. Proyek A mendapatkan paket nuget terbaru, dan semuanya baik-baik saja. Sementara itu, pengembang lain sedang mengerjakan Proyek B. Dia mendapatkan Yayasan terbaru dari kontrol sumber, tetapi mengambilnya dari cabang stabil, sehingga tidak memiliki perubahan Proyek A di dalamnya. Dia membuat perubahan dan menciptakan Foundation-B. Dan semuanya baik-baik saja. Tetapi kemudian kami menemukan bahwa fungsi implementasi Foundation-A dan Foundation-B yang benar-benar dapat membagikan kode, jadi kami menggabungkannya. Sementara itu Foundation-C mengambang di sana dengan perubahannya sendiri. Akhirnya, Foundation-B siap untuk diproduksi, jadi kami mendorongnya. Tapi kemudian kita perlu memperbarui Produksi A, B,
Sepertinya ini bisa berhasil, tetapi kami khawatir tentang bekerja dengan skema basis data yang berbeda dan menjaga semuanya disinkronkan antara berbagai cabang repositori Foundation serta repositori Proyek A, B, dan C. Sepertinya mungkin akan membutuhkan banyak pekerjaan manual, yang membuka kemungkinan kesalahan. Saya ingin ini seotomatis mungkin.
Inilah tumpukan yang kami gunakan: C #, TFS dengan Continuous Integration, Nuget. Aplikasi kami adalah semua jenis aplikasi ASP.NET. Kami bersedia melihat berbagai SCM jika itu akan membuat segalanya lebih mudah.
Saya mencari cara untuk menjaga Nuget tetap waras dengan cabang kode sumber kami yang berbeda. Kami tidak ingin secara tidak sengaja mendorong kode pengembangan ke dalam produksi karena kami merujuk pada Paket Nuget yang salah.