Saya mengalami masalah menggambar garis yang jelas antara Presentasi dan lapisan Aplikasi dalam Desain Domain Driven.
Kemana perginya Pengontrol, Tampilan, Tata Letak, Javascript, dan file CSS?
Apakah itu di lapisan Aplikasi atau Presentasi?
Dan jika mereka pergi bersama-sama di lapisan yang sama, apa yang mengandung yang lainnya? Apakah ini kosong?
sumber
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
sumber
entry point
dancomposition root
ditempatkan? Saya selalu berpikir itu adalah tanggung jawabApplication
layer. Tapi sekarang sepertinya iniPresentation
layer.Desain Berbasis Domain tidak ada hubungannya dengan lapisan Presentasi atau lapisan Aplikasi. DDD adalah metodologi yang fokus utamanya adalah pada lapisan Domain. Artinya, DDD tidak memaksakan kendala apa pun mengenai lapisan lain apa pun kecuali untuk lapisan Domain dan pertanyaan Anda juga dapat ditanyakan dalam konteks metodologi lainnya.
Yang sedang berkata, itu sangat umum untuk menggunakan arsitektur empat lapis untuk aplikasi DDD. Berikut adalah contoh dari salah satu aplikasi yang menunjukkan lapisan dan tujuan penggunaannya: Arsitektur DDDSample . Jadi, jika Anda memilih untuk menggunakan arsitektur ini tampilan dan tata letak Anda akan pergi ke lapisan Antarmuka dan pengontrol, jika antarmuka-independen, akan pergi ke lapisan Aplikasi.
Anda mungkin juga memilih jenis arsitektur lain, seperti yang saya katakan DDD tidak memaksakan kendala. Ada banyak kerangka kerja MVC di luar sana yang memiliki struktur yang berbeda namun dapat juga digunakan untuk aplikasi DDD. Kemudian, tentu saja, Anda akan menempatkan tampilan dan tata letak Anda sesuai.
sumber