Ada perbedaan besar antara lapisan aplikasi dan lapisan presentasi dari sudut pandang DDD.
Meskipun DDD berpusat pada bagaimana memodelkan domain menggunakan blok bangunan DDD dan konsep-konsep seperti konteks terbatas, bahasa di mana-mana dan sebagainya, masih penting untuk mengidentifikasi dan memisahkan dengan jelas berbagai lapisan dalam aplikasi Anda.
Arsitektur memainkan peran besar dalam mengimplementasikan aplikasi DDD yang sukses. Arsitektur terkenal yang mendapatkan banyak hype belakangan ini adalah arsitektur bawang:
Dalam desain ini lapisan UI / Presentasi dan lapisan aplikasi dipisahkan dengan jelas. Menggabungkan 2 bersama-sama memperkenalkan hubungan yang erat antara 2 lapisan yang memiliki keprihatinan dan tanggung jawab terpisah yang jelas.
Lapisan Presentasi seharusnya hanya logika presentasi rumah. Hindari Smart UI yang terlalu banyak tahu. Ini terutama menampung Pengendali dan pandangan MVC di samping CSS, JS, templat, formulir, dan segala sesuatu yang berkaitan dengan objek respons dan permintaan.
Tindakan yang dikeluarkan melalui presentasi didelegasikan ke lapisan aplikasi melalui perintah. Lapisan aplikasi berisi logika aplikasi. Biasanya memetakan ke use case. Ini berisi APA yang harus dilakukan sistem untuk memenuhi kasus penggunaan. Layanan aplikasi tipikal akan meminta repositori untuk mengembalikan agregat lalu meminta tindakan pada agregat itu.
Lihatlah contoh proyek dari IDDD Vaughn Vernon