2010-12-17 13 views
5

Yeniden tasarlandığım eski bir uygulamam var, çünkü bu noktada bir "çamur topu" dediğimiz şey, hiçbir katman veya SOC yok. Ekip, modüler bir şekilde çalışmak için kullanılır, yani "Görev Planlama" (askeri) 'i yöneten bir modül üzerinde çalışan "eğitim", "İş Olanakları" üzerinde çalışan bir ekip vardır. Bu alanları, hizmet portalı, tek veri tabanı ve hizmet verdiğimiz birkaç harici uygulama olarak müşterilerimize açıklayan bir web sitemiz var..Net'de bir Paylaşılan Çekirdek (DDD) nasıl uygulanır

Etki alanının nasıl düzgün bölümleneceği dışında çoğu katmanın yeniden tasarlanmasını yapıyorum (Bu noktada kullandığımız noktadan bahsetmem gerekir. Net 4.0). Asıl düşüncem, bunların çalışma şekli nedeniyle sınırlı bağlamlar olduğu, farklı kullanıcı kümelerine sahip oldukları sanılıyordu, ancak şimdi bu siteyi kullanan insanların bir çok alanı birden kullanabileceğine inanıyorum. Elbette, bazı gruplar SADECE sadece bir hizmet kullanmaktadır, ancak birçoğu çok kullanmaktadır. Sitenin amacı "üyeler" in one-stop yönetimi. Modüller arasında, modüle özgü sınıflarımız var ve sonra bazı paylaşılan sınıflarımız var, örneğin, bir üye kavramı tüm modüller tarafından biliniyor ve kullanılıyor. Üye aslında çekirdek bir kavramdır, site tüm bu alanlardaki üyenin bilgilerini bir kerede takip ederek değer katar. Bu temelde, sistemde birbiriyle yakından ilişkili fakat ayrı alanlar ve paylaşılan bir alan. Umarım sahip olduğum soruya cevap verecek kadar açıktır.

Genel bir depo arabirimi gibi ortak varlıklar ve paylaşılan etki alanı arabirimleri için, sınırlı bağlamlar olmasalar bile paylaşılan bir çekirdeğim olabileceğini düşünüyorum. Tüm ortak kodları (genel depo, çekirdek etki alanı modeli, paylaşılan çekirdek vb) aynı ad alanına veya ad alanı hiyerarşisine koymak akıllıca olur ve bu ad alanını kendi derlemesinde izole etmem gerekir mi? Aynı şekilde, her bir alanı ("eğitim", "Fırsatlar" ...) kendi meclislerine dağıtmak mı yoksa hepsini bir mecliste toplamak ve mantıksal olarak ad alanıyla ayırmak daha iyi olacaktır. Bir yandan, fiziksel olarak bölümlenmiş modülleri görmek biraz daha kolay, ama bir sorunu çözmek için iki modülün birlikte çalışması gereken durumlar hakkında endişeleniyorum. Nasıl iletişim kurarlar ve şeyleri asiklik halde tutarlar (tahmin ettiğim uygulama katmanındaki hizmetler aracılığıyla). böylece

(seçeneklerin özet):

Domain.Model (dll) - Domain.Model.Core - Kernel (paylaşılan kişiler ve çekirdek alanı modeli) - RepositoryFramework - vs. .. - Domain.Model.Training - Domain.Model.Opportunities ...

veya

Domain.Model.Core

.210

Domain.Model.Training (dll)

Domain.Model.Opportunities (dll) , (eğitim yapmak ve fırsatları birlikte çalışmak nasıl?)

zaman için çok teşekkür ederim

cevap

3

Fiziksel düzen durumunda, her şeyi (tüm alan modeli) bir meclise koyardım. Ayrı meclisleri kullanmak, işleri karmaşıklaştıran ve derleme süresini artırırken size herhangi bir fayda sağlamaz. Öte yandan, bazı geliştiricilerin uygun olmayan sınıfları kullanması riski varsa (diğer modül/içeriklere ait olanlar), mantığı ortak birime (çekirdek alan, paylaşılan çekirdek) bölmek akıllıca olabilir ve Her modül/içerik için özel montajlar.

Mantıksal düzen durumunda (ad alanları) her bir parçayı ayrı bir ad alanı (örneğin DomainModel.Core, DomainModel.Training) veririm. Bazen bir adım daha ileri gitmek ve her bir toplama alanını kendi isim alanına koymak akıllıcadır. Ayrı bir 'kullanma' direktifini gerektirdiğinden, agrega sınırlarının yanlışlıkla geçilmesini önler.

Bunun mantıklı olmasını umuyorum.

+0

Harika, efendim! – user546077

İlgili konular