.NET'te (Visual Studio) ne zaman yeni bir derleme oluşturursunuz?


9

Silverlight uygulaması üzerinde çalışıyorum. Birkaç meclise böldüm:

  • Alan adı
  • Depolar (Sterling veritabanında kalıcı olan her şey)
  • UI
  • ...

Bunu bu şekilde öğrendim, ama merak ettim. DLL'lerin yeniden kullanılmayacağını biliyorsanız, bunları bölmek gerekli mi? Ya da her şeyi tek bir derlemeye koyabilir ve düzenli tutmak için klasörleri ve ad alanlarını kullanabilir misiniz?

Ayrıca çok fazla montajı olan projeler gördüm. Uygun olduğu yerlerde ad alanlarını kullanmak yerine.

Peki: yeni bir kod parçası için ne zaman yeni bir montaj oluşturursunuz? Bu konuda iyi kaynaklar var mı? Ve kodu teknik olarak (etki alanı, veri, kullanıcı arayüzü vb.) Ve / veya işlevsel olarak (yani hasta yönetimi, hasta-tıbbi, hastane-lojistik, ... - muhtemelen sadece daha büyük, kurumsal düzey uygulamalar için) bölüyor musunuz?

Yanıtlar:


1

Mantıksal olarak "modüllere" giren sınıflar için ayrı montajlar oluşturmanızı öneririm. Bu sadece yeniden kullanım ve bakım için değil, aynı zamanda sınıflar arasında en az miktarda bağımlılığın uygulanmasının da bir yoludur.

Misyon, her bir montajın ihtiyaç duyduğu diğer meclislere yapılan referans sayısını en aza indirgemek olacak, çoğunlukla bu arayüzler ve olaylar aracılığıyla yapılacaktır. Farklı meclislerde sınıflara sahip olmak bağımlılıkları çok açık hale getirecektir. Bunun aksine, sadece bir montaj kullanırsanız, her şey erişilebilir olduğundan bağımlılıklar hakkında düşünmeyi ihmal etmek çok kolaydır.

Tabii ki abartmamalı, gerektiğinde ayırmamalısınız. Şöyle düşünün: "Bu sınıflar birbirine aittir ve bu sınıfları bilmek zorunda değildir" ve bu satırlar boyunca ayrılırlar


1
"Modüller" ile ne kastettiğinize bağlıdır, ancak genellikle ilgili mantığı derlemeler yerine ad alanları kullanarak bölerim. Unutmayın, ad alanları montajları kapsayabilir. Montajlar dağıtım birimidir ve bu nedenle montaj senaryolarınıza uyması için montajlarınızı kesmeyi düşünmelisiniz.
Ed James

3
İyi bir fikir değil. Bir çözüm birkaç projeden daha fazlasını içerdiğinde VS çok durgunlaşır.
nikie

4
VS'niz çok halsiz olursa, eski bir sürümü veya yavaş bir bilgisayarı çalıştırıyorsunuz demektir. Saniyeler içinde derlenen 30'dan fazla projeyle büyük projelerim var. Sonra yine çok fazla koç, çekirdek ve SSD var :) Tabii abartmamalısınız, ancak uygun olan yerlerde ayırmalısınız, şöyle düşünün "Bu sınıflar birbirine ait ve bu sınıflar hakkında bilgi sahibi olmak zorunda değil" ve Bu çizgiler boyunca ayrı
Homde

Bağımlılıklarla ilgili açıklama nedeniyle bunu cevap olarak işaretledi. Ed James'in cevabı en azından bu kadar değerli ve doğrudur, ancak bu cevap benim durumum için daha geçerlidir.
Peter

2
Eğer meclislerinin bir grup ile bitebileceğini bu yaklaşımı takiben: A, B, C, D, E, F, G, H, I, J, K. Eğer montaj referans olursanız olun A, siz de onun bağımlı derlemelerin başvurmalıdır: B, C, D. Ama montaj C: bağlıdır E, F, G, Hbu yüzden de bu ihtiyacımız olacak. Böylece, herhangi bir işleve ihtiyaç duyduğunuzda, Aonu çalıştırmak için 7 ek montajı indirmeniz gerekir; her bir montajın doğru sürümlerini aldığınızdan emin olun. Yeni DLL Hell'e hoş geldiniz.
Ed James

14

Derleme, bir .NET uygulaması için dağıtım birimidir; bu nedenle derlemelerinizin kesimini dağıtım mimarinizle eşleştirmeyi düşünmelisiniz.

Montajlar, bazı kodlarda ayrı sürüm kontrolüne ihtiyacınız olduğunda da kullanışlıdır. Örneğin, bağımsız sürüm denetiminden yararlanabilecek ortak arabirimleriniz varsa, bu kodu bir derlemeye ayırmanız gerekir.

Ad alanlarının montajları kapsayabileceğini unutmayın. Çoğu durumda, ad alanlarını kullanarak davranışı ayırmak yeterlidir. mscorlib.dllTek bir derlemede, yalnızca ad alanı ile ayrılmış çok sayıda davranışı kapsayan bir kod içeren .NET'e bakın .

Bu konuda bir otorite istiyorsanız, aşağıdakilerden başka bir yere bakmayın:

Çerçeve Tasarımı Yönergeleri

Çerçeve Tasarım Yönergeleri: Yeniden Kullanılabilir .NET Kütüphaneleri için Kurallar, Deyimler ve Desenler (2. Baskı) Krzysztof Cwalina ve Brad Abrams.


Kitap referansı için teşekkürler. Bunu kontrol edeceğim. Dağıtım mimarisini inceleyebilir misiniz? 10 DLL dosyasını dağıtmak 1 dağıtımından nasıl farklıdır? On dosyadan birini güncelleyemediğiniz sürece, diğerlerine dokunulmaz mı?
Peter

1
@Peter: Her zaman birlikte dağıtılan 10 derlemeyi kodladıysanız , tüm kodu tek bir derlemeye koyarak sürüm denetimini ve konuşlandırmayı basitleştirmiş olabilirsiniz. 10 montaj her zaman birlikte dağıtılmazsa, ayrı montajlara sahip olmak faydalı olabilir.
Ed James
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.