2012-01-16 34 views
6

Bir ASP.MVC uygulamasına bir giriş noktası sağlayan bir DLL var. Bu Primary.DLL diyelim. Primary.DLL'de, LINQ-to-SQL veri içeriği ve tanımlanan diğer sınıflar vardır. Application_Start(), Assembly.Load()'da bir yerlerde Secondary.DLL yüklenmelidir. Primary.DLL'in proje dosyasında İkincil başvurulmaz. Ancak, birincil dosya, Ikincil etki alanının proje dosyasında başvuruda bulunur, çünkü LINQ-to-SQL veri içeriği ve yukarıda belirtilen diğer sınıflar İkincil'de kullanılır.Dairesel DLL bağımlılıkları .NET'te

Dairesel bağımlılık sorunu yaratır mı? Bu tarz bir tasarımla ilgili herhangi bir sorun olur mu?

+1

Belirli bir sorunla mı karşılaşıyorsunuz? –

+0

Tesadüfen, eğer bir şekilde derleyiciyi onları üretmeye aldatmış olursanız, dairesel bağımlılıklar işe yarar çünkü bu bir problem olamaz. – Joshua

cevap

1

Bunu her zaman müşteriye özgü özelleştirme DLL'leriyle yapıyoruz. Aynı işlevleri web uygulamalarında, hizmetlerde ve masaüstü uygulamalarında kullanıyoruz.

Müşteri DLL'leri, temel sınıf DLL'lerine başvurur, böylece çeşitli sınıflardan miras alabilir ve arabirimleri uygulayabilirler. Bunu yapmak için, temel dll'ye bir başvuruları olmalıdır.

Uygulama başlangıcında (global.asax Application_Start veya bir öğenin başlatma yordamında), keşfedilen özelleştirme DLL'lerini Assembly.Load aracılığıyla yüklüyoruz ve kesinlikle bir çapraz referans oluşturmuyor.

+0

Bu, yapmaya çalıştığım tam kişiselleştirmedir. "Sözleşme" sınıfları ve arayüzleri iyi tanımlanmıştır, ancak uygulama yıldan yıla değişecektir. Gelecekteki DLL'ler çalışma zamanında bulunur, ancak bunları derlemek (derlemek) için, temel DLL'de tanımlanan bazı sınıflara ve arabirimlere başvurmaları gerekir. –

1

Montajlar, bir AppDomain'e yeniden yüklenmez ve Application_Start içine sadece Secondary.dll yüklenir, bu yüzden herhangi bir soruna neden olmamalı ve aynı zamanda dairesel bağımlılığın herhangi bir tezahürüne neden olmaz.

1

Dairesel bağımlılık sorunu oluşturmaz, ancak bu harika bir tasarım olmayabilir. Dairesel bağımlılıklar, iki veya daha fazla proje arasında gerçek bir referans gerektirir.