Bununla kendim mücadele ettim. Bir DTO'nun sunumda kullanılmasının mantıklı olduğu durumlar vardır. Diyelim ki, sistemimdeki Şirketlerin bir düşüşünü göstermek istediğimi ve değeri bağlamak için onların kimliğine ihtiyacım olduğunu varsayalım.
Aboneliklere atıfta bulunabilecek veya başka ne bilen bir CompanyObject yüklemek yerine, adı ve kimliği ile bir DTO gönderebilirim. Bu iyi bir kullanım IMHO'dur.
Şimdi başka bir örnek alalım. Bir Tahmini temsil eden bir nesnem var, bu tahmin işçilik, ekipman vb. Olabilir, tüm bu öğeleri alan ve bunları toplayan kullanıcı tarafından tanımlanan birçok hesaplamaya sahip olabilir (Her tahmin farklı türlerle farklı olabilir hesaplamalar). Neden bu nesneyi iki kez modellemeliyim? Neden kullanıcı arayüzümün hesaplamaları listelemesini ve görüntülemesini sağlayamıyorum?
Etki alanı katmanımı kullanıcı arabirimimden izole etmek için genellikle DTO kullanmıyorum. Etki alanı katmanımı kontrolümün dışındaki bir sınırdan izole etmek için kullanıyorum. Birisinin iş nesnesine navigasyon bilgilerini koyacağı fikri saçmadır, iş nesnenizi kirletmeyin.
Birinin iş nesnesine doğrulama koyacağı fikri? Bunun iyi bir şey olduğunu söylüyorum. Kullanıcı arayüzünüz, iş nesnelerinizi doğrulamaktan tek başına sorumlu olmamalıdır. İşiniz tabakası GEREKİR kendi doğrulama yapmak.
UI oluşturma kodunu neden bir busienss nesnesine koyarsınız? Benim durumumda, UI kodunu UI'den ayrı olarak oluşturan ayrı nesnelerim var. İş nesnelerimi Xml'ye dönüştüren ayrı nesnelerim var, bu tür kirlenmeyi önlemek için katmanlarınızı ayırmanız gerektiği fikri bana çok yabancı çünkü neden HTML oluşturma kodunu bir iş nesnesine bile koyasınız ...
Düzenle
Biraz daha düşündüğüm gibi, UI bilgisinin etki alanı katmanına ait olabileceği durumlar var. Ve bu, etki alanı katmanı dediğiniz şeyi bulutlandırabilir, ancak hem kullanıcı arayüzü görünümü ve hissi hem de işlevsel iş akışı çok farklı davranışa sahip olan çok kiracılı bir uygulama üzerinde çalıştım. Çeşitli faktörlere bağlı olarak. Bu durumda, kiracıları ve yapılandırmalarını temsil eden bir etki alanı modelimiz vardı. Yapılandırmaları UI bilgilerini içeriyordu (örneğin, genel alanlar için etiketler).
Nesnelerimi kalıcı hale getirmek için tasarlamam gerekirse, nesneleri de kopyalamam gerekir mi? Yeni bir alan eklemek istiyorsanız, şimdi ekleyebileceğiniz iki yeriniz olduğunu unutmayın. Belki de DDD kullanıyorsanız, tüm kalıcı varlıklar etki alanı nesneleri mi? Örneğimde olduklarını biliyorum.