Lapisan Aplikasi Presentasi VS di DDD

9

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?

Matthieu Napoli
sumber

Jawaban:

7

Hanya karena seseorang membuat dan memberi nama "Lapisan Aplikasi" dan "Lapisan Presentasi" tidak berarti aplikasi Anda harus memilikinya. Anda harus membuat layer SETELAH Anda membuat sejumlah besar kode yang Anda kelompokkan bersama dan ingin memberi nama grup ini demi komunikasi antara pengembang dan kejelasan kode.

Dari titik DDD. Lapisan Aplikasi adalah segala sesuatu yang bukan lapisan Domain. Yang termasuk logika aplikasi, presentasi dan layanan aplikasi.

Euforia
sumber
2
Terima kasih, memang Anda membuat saya menyadari bahwa untuk kasus saya memisahkan Aplikasi dan Presentasi tidak berguna. Kesederhanaan dulu!
Matthieu Napoli
Jika DDD memiliki REST API dan bukan UI di lapisan presentasi, apakah REST API akan menjadi aplikasi atau lapisan presentasi. Saya sekarang bingung, karena saya yakin bahwa REST API adalah lapisan presentasi ..
Dario Granich
8
Sebenarnya, DDD menetapkan empat lapisan dalam urutan berikut, dari tinggi ke rendah: Presentasi, Aplikasi, Domain, Infrastruktur. Jadi, lapisan Aplikasi tidak termasuk "presentasi". Juga, itu selalu merupakan ide yang baik untuk memutuskan lapisan sebelum sejumlah besar kode ditulis, karena tidak hanya tentang pengelompokan kode bersama tetapi juga tentang membatasi arah kompilasi dependensi waktu.
Rogério
11

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:

masukkan deskripsi gambar di sini

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

Songo
sumber
2
+1. Beginilah cara saya mengimplementasikan proyek saya. Segera, saya bisa mendapatkan keuntungan dengan melakukannya. Karena saya abstrak ke lapisan aplikasi, saya dapat memiliki beberapa lapisan presentasi. Misalnya, api web kami dan situs web kami menggunakan lapisan aplikasi yang menghemat banyak waktu dan kode duplikat karena aplikasi web saya tidak harus membingkai pesan ke dan dari api web dan itu membuat semua logika tetap sinkron. antara keduanya.
Sinaesthetic
Di mana entry pointdan composition rootditempatkan? Saya selalu berpikir itu adalah tanggung jawab Applicationlayer. Tapi sekarang sepertinya ini Presentationlayer.
Denis535
2

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.

zafarkhaja
sumber