2012-08-31 19 views
6

Bir Toplantı Nesnesi vardır:Denetim alanları ne zaman güncellenir? DDD

Meeting{id, name, time, CreatedBy, UpdatedBy}

ve

MeetingAssignee{id, MeetingID, EmployeeId, CreatedBy, UpdatedBy)

Toplantısı, Agrega kök olarak, bir yöntem AssignEmployee vardır.

Geçerli kullanıcıda AssignEmployee olarak adlandırdığım Toplantı nesnesine geçmek üzereydim, böylece denetim alanlarını buna göre güncelleyebilir.

Fakat bu doğru görünmüyor - değil mi? Açıkçası, denetim alanlarını kamuya açık tutabilir ve daha sonra belki de hizmet seviyesinde değiştirebilirim.

Bu alanların güncellenmesi için herkesin tercih ettiği yöntem nedir?

Lütfen dikkat: Nhibernate kullanmıyoruz, ancak otomatik olarak hiçbir yerinde otomatik olmayan bir ORM kullanıyoruz.

Teşekkürler.

cevap

4

Denetim ve günlüğe kaydetme, genellikle uygulamada her yerde ihtiyaç duyulduğu ve her ikisinin de gereksinimleri olduğu için eğlencelidir (günlüğe kaydedildikten sonra , OP'lerden bir gereksinimdir). denetim şart olmalıdır Modelinizin çok bilmeden

, ve o zamandan beri, ben AssignEmployee için geçerli kullanıcı geçmesi ve bunun yerine AuditBlahBlahBlah diyor, ben bir olay (belki MeetingUpdated veya AssigneeAdded eklersiniz orada bir çizgi sahip olacaktır .. iyi bir isim bulacaksınız) ve bu olay denetim yapan sınıfa gönderilir. Bu şekilde Toplantı sınıfının denetleme konusunda hiçbir fikri yoktur ve denetleme amacıyla iş etkinliklerini gönderir (ki benim görüşüme göre, çok DDDish).

ben (umarım, yeni bir şeyler öğrenebilir!) Başkalarının diyebilirsiniz acaba

+0

Bu tür şeyler için son zamanlarda Etkinlik Toplayıcısı veya Olay Kaynağı kalıpları kullanmayı merak ettim. –

+0

Olayları seviyorum, OO'lar ve mesaj gönderme kavramı ile el ele git, 'yöntem çağırma' yerine (hatta prosedürel sesler). Bu arada, ben java geliştiriciyim ve .net :(, gibi eğlencelere sahip olmanın lüksüne sahip değiliz! Ekleyebilirim: olayları kullanarak tüm günlüğünüzü ve denetlemenizi yapmazsanız yapın - kitap Büyüyen Nesneye Yönelik Sistemler, Testlerle Yönlendirilmiş, bu konuda çok iyi bir örnek var: – Augusto

+0

Bu kitabı kontrol edeceğim, olayları kullanarak tüm günlüğe kaydetme ve denetleme, yakın zamana kadar gerçekten düşünmediğim bir şeydi. Bazı konu hakkında okuma. –

0

Muhtemelen servis katmanından denetim hizmetine çağrı yapabilir denetim hizmeti ile, devam eden veya varlıkları güncellerken Denetim işlevselliği gerektiren herhangi bir hizmete enjekte edilmek ve yeni oluşturulan varlıkları olabildiğince çabuk sürdürmek.

Denetimin nasıl ve ne zaman denetleneceğini öğrenmek zor olabilir, özellikle de varlıklarınız sistemde var olan varlıklar olarak varlığını sürdürmeden önce var olacaklar. Sürdürülmeden önce bir süre var olsalar bile, belki de kendi içsel denetim verilerini oluşturabilir, onların yaratımlarının ayrıntılarını içerir ve sonra varlıklar kalıcı olarak devam ettiğinde ısrar edebilirdiniz. Veya, üzerinde oluşturulmuş, üzerinde oluşturulmuş, değiştirilmiş, değiştirilmiş, vb. Verileri özel alan olarak var ve varlık kalıcı olduğunda bir denetim günlüğüne yazacak mı?

Satış fiyatlarının ne olacağını merak ediyorum.

4

Etki alanı olaylarını kullanmayı düşünün.

Etki alanı modelinizde ilginç olan her şey, yalnızca gerçekleşmiş olanların sesini duyurarak bir etkinlik ortaya çıkarmalıdır. Dışarıdan, sadece onları db veya başka bir yere dökülen log işleyicisini ekleyin.

Bu şekilde, etki alanınızı bir çeşit IAuditService ile karıştırmanız gerekmez.

Daha da iyisi - etki alanı modeli, olayları kendi içinde iletişim kurmanın bir yolu olarak kullanabilir.
Bunun neden iyi bir fikir olduğunu göstermek için - sabah, gün doğumu ve çiçeklerin etki alanı modelini tanımladığımızı gözünüzde canlandırın.

Açmaları gereken tüm çiçekleri anlatmak güneşin sorumluluğu mu? Pek sayılmaz. Güneş sadece parlak bir şekilde parlamaya ihtiyaç duyar (bir olayı gündeme getirmek için), ışık yeryüzüne inmek zorundadır (olayları mümkün kılan bir tür altyapı olmalıdır) ve çiçekler ışık alırken kendilerine tepki göstermelidir (diğer alan modelleri olayları ele almalıdır).

Başka bir benzerlik - trafik ışıklarının rengini görmek için sürücünün sorumluluğundadır.

İlgili konular