Bu nasıl bir anlam ifade ediyor?
Kısa cevap: değil .
Daha uzun cevap: Bir etki alanı modeli geliştirmek için kullanılan ağır kalıplar, çözümünüzün yalnızca bir veritabanı olan kısımları için geçerli değildir.
Udi Dahan'ın bunu açıklığa kavuşturabilecek ilginç bir gözlemi vardı
Dahan, bir hizmetin hem bir çeşit işlevselliğe hem de bazı verilere sahip olması gerektiğini düşünmektedir. Verileri yoksa, sadece bir işlevdir. Tüm yaptığı veriler üzerinde CRUD işlemleri gerçekleştiriyorsa, veritabanıdır.
Sonuçta, etki alanı modelinin amacı, verilerdeki tüm güncellemelerin mevcut işletme değişmezini korumasını sağlamaktır. Veya başka bir deyişle, kayıt sistemi olarak görev yapan veritabanının doğru olmasını sağlamak etki alanı modelinden sorumludur .
Bir CRUD sistemi ile uğraşırken, genellikle veriler için kayıt sistemi değilsinizdir. Gerçek dünya kaydının kitaptır ve veritabanı gerçek dünyanın sadece yerel olarak önbelleğe temsilidir.
Örneğin, bir e-posta adresi veya devlet tarafından verilen bir kimlik numarası gibi bir kullanıcı profilinde görünen bilgilerin çoğu, işletmenizin dışında yaşayan bir hakikat kaynağına sahiptir - başkasının e-posta adreslerini atayan ve iptal eden bir posta yöneticisi değildir. uygulamanız. SSN'leri uygulayan hükümet, uygulamanız değil.
Yani normalde size dış dünyadan gelen veriler üzerinde herhangi bir alan doğrulaması yapmayacaksınız ; verilerin iyi biçimlendirildiğinden ve düzgün bir şekilde dezenfekte edildiğinden emin olmak için kontroller yapmış olabilirsiniz ; ancak bu sizin verileriniz değildir - alan adınızın modeli veto almaz.
Katmanları kullanan bir DDD yaklaşımında, CRUD işlemleri etki alanı katmanından geçer gibi görünüyor. ama en azından bizim durumumuzda, bu mantıklı görünmüyor.
Veritabanının kayıt defteri olduğu durum için bu doğru .
Ouarzy böyle koydu .
Birçok eski kod üzerinde çalışarak, alanın içinde ve dışında neler olduğunu belirlemek için yaygın hatalar gözlemliyorum.
Bir uygulama yalnızca veri modeli etrafında iş mantığı yoksa CRUD olarak düşünülebilir. Bu (nadir) durumda bile, veri modeliniz etki alanı modeliniz değildir. Bu sadece, hiçbir iş mantığı dahil olmadığından, onu yönetmek için herhangi bir soyutlamaya ihtiyaç duymadığımız anlamına gelir ve bu nedenle etki alanı modelimiz yoktur.
Etki alanının içindeki verileri yönetmek için etki alanı modelini kullanırız; alan adının dışındaki veriler zaten başka bir yerde yönetiliyor; yalnızca bir kopyasını önbelleğe alıyoruz.
Greg Young depo sistemlerini , kayıt defterinin başka bir yerde (yani depo katı) olduğu çözümlerin birincil bir örneği olarak kullanır . Açıkladığı uygulama sizinki gibidir - depodan alınan mesajları yakalamak için bir mantıksal veritabanı ve daha sonra bu mesajların analizinden çıkarılan sonuçları önbelleğe alan ayrı bir mantıksal veritabanı.
Belki burada iki sınırlı bağlamımız var? Her biri için farklı bir modelinvestment account
Olabilir. Sınırlı bir bağlam olarak etiketlemek konusunda isteksiz olurum, çünkü diğer bagajların beraberinde ne getirdiği açık değildir. İki bağlamınız olabilir, henüz almamış olduğunuz her yerde bulunan dilde küçük farklılıklar olan bir bağlam olabilir.
Olası turnusol testi: Bu spektrumu karşılamak için kaç alan adı uzmanına veya yalnızca bileşenler hakkında farklı şekillerde konuşan bir alan adı uzmanına ihtiyacınız var. Temel olarak, Conway yasasını geriye doğru çalışarak kaç sınırlı bağlamınız olduğunu tahmin edebilirsiniz.
Sınırlı bağlamların hizmetlerle hizalandığını düşünüyorsanız, daha kolay olabilir: bu iki işlevselliği bağımsız olarak dağıtabilmeniz gerekir mi? Evet, iki sınırlı bağlam önerir; ancak senkronize tutulmaları gerekiyorsa, belki de sadece bir tanesidir.