Sunum VS DDD Uygulama katmanı


9

Etki Alanına Dayalı Tasarımda Sunum ve Uygulama katmanı arasında net bir çizgi çizmekte sorun yaşıyorum.

Denetleyiciler, Görünümler, Düzenler, Javascript ve CSS dosyaları nereye gitmelidir?

Uygulamada mı yoksa Sunum katmanında mı?

Ve hepsi aynı katmanda bir araya gelirlerse, diğerini ne içerir? Boş mu?

Yanıtlar:


7

Birisinin "Uygulama Katmanı" ve "Sunum Katmanı" oluşturup adlandırması, uygulamanızın bunlara sahip olması gerektiği anlamına gelmez. Birlikte grupladığınız önemli miktarda kod oluşturduktan SONRA katmanlar oluşturmalısınız ve geliştiriciler arasındaki iletişim ve kodun netliği için bu grubu adlandırmak istersiniz.

DDD açısından. Uygulama Katmanı, Etki Alanı katmanı olmayan her şeydir. Hangi uygulama mantığı, sunum ve uygulama hizmetleri içerir.


2
Teşekkür ederim, gerçekten benim durumum için Uygulama ve Sunumu ayırmanın yararsız olduğunu fark ettiniz. Önce basitlik!
Matthieu Napoli

DDD'nin sunum katmanında kullanıcı arayüzü yerine REST API'si varsa, REST API'si bir uygulama veya sunu katmanı olur. Şimdi kafam karıştı, çünkü REST API'nin bir sunum katmanı olduğundan emindim ..
Dario Granich

8
Aslında DDD , yukarıdan aşağıya aşağıdaki sırayla dört katman belirler: Sunum, Uygulama, Etki Alanı, Altyapı. Yani, Uygulama katmanı yok değil "sunum" sayılabilir. Ayrıca, önemli miktarda kod yazılmadan önce katmanlara karar vermek her zaman iyi bir fikirdir , çünkü sadece kodu birlikte gruplamakla ilgili değil, aynı zamanda derleme zamanı bağımlılıklarının yönünü kısıtlamakla da ilgilidir.
Rogério

11

Uygulama katmanı ile sunum katmanı arasında DDD bakış açısından büyük bir fark vardır.

DDD, DDD yapı taşlarını ve sınırlı bağlamlar, Ubiquitous dili vb.

Başarılı bir DDD uygulamasının uygulanmasında mimari büyük rol oynamaktadır. Son zamanlarda çok fazla hype kazanan ünlü bir mimari, soğan mimarisidir:

resim açıklamasını buraya girin

Bu tasarımda UI / Sunum katmanı ve uygulama katmanı açıkça ayrılmıştır. 2'yi birleştirmek, ayrı ayrı endişe ve sorumluluklara sahip 2 katman arasında sıkı bağlantı sağlar.

Sunum katmanı yalnızca sunum mantığını içermelidir. Çok fazla şey bilen Akıllı kullanıcı arayüzlerinden kaçının. Bu esas olarak CSS, JS, şablonlar, formlar ve yanıt ve istek nesneleriyle ilgili her şeye ek olarak MVC'nin Denetleyicilerini ve görünümlerini barındırır.

Sunum yoluyla yapılan eylemler komutlar yoluyla uygulama katmanına devredilir. Uygulama katmanı, uygulama mantığını içerir. Normalde bir kullanım senaryosuyla eşleşir. Sistemin bir kullanım durumunu karşılamak için ne yapması gerektiğini içerir. Tipik bir uygulama hizmeti, bir havuzdan bir toplamı iade etmesini isteyecek ve daha sonra bu toplamda bir eylem başlatacaktır.

Vaughn Vernon'un IDDD'sinden örnek projeye bir göz atın


2
+1. Projemi böyle uyguladım. Hemen bunu yaparak kazanç elde etmeyi başardım. Bir uygulama katmanına soyutladığım için, birden çok sunum katmanım oldu. Örneğin, web api ve web sitemiz hem çok fazla zaman kazandıran uygulama katmanını hem de çoğaltılmış kodu tüketir, çünkü web uygulamam web api'ye gelen ve web api'den gelen mesajları çerçevelemek zorunda kalmaz ve tüm mantığı senkronize tutar ikisinin arasında.
Sinaesthetic

Nereye yerleştirilir entry pointve composition rootyerleştirilir? Her zaman Applicationkatmanın sorumluluğu olduğunu düşünürdüm . Ama şimdi bu Presentationkatman gibi görünüyor .
Denis535

2

Etki Alanına Dayalı Tasarım'ın Sunum katmanı veya Uygulama katmanı ile ilgisi yoktur. DDD, ana odağı Etki Alanı katmanında olan bir metodolojidir. Diğer bir deyişle, DDD, Etki Alanı katmanı dışında başka bir katmanla ilgili herhangi bir kısıtlama getirmez ve sorunuz başka bir yöntem bağlamında da sorulabilir.

Bununla birlikte, DDD uygulamaları için dört katmanlı bir mimari kullanmak çok yaygındır. Aşağıda, katmanları ve kullanım amaçlarını gösteren böyle bir uygulamanın bir örneği verilmiştir: DDDSample Mimarisi . Dolayısıyla, bu mimariyi kullanmayı seçerseniz, görünümleriniz ve düzenleriniz Arayüzler katmanına gider ve arabirimden bağımsızsa denetleyiciler Uygulama katmanına gider.

DDD'nin kısıtlama getirmediğini söylediğim gibi, başka herhangi bir mimariyi de seçebilirsiniz. Orada farklı yapılara sahip olan ve aynı zamanda DDD uygulamaları için kullanılabilecek birçok MVC çerçevesi vardır. Ardından, elbette, görüşlerinizi ve düzenlerinizi buna göre yerleştirirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.