2011-06-08 23 views
7

DDD'ye yeni yaşıyorum ve daha fazla bilgi almak için şimdi makaleler okuyorum. articles'dan biri etki alanı olaylarına (DE) odaklanır. Örneğin e-posta gönderme, kod parçası yürütülürken bazı kriterler yerine getirildikten sonra yükseltilen bir etki alanı olayıdır.Etki alanı tabanlı tasarım ve etki alanı olayları

Kod örneği alanı olaylarını ele bir yolunu göstermektedir ve bu paragrafın takip eder

Yukarıdaki kod size öylesine düzenli alanı çalışmayla aynı işlem içinde aynı iş parçacığı üzerinde çalışacaktır lütfen unutmayın SMTP veya web servislerini kullanmak gibi herhangi bir engelleme faaliyetinden kaçınmalıdır. Bunun yerine, bu engelleme etkinliklerini yapan başka bir şeye iletişim kurmak için tek yönlü mesaj kullanmayı tercih edin.

Sorularım

  1. bu DE taşıma genel bir sorun var mı vardır? Ya da söz konusu makaledeki çözümün sadece endişesi var mı?
  2. Etki alanı olayları işlem sırasında kaldırılırsa ve sistem bunları eşzamanlı olarak işlemezse, bunlar nasıl ele alınmalıdır?
  3. Bu olayları serileştirmeye karar verdiğimde ve zamanlayıcının (veya başka bir mekanizmanın) bunları çalıştırmasına izin verdiğimde, işlem geri alındığında ne olur? (makale olayında işlem yapılırken kod yükseltilir) kim onları iptal edecek (veritabanına kalıcı olmadıkları zaman)?

Teşekkür

cevap

8

O (bir performant şekilde yanıt vermesi gerekir herhangi sistemde Genelde DDD

aldırma genel bir sorun dönemini var mesela bir Web Sunucu, Uzun süre çalışan faaliyetleri olmalıdır tetikleme sürecine uyumsuz ele.

Bunun anlamı kuyruk.

kuyruktan öğeyi kaldırmak gerekir geri işleminizi alınıyor.

Elbette, artık kuyruktaki öğenin işlenemediği durumla başa çıkmak için ek mekanizmalara ihtiyacınız var - yani e-posta gönderilmiyor - aynı zamanda tetikleme kodunuzda buna izin vermeniz gerekir - sonraki bir işleme sahip olmak Daha önce gerçekleşmiş olan süreçteki RELY, bir noktada sorunlara neden olacaktır. Kısacası, sıraya alma mekanizmanızın kendisi işlemsel olmalı ve yeniden denemelere izin vermeli ve olayların tüm zinciri hakkında bir iş akışı olarak düşünmeniz gerekir.