Walaupun ada banyak aliran pemikiran tentang ini, dan tentu saja tidak ada satu cara yang dapat disebut "jalan yang benar" secara universal, sementara yang lain adalah "jalan yang salah" secara universal, ada sejumlah alasan untuk mengisolasi logika bisnis di sisi server , dan mengakses objek dan layanan tersebut melalui layanan RESTful.
Jawaban singkatnya adalah sebagian besar tentang manajemen risiko, serta pemantauan dan peningkatan kinerja.
Secara terperinci:
Alasan terpenting nomor 1 adalah keamanan. Klien tidak boleh dipercaya untuk mengirimkan apa pun selain sampah ke server, dan dengan menjaga sisi keamanan aspek server, Anda mengisolasi risiko potensial dari pengguna jahat yang merusak sistem Anda. Ingat, Javascript benar-benar sisi klien, dan mudah berubah, sehingga Anda TIDAK BISA PERCAYA OUTPUT.
Alasan nomor 2 adalah pemisahan keprihatinan. Programmer javascript Anda mungkin bukan pakar keamanan, dan guru keamanan Anda mungkin tidak terlalu hebat dalam Javascript. Dengan mengisolasi logika bisnis dari logika presentasi, Anda menghindari melintasi masalah ini, karena javascript tidak akan diizinkan untuk mengakses sumber daya di luar tingkat izinnya, dan diberikan kesalahan, yang penanganannya berada dalam ketentuan Script Programmer. Demikian juga, petugas Keamanan tidak akan men-debug Javascript untuk melihat bagaimana keamanan dipertahankan.
Alasan nomor 3 adalah kinerja. Logika bisnis berpotensi menuntut sumber daya server dan basis data. Dengan menjaga logika itu diisolasi dari elemen UI Anda, Anda kemudian dapat mengurangi sebagian aplikasi Anda, membuatnya lebih mudah untuk mengatasi kemacetan. Selain itu, jauh lebih mudah untuk mengisolasi proses bisnis mana yang memuat backend sistem atau database Anda jika proses bisnis dijalankan di server.
Akibat wajar di sini adalah bahwa seringkali beberapa proses bisnis akan menggunakan data yang sama, dan karenanya Anda dapat menerapkan caching di sisi server untuk mengurangi beban sistem secara keseluruhan yang mungkin tidak mungkin / aman untuk memberikan akses kode sisi klien.
Akhirnya, saya akan mengusulkan bahwa untuk mempertahankan standar ACID, Business Logic benar-benar perlu ada di server. Saya ingat mempertahankan produk penagihan yang berjalan di browser web, dengan hanya koneksi database ke server. Jika penagihan harian (yang bisa memakan waktu satu jam atau lebih pada hari yang baik!) Terputus, katakanlah, oleh browser yang ditutup atau mogok, mungkin butuh beberapa jam untuk memilah kekacauan yang dibuatnya dari database, yang tersisa dalam keadaan tidak konsisten. Ingat, ini juga melibatkan kartu kredit, jadi catatan tagihan juga harus diperiksa terhadap prosesor!
Logika bisnis sisi server sebagian besar sepele untuk memastikan pembaruan ACID, karena ada kerangka kerja untuk bahasa apa pun untuk mempertahankan transaksi, baik di tingkat aplikasi atau basis data. Jika Anda melakukan ini melalui beberapa pembaruan dari klien web ... Anda akan mendapatkan kondisi yang tidak konsisten di beberapa titik, dan itu kemungkinan akan mempengaruhi aplikasi Anda.
Meskipun tergoda untuk memikirkan layanan RESTful hanya sebagai cara untuk mengakses database, Anda tidak boleh jatuh ke dalam perangkap ini, karena itu adalah resep yang baik untuk bencana. Model objek yang Anda paparkan melalui layanan RESTful dapat terkait dengan database Anda, tetapi harus benar-benar merangkum logika bisnis Anda alih-alih hanya menggunakannya sebagai mesin CRUD.