«domain-driven-design» etiketlenmiş sorular

Etki alanına dayalı tasarım (DDD), uygulamayı gelişen bir modele bağlayarak karmaşık ihtiyaçlar için yazılım geliştirmek için bir yaklaşımdır.


2
DDD'de, bir Etki Alanı Hizmeti temelde yalnızca bir Cephe ve / veya Arabulucu Kalıbı mıdır?
Etki Alanına Dayalı Tasarım'da Etki Alanı Katmanı'nın birden fazla (geleneksel) hizmeti olabilir. Örneğin, Kullanıcı etki alanı için şunlara sahip olabiliriz: Kullanıcı nesnelerini farklı şekillerde oluşturan bir UserFactory Altyapı Katmanındaki Kalıcılık Hizmetleri ile etkileşime girmekten sorumlu bir UserRepository Etki Alanı Katmanı'ndaki bir UserService, yalnızca bu iki hizmet ve Altyapı Katmanı için …

2
Etki alanı / kalıcılık modeli yalıtımı genellikle bu kadar garip midir?
Etki Alanlarına Dayalı Tasarım (DDD) kavramlarına daldım ve özellikle etki alanı ve kalıcılık modelinin izolasyonu ile ilgili bazı ilkeleri garip buldum. İşte temel anlayışım: Uygulama katmanındaki bir hizmet (özellik kümesi sağlar), etki alanı nesnelerini işlevini yerine getirmesi gereken bir havuzdan ister. Bu deponun somut uygulaması, uygulandığı depolama alanından veri getirir …

6
DDD OOP ile tanıştı: Nesneye yönelik bir depo nasıl uygulanır?
Bir DDD deposunun tipik bir uygulaması çok OO'ya benzemez, örneğin bir save()yöntem: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Altyapı bölümü: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo …

2
Nesneye yönelik tasarımda neler yapılması gerektiğini nasıl öğrenebiliriz?
İlk olarak bir feragatname: Bu sorunun bu web sitesine uyup uymadığını bilmiyorum, ama yine de sadece benim için değil, yeni başlayanlar için de alakalı bir soru buluyorum. Soru buraya uyacak şekilde geliştirilebiliyorsa, lütfen int yorumlarına dikkat edin. Uygun değilse, bana da bildirin ve mümkünse bunun nerede tartışılabileceğini bana bildirin, çünkü …

2
Kalıcılık-cahil nesneler tembel yüklemeyi uygulayabilir mi?
Kalıcı Cehalet , tek bir sorumluluk ilkesinin uygulamasıdır; bu, uygulamada Etki Alanı Nesneleri'nin ( DO ) kalıcılıkla ilgili kod içermemesi gerektiği yerine yalnızca etki alanı mantığı içermesi anlamına gelir . a) Bunun alt katmanlarla (yani kalıcılık katmanlarıyla) temas eden kodun , bir iş mantığı katmanının diğer sınıflarında ( OC ) …

2
Bu tasarım uygun DDD'ye nasıl daha yakın hale getirilir?
DDD'yi günlerdir okudum ve bu örnek tasarım konusunda yardıma ihtiyacım var. DDD'nin tüm kuralları beni, etki alanı nesnelerinin uygulama katmanına yöntemler göstermesine izin verilmediğinde nasıl bir şey inşa etmem gerektiği konusunda kafamı karıştırıyor; davranışı düzenlemek için başka nerede? Depoların varlıklara enjekte edilmesine izin verilmez ve bu nedenle varlıkların kendileri devlet …

4
Şişirilmiş Alan Nesnelerinden Kaçınmak
Bir DDD yaklaşımı kullanarak şişirilmiş Hizmet katmanımızdan Alan katmanımıza veri taşımaya çalışıyoruz. Şu anda hizmetlerimizde birçok yere yayılmış ve mirastan faydalanmayan birçok iş mantığımız var. Ticaretimizin çoğunun odak noktası olan merkezi bir Domain sınıfımız var. Trade nesnesi kendini nasıl fiyatlandıracağını, riski nasıl tahmin edeceğini, kendini nasıl doğrulayabileceğini vb. Bilecektir. Sonra …

5
Modern ORM'ler (EF, nHibernate) için Havuz Kalıbı aşırı doldurulmuşsa, daha iyi bir soyutlama nedir?
Yakın zamanda, güçlü bir ORM ile Entity Framework gibi depo modelinin kullanılmasına karşı birçok argümanı okudum, çünkü Birim benzeri işlevsellik ile birlikte depo benzeri işlevleri de içeriyor. Kalıbı birim testi gibi bir durum için kullanmaya karşı başka bir argüman, daha genel uygulamalar IQueryable'dan yararlanacağı için havuz paterninin sızdıran bir soyutlama …

2
CQRS + Olay Sağlama: (doğru mu?) Komutlar genellikle noktadan noktaya iletilirken, Etki Alanı Olayları pub / sub üzerinden iletilir mi?
Temelde kafamı CQRS ve ilgili kavramların etrafına sarmaya çalışıyorum . CQRS, Mesajlaşma ve Etkinlik Kaynaklandırma'yı zorunlu olarak içermemesine rağmen, iyi bir kombinasyon gibi görünmektedir (bu kavramları birleştiren birçok örnek / blog yazısı ile görülebileceği gibi) Bir şey için durum değişikliği için bir kullanım durumu göz önüne alındığında (SO ile ilgili …

2
DDD'deki istisnalar
DDD öğreniyorum ve bazı durumlarda istisnalar atmayı düşünüyorum. Bir nesnenin kötü bir duruma giremediğini anlıyorum, burada istisnalar iyi, ancak birçok örnekte istisnalar da var, örneğin veritabanında mevcut e-postaya sahip yeni kullanıcı eklemeye çalışıyorsak. public function doIt(UserData $userData) { $user = $this->userRepository->byEmail($userData->email()); if ($user) { throw new UserAlreadyExistsException(); } $this->userRepository->add( new …

5
Varlık Çerçevesi ile Etki Alanında Tasarımın Tuzakları
İncelediğim DDD hakkında birçok ders çoğunlukla teoriyi kapsıyor. Hepsinin ilkel kod örnekleri vardır (Çoğul görüş ve benzeri). Web'de ayrıca birkaç kişi tarafından DDD ile EF'yi kapsayan öğreticiler oluşturma girişimleri de vardır. Onları kısaca incelemeye başlarsanız - birbirlerinden çok farklı olduklarını hemen fark edersiniz. Bazı insanlar uygulamayı asgari düzeyde tutmayı ve …


1
* Ekle / Oluştur komutları CQRS + Olay Kaynağı mimarisinde nasıl ele alınmalıdır?
İlk uygulamamı Olay Kaynağı ile birlikte CQRS kalıbını kullanarak uygulamak istiyorum. Agrega köklerinin oluşturulmasının nasıl düzgün bir şekilde ele alınması gerektiğini merak ediyorum. Birisinin CreateItem komutu gönderdiğini varsayalım. Nasıl ele alınmalı? ItemCreated etkinliği nerede saklanmalıdır? Yeni bir öğenin ilk etkinliği olarak? Yoksa tüm öğeleri bir araya getiren bir tür ItemList …

1
Modüler servis uygulaması tasarlama
Doğası gereği çok modüler olan ve gelecekteki kolay genişleme, endişelerin net bir şekilde ayrılması, modülle lisanslama vb. İçin destek sağlayan bir yapı oluşturmak isteyen yeni bir çözüm tasarlamaya çalışıyorum. modüler veya kompozit uygulamalar hakkında web'de bulunan, Silverlight, WPF, vb. odaklı. Benim durumumda, çeşitli UI projelerinde çalışan diğer geliştiriciler tarafından tüketilecek …

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.