Di DDD, apakah layak untuk mendefinisikan Konteks Terikat untuk akses file?
Saya merancang editor sebagai aplikasi desktop yang membuka, menyimpan, dan menyimpan sebagai dokumen dari file, sesuatu yang sangat umum.
Saya sudah memiliki Konteks Terikat untuk aturan bisnis saya.
Secara naif, saya ingin meletakkan jalur file yang digunakan untuk menghidrasi kembali entitas sebagai identitas mereka dan mengimplementasikan repositori dengan akses dan manajemen file.
Tetapi saya merasa ini bukan cara yang tepat untuk mengelola aspek file dalam aplikasi saya.
Jadi, menurut Anda apakah menarik untuk mendesain Konteks Terikat yang didedikasikan untuk manajemen file?
Apakah Anda memiliki contoh aplikasi yang menggabungkan DDD dan manajemen file?
Sebagian besar contoh menunjukkan akses database melalui repositori dan saya tidak dapat menemukan apa pun tentang itu sejauh ini.
Jawaban
Seperti yang saya pahami, manajemen file bukan bagian dari domain bisnis Anda sehingga konteks khusus yang dibatasi tidak masuk akal menurut pendapat saya.
Saya entah bagaimana bisa mengerti bahwa Anda tidak merasa nyaman menggunakan jalur file sebagai pengenal untuk agregat Anda sebagai tipe string primitif. Jadi saya menyarankan untuk membuat objek nilai , misalnya DocumentId yang merangkum aspek identifikasi ini dan memisahkannya dari kode klien yang bekerja dengan model domain. Implementasi repositori lainnya berfungsi sama seperti jika Anda akan menyimpan konten dalam database. Gunakan antarmuka repositori di lapisan domain dan implementasi repositori di lapisan infrastruktur.
Dari buku itu, saya memahami konteks berbatas sebagai wilayah pembangunan, yang cukup terintegrasi, sehingga orang bisa menyepakati konsep yang diwakili oleh nama. Perpecahan tampaknya terjadi di antara tim, yang mengerjakan aspek masalah yang terpisah tanpa komunikasi dan koordinasi yang berat. ( pertanyaan ini juga membahas ini)
Sepertinya masalah yang Anda gambarkan tidak perlu ditangani di banyak tim. Anda bisa saja memindahkan manajemen file ke dalam modul terpisah seperti Subdomain Generik .