Logika Bisnis vs. Lapisan Layanan

9

Saya membaca jawaban ini: https://softwareengineering.stackexchange.com/a/234254/173318 mohon perbaiki pemahaman saya.

Aturan bisnis mengacu pada daftar langkah-langkah bisnis di dunia nyata (tanpa kode).

Logika Bisnis mengacu pada proses mengubah aturan bisnis menjadi kode dan kumpulan / jenis kode ini disebut sebagai "Logika Bisnis".

Dan untuk apa lapisan layanan itu digunakan? jika saya membaca jawaban ini, kedengarannya tidak berbeda dengan logika bisnis https://stackoverflow.com/a/4817935/4190539

Apakah lapisan layanan tempat untuk logika dan repositori bisnis saling bertemu?

Kakashi
sumber
1
"lapisan layanan" adalah istilah umum, dapat berupa atau mengandung apa pun yang Anda suka. Pertanyaan SO yang Anda kutip itu berbicara tentang "lapisan layanan di ASP.NET MVC", yang memberikan istilah fokus yang lebih spesifik. Apakah Anda sengaja membicarakan yang terakhir? Atau apakah Anda hanya melewatkan perbedaannya?
Doc Brown
itulah yang saya dapatkan sejauh ini. tetapi saya ingin mendengar penjelasan Anda tentang mereka semua.
Kakashi

Jawaban:

11

"Lapisan layanan" adalah istilah arsitektur. Ini mengacu pada bagian dari sistem yang duduk di suatu tempat di tengah arsitektur multi-tier , di bawah lapisan interaksi pengguna tetapi di atas lapisan akses data.

Logika bisnis dapat diimplementasikan di lapisan layanan, dengan demikian menegakkan aturan bisnis.

Perhatikan bahwa ada kasus di mana logika bisnis berakhir di lapisan lain. Misalnya, beberapa aturan bisnis diberlakukan di lapisan interaksi pengguna untuk meningkatkan pengalaman pengguna (misalnya validator yang ditulis dalam Javascript sehingga Anda dapat memeriksanya tanpa bolak-balik ke server). Ketika itu terjadi, lapisan layanan biasanya akan menduplikasi penegakan.

Aturan bisnis lainnya hanya dapat ditegakkan di lapisan database, misalnya ketika ada masalah konkurensi (bayangkan aplikasi di mana Anda dapat memeriksa buku perpustakaan) atau masalah kinerja (bayangkan sebuah program yang menghitung komisi tahunan saleperson yang sibuk, berdasarkan pada struktur biaya yang kompleks).

John Wu
sumber
apakah boleh jika saya memiliki direktori layanan dan berisi kelas sebagai tempat di mana saya menaruh logika bisnis dan saya menyuntikkan repositori, layanan lain, validasi di sana?
Kakashi
Ya, itu wajar untuk menyuntikkan layanan lain, termasuk akses data, ke dalam lapisan layanan - ia harus menyimpan data entah bagaimana, dan jika ditulis dengan benar itu tidak tahu bagaimana melakukannya sendiri.
John Wu
repositori tidak boleh mengandung kode bisnis apa pun, bukan? itu berarti repositori harus jelas dari validasi, filter atau manipulasi strijg lainnya seperti strtolower misalnya?
Kakashi
Tidak harus (saya sudah memberi Anda dua contoh di posting saya) tetapi itu adalah praktik yang baik untuk memindahkan sebanyak mungkin logika bisnis ke dalam lapisan layanan.
John Wu
oh oke, btw apakah Anda memiliki kode pola repositori yang dapat saya lihat?
Kakashi