Tasarım Nerede nesneleri kullanarak kayıtlı olması Windsor
Başvurum aşağıdaki bileşenleri olacak
- DataAccess
- DataAccess.Test
- İş
- İş.Test
- Uygulama
Bu katmanlar birlikte tutkal IoC olarak Castle Windsor kullanmak umuyordum ama yapıştırma tasarımı hakkında biraz şüpheliyim.
Benim sorum Windsor içine nesneleri kaydetme için sorumlu olmalıdır kim? Aklımda bir iki şey var;
- Her katman kendi nesneleri kaydedebilirsiniz. BL test etmek için, test aşamasındaki bu DAL için alay derslere kayıt olabilir.
- Her katman bağımlılıkları nesne, örneğin iş katmanı kayıtları veri Erişim Katmanı bileşenleri kayıt olabilirsiniz. BL test etmek için, test aşamasındaki "gerçek" DAL ve sahte nesneleri nesne kaydedin. bu kaldırmak için olurdu
- Uygulama (veya test uygulaması) bağımlılıkları tüm nesneleri kaydeder.
Birileri bazı fikirler ve profesyoneller için farklı yolları ile/eksileri ile bana yardımcı olabilir misiniz? Örnek bağlantılar bu şekilde kullanan Windsor Kalesi çok faydalı olacak projeler.
CEVAP
Genel olarak, bir uygulamanın tüm bileşenleri mümkün olduğunca geç, maksimum verme imkanı sağlayan ve modülleri gevşek mümkün birleştiğinde olarak çünkü oluşturulmalıdır.
Uygulamada, bu uygulama kökündeki konteyner yapılandırmanız gerektiği anlamına gelir.
- Bir masaüstü uygulamasında, şu Ana yöntem (veya yakın) olacak
- (MVC dahil) ASP.NET bir uygulamada, Genel olacaktır.asax
- XML, bir ServiceHostFactory olacaktır
- vb.
Konteyner sadece çalışan bir uygulama içine modülleri oluşturan motordur. Prensip olarak, el (bu denir . kod yazabilirsiniz ^em>Zavallı Adam Dİ), ama Windsor. gibi Dİ bir Konteyner kullanmak çok daha kolaydır sadece
Böyle birKompozisyon Kökideal uygulamanın kök kod tek parça, uygulama sözde . bir yapım olacak ^em>Mütevazı Yürütülebilir(mükemmel bir dönem xUnit Test Patterns) Bu birim kendi içinde teste ihtiyacı yok.
Testlerinizi konteyner tüm gerekli nesneleri ve modüller birleştirilebilir olması gerektiği gibi, ve doğrudan tedarik edebilirsinizTest İki Katına Çıkaronlara ünite testi. En iyisi modülleri tüm konteyner-agnostik olmak için tasarım yapabilirsiniz.
Ayrıca, Windsor, özellikle bileşen saklanması gerekir yükleyiciler (tür IWindsorInstaller uygulama içinde kayıt mantığı daha fazla bilgi için the documentation Bakın

Kullanarak " koyuyorsun;sayfa özel...
Python: sınıf baskı kullanarak bir sın...
Güncelleme tüm nesneleri bir koleksiyo...
JSON nesneleri Jackson kullanarak görm...
Bir liste Lambda/kullanarak sıralama E...