8

DDD'de temel kavramlardan biri, Varlıkları (veya Toplama Kökleri) almanıza ve bunları güncelleştirildikten sonra geri kaydetmenize olanak veren Depolanstır.Tüm "toplu" işlemler DDD'ye aittir?

Birimlerle bazı 'toplu' işlemler gerçekleştirmemiz gerektiğini varsayalım ve varlıkların sayısı bunları belleğe almak için kesinlikle imkansız hale getirir. Yani İşlem sadece veritabanında gerçekleştirilebilir.

Böyle 'toplu' işlem için yer neresidir? Depoda bir yöntem mi olmalı? Veritabanına özel işlemle deponun soyutlanması "sızıntı" olmaz mı? İş operasyonunu Kurumdan Depoya taşımayacak mı?

+0

Bir dizi kayıtta büyük güncellemeler yapmayı mı düşünüyorsunuz? (Diyelim ki, tek bir güncelleme bildirimi ile milyonlarca fiyat hesaplıyoruz.) –

cevap

5

Servis olması gerektiğini düşünüyorum. Evans, kitabında, oraya ait olmadığını düşündüğünüz, çünkü içeride bir ServiceFoo sınıfı yaptığını düşündüğünüz için, bir sınıf içinde "kötü kokan" bir yöntemin konup konmayacağından şüphe duyduğunuzda kitabında önerir.

+0

9 yıl oldu, umarım birisi bu takip sorusuna cevap vermede yardımcı olabilir. Hizmeti uygularken, tüm toplama kümesini kapatır ve sonradan depoya kaydeder/ekler misiniz? – Fajarmf

4
void DoLongInvolvedTask(); 

Toplu işlerinizi depoda yöntem olarak kullanmakla ilgili yanlış bir şey göremiyorum. Hiçbir şey sızdırmıyorlar. Toplu işlem yapmak, herhangi bir veritabanına özgü işlem anlamına gelmez; yönteminiz, ReBuildMSSQLIndexesOnMyBigTable() gibi bir şey değilse.

1

Etki alanı nesnesinde kaydetme, geri alma mantığınız olmamalıdır (Etki alanı modelini kullandığınızı varsayarak). Bu Deponun sorumluluğundadır. Bu nedenle, toplu yönteminiz depoya ait.

ORM kullanıyorsanız, depolarınız veritabanına bağlı olmayacaktır. ORM katmanına tüm istekleri ileteceklerdi.

Kendi eşleştiricinizi yazıyorsanız, depo, varlık için eşleme isteğinde bulunur. Ve bence bu bağlantı tamam.

2

İhtiyacınız olan alana etki eden tasarımda service olarak adlandırılır. Hizmetler prosedürel görevleri modellemek için kullanılır. Tanımladığınız gibi bir toplu güncelleme işlemi, bir hizmet için ideal bir aday olacaktır.

DÜZENLEME: Özgün bağlantı kayboldu. DDD terimlerinin sözlüğünü burada bulabilirsiniz, ancak orijinal sayfa kadar kullanışlı değil. http://dddcommunity.org/resources/ddd_terms/

+0

DDD hizmetinin bağlantısı ölü görünüyor (sayfa/alandan içerik yok) – jasper

İlgili konular