Saya merancang aplikasi baru yang berhubungan dengan banyak logika bisnis.
Untuk menghindari keterikatan biasa antara berbagai lapisan aplikasi yang sering menyusup ke sistem seperti itu dari waktu ke waktu, saya ingin menerapkan pemisahan yang bersih dari keprihatinan sejak awal. Secara garis besar saya ingin memisahkan:
- lapisan presentasi
- lapisan logika bisnis
- penyimpanan data dan lapisan ketekunan
Pertanyaan yang paling saya perjuangkan adalah bagaimana sebenarnya mengimplementasikan perilaku di tepian dengan bersih, terutama antara bisnis dan lapisan data. Saya telah melihat terlalu banyak aplikasi di mana lapisan data menyerahkan objek ORM ke lapisan inti, secara efektif menyambungkan logika bisnis ke ORM.
Haruskah saya mengonversi objek ORM ke beberapa format serial (JSON?) Dan kemudian membatalkan deserialize di lapisan bisnis menjadi struktur data internal ke lapisan itu? Bukankah itu banyak overhead?
Bagaimana Anda menerapkan pemisahan kekhawatiran untuk aplikasi berukuran sedang? Ada saran?
article.getId()
,article.getTimestamp()
dll. Pemetaan ini tampaknya lebih sering daripada tidak spesifik untuk ORM yang digunakan.Jawaban:
Selalu ada sesuatu dari penggabungan logis antara logika bisnis dan database. Upaya Anda harus difokuskan pada pencegahan penggabungan fisik .
Misalnya, ambil aturan bisnis yang sangat mendasar bahwa setiap pengguna harus memiliki ID pengguna yang unik. Anda dapat mencoba untuk menegakkan aturan itu di lapisan bisnis, tetapi akan selalu ada beberapa skenario di mana beberapa pengguna dapat mencoba ID pengguna yang sama pada saat yang sama, dan satu-satunya tempat di mana Anda dapat memeriksa keunikan dan memesan ID pengguna dalam suatu cara atom ada di database.
Sekarang, lapisan bisnis tidak perlu mengetahui nama tabel atau kolom, atau bahkan pengguna disimpan dalam database (mereka bisa, misalnya, disimpan di Active Directory, bukan untuk aplikasi intranet). Hanya lapisan akses data yang harus mengetahuinya. Tetapi untuk menghabiskan banyak usaha untuk memutuskan skema dari aturan bisnis mungkin merupakan usaha yang sia-sia.
sumber
Pastikan objek Model Bisnis Anda ada di pustaka mereka sendiri yang tidak mereferensikan ORM atau klien basis data.
Gunakan pola Repositori dan hanya antarmuka referensi ke repositori dalam kode utama Anda.
Memiliki pustaka repositori beton yang benar-benar terpisah khusus untuk datalayer yang merujuk pustaka antarmuka, pustaka model bisnis dan klien basis data.
sumber