SORU
17 NİSAN 2011, Pazar


DDD - Varlıklar bu kural't doğrudan erişim Depoları

Etki alanı Odaklı Tasarım, Varlıklar Depoları doğrudan erişim değil o agreement lots gibi görünüyor.

Bu Eric Evans geliyor Domain Driven Design kitap mıydı, yoksa başka bir yerden mi geldi?

Nerede bunun arkasındaki mantık için iyi bir açıklama var mı?

edit: açıklık: ondan bahsetmiyorum klasik OO pratik ayıran veri erişimi kapalı ayrı bir katmanı iş mantığı kastettiğim şey, belirli bir düzen sayede, DDD, bir Varlık değildir sözde konuşmak için veri Erişim Katmanı (yani onlar ne tutun referanslar için Depo nesneler)

güncelleme: cevabı en yakın görünüyordu çünkü ödül BacceSR verdim, ama hala bu konuda bilgisiz ben güzelim. Böyle önemli bir prensip, bir yerde, mutlaka online hakkında bazı iyi haberler olmalı?

güncelleme: Mart 2013, upvotes bu soruyu ima çok ilgi bu ve bile var, bir sürü cevap, bence yine de oda için daha fazla eğer insanların fikirleri hakkında bu.

CEVAP
22 NİSAN 2011, Cuma


Bir karışıklık burada biraz var. Depoları erişim toplu kökleri. Toplam kökleri varlıklardır. Bunun nedeni kaygı ve iyi katman ayırma. Bu küçük projeler üzerinde mantıklı değil, ama eğer büyük bir takımdasın eğer söylemek istediğiniz, "Ürün bir ürün erişimi Depo. Ürün ProductCatalog nesnesine dahil varlıklar topluluğu için toplu bir kök. Eğer ProductCatalog güncellemek istiyorsanız ProductRepository geçmesi gerekir."

Şey güncelleme nereden iş mantığı çok açık var bu şekilde ayrılması. Yok mu bir çocuk kim kapatarak kendini ve yazar bütün bu program bu mu bütün bu karmaşık işler için ürün kataloğu ve gelince entegre etme yönündeki proje, oturuyorsun orada bakmak ve fark hepsine sahip olmak ekti. Ayrıca takıma katılması, yeni özellikler eklemek, nereye biliyorlar ve program yapısı nasıl anlamına gelir.

Ama bekleyin! Depo da Depo Desen olarak kalıcılık katmanı ifade eder. Daha iyi bir dünya Eric Evans' Depo ve Depo Desen biraz örtüşme eğilimindedir çünkü ayrı bir isim olurdu. Veri erişilen diğer yollar ile kontrast var havuz desen elde etmek için, bir servis otobüsü veya olay modeli sistemi ile. Bu seviyeye geldiğinde genellikle, Eric Evans' Depo tanımlı yol kenarında gider ve sınırlı bir bağlam hakkında konuşmaya başlıyorsun. Her sınırlı bağlam aslında kendi uygulamasıdır. Ürün kataloğu içine şeyler almak için sofistike bir onay sistemi olabilir. Özgün tasarım ürünü merkezi parçası oldu ama bu sınırlı çerçevede ürün kataloğu. Yine de ürün bilgi erişimi ve bir servis otobüsü ile ürün güncelleme olabilir, ama sınırlı bağlamı dışında bir ürün kataloğu tamamen farklı bir şey anlamına gelebilir olduğunu bilmeniz gerekir.

Orijinal soruya dönelim. Eğer bir varlık içinde bir depo erişmek varlık gerçekten iş bir varlık ancak bir hizmet katmanı içinde bulunması gereken bir şey muhtemelen değil demektir. Bu varlıklar iş nesnesi ve bir DSL (belirli bir dil alanı) mümkün olduğu gibi fazla olması ile kendilerini ilgilendiriyor çünkü. Sadece bu katmanda iş bilgileri var. Eğer bir performans sorunu sorun giderme, iş bilgi burada olması gerektiğinden sadece başka bir yere bakmak bileceksiniz. Eğer aniden, uygulama sorunları ise, çok zor ve gerçekten DDD kalbi olan bir uygulama, genişletmek ve korumak için yapıyorsun: sürdürülebilir yazılım.

Yanıt 1 Yorum: Doğru, güzel soru. Çok değiltümdoğrulama etki alanı katman oluşur. Keskin bir nitelik "" bu ne isterseniz onu yapar. DomainSignature vardır Sebat farkında, ama bir nitelik olmaktan etki alanı katman temiz tutar. Bir varlık yinelenen, örnek olarak aynı ada sahip olmadığını garanti eder.

Ama daha karmaşık geçerlilik kuralları hakkında konuşun. Hadi Amazon.com sen söyle. Hiç süresi dolmuş bir kredi kartı ile bir şey sipariş ettin mi? Kart bilgilendirmediğim ve bir şey satın aldım. Sipariş kabul ve UI her şey çok güzel olduğunu söyledi. Yaklaşık 15 dakika sonra, e-posta benim için bir sorun yok. " diyerek alacağım, kredi kartım geçersiz. Burada neler oluyor, ideal olarak, etki alanı katman bazı düzenli ifade doğrulama var. Bu doğru bir kredi kartı numarası mı? Evet, bu düzen devam etmektedir. Ancak, harici bir hizmet eğer ödeme kredi kartı ile yapılabilir, görmek için sorgulanan olduğu uygulama görevleri katman, ek bir doğrulama yok. Yoksa, aslında hiçbir şey gemi değil, bu sipariş askıya alma ve müşteri için bekleyin. Bu bir hizmet katmanı içinde yer almalıdır.

Servis katmanında doğrulama nesneleri oluşturmak için korkarım, bunu yapmaolabilirerişim depoları. Sadece etki alanı katman dışarı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • newport83

    newport83

    19 HAZİRAN 2006
  • ravinderosahn

    ravinderosah

    20 Temmuz 2009