ADM adalah pola yang baik untuk solusi layanan terdistribusi seperti layanan-mikro. Ini cocok dengan banyak kasus bisnis berbasis web saat ini.
Pertimbangkan jika kita memiliki objek Domain Pesanan. Dengan pendekatan OOP kami akan menambahkan Order.Purchase () Order.Cancel () dll. Ini akan bekerja dengan baik di aplikasi desktop, di mana kami menyimpan pesanan di memori dan melakukan beberapa hal pada contoh yang sama.
Tetapi jika kita memiliki sistem terdistribusi, dengan program yang hanya untuk satu hal, yaitu mengakses daftar pesanan dan membeli masing-masing secara bergantian, atau mendapatkan daftar pesanan dan membatalkan masing-masing secara bergantian kemudian memiliki kedua Metode pada objek yang sama membuat tidak ada merasakan. Kami harus memiliki dua Domain atau Konteks Terbatas:
PurchaseSystemOrder.Purchase()
dan
CancelSystemOrder.Cancel();
Satu-satunya benda yang akan dibagikan benda-benda ini adalah struktur data properti.
Ketika Anda menambahkan lebih banyak dan lebih banyak layanan microser, Anda berakhir dengan puluhan jenis Order. Tidak lagi masuk akal untuk berbicara tentang sebuah Orde sebagai objek Domain, meskipun yang tatanan konseptual yang sama yang sedang diproses oleh semua sistem ini.
Jauh lebih masuk akal untuk memiliki model Anemik, Pesanan, yang hanya merangkum data saja dan mengubah nama layanan Anda sesuai:
PurchaseService.Purchase(Order order)
Sekarang kita dapat membicarakan Order lagi dan kita dapat menambahkan layanan baru apa pun yang kita pikirkan untuk diproses, tanpa memengaruhi layanan lain yang saat ini digunakan.
Fowler and Co berasal dari latar belakang sistem monolith, di dunia mereka pendekatan ADM akan berarti aplikasi tunggal dengan semua layanan terpisah ini dipakai dalam memori dan OrderDTO diedarkan dan dimutasi. Ini akan jauh lebih buruk daripada menempatkan metode pada model Orde kaya.
Tetapi dalam sistem terdistribusi, ada banyak program, masing-masing hanya membutuhkan metode Pesanan tunggal dan menjalankannya pada beberapa pesanan, memuat masing-masing, menjalankan metode dan kemudian membuangnya. Hanya membutuhkan Layanan tunggal dan aliran objek data.
Mengisi model kaya sepenuhnya, khawatir tentang persyaratan dan dependensi dari semua Metode hanya untuk memanggil satu dan kemudian membuang objek segera adalah sia-sia.
Ditambah perubahan ke salah satu metode akan memerlukan memperbarui semua komponen yang didistribusikan karena mereka semua bergantung pada Model Kaya untuk logika mereka.
Saya tidak punya ruang di basis kode saya untuk hal-hal yang tidak mereka butuhkan