Bununla ilgili birçok düşünce okulu olsa da ve kesinlikle hiçbir şekilde evrensel olarak "doğru yol" olarak adlandırılamazken, diğerleri ise evrensel olarak "yanlış yol" iken, sunucu tarafında iş mantığını izole etmenin birkaç nedeni vardır. ve RESTful hizmeti aracılığıyla bu nesnelere ve hizmetlere erişebilirsiniz.
Kısa cevap, çoğunlukla risk yönetimi ve performans izleme ve iyileştirme ile ilgilidir.
Detayda:
1 numaralı sebep güvenliktir. İstemcilere hiçbir zaman sunucuya çöp dışında başka bir şey göndermeleri konusunda güvenilmemelidir ve güvenlik yönlerini sunucu tarafını tutarak, sahte bir kullanıcının sisteminize zarar verme potansiyel riskini izole edersiniz. Unutmayın, Javascript tamamen istemci tarafıdır ve önemsizce değiştirilebilir, bu nedenle ÇIKIŞI GÜVENEMEZSİNİZ.
2 numaralı neden endişelerin ayrılmasıdır. Javascript programlayıcınız güvenlik konusunda uzman olmayabilir ve güvenlik gurunuz Javascript'te o kadar iyi olmayabilir. İş mantığını sunum mantığından ayırarak, javascript'in izin düzeylerinin ötesindeki kaynaklara erişmesine izin verilmeyeceğinden ve işlenmesi Komut Dosyası Programcısının öncülüğünde olan hatalar verileceğinden bu endişeleri aşmaktan kaçınabilirsiniz. Benzer şekilde, Güvenlik görevlisi, güvenliğin nasıl sağlandığını görmek için Javascript'te hata ayıklamayacaktır.
3 numaralı neden performanstır. İş mantığı potansiyel olarak sunucu ve veritabanı kaynaklarını talep edebilir. Bu mantığı kullanıcı arabirimi öğelerinizden yalıtılmış tutarak uygulamanızın yalnızca bu bölümünü ölçeklendirerek darboğazları ele almayı çok daha kolay hale getirebilirsiniz. Ayrıca, iş süreçleri sunucuda yürütülürse, hangi iş sürecinin sisteminizi veya veritabanı arka uçlarınızı yüklediğini izole etmek çok daha kolaydır.
Buradaki bir sonuç, genellikle birkaç iş sürecinin aynı verileri kullanmasıdır ve böylece istemcilere yan kod erişimi vermek mümkün / güvenli olmayabilecek genel sistem yükünü azaltmak için sunucu tarafında önbellekleme uygulayabilirsiniz.
Son olarak, ACID standartlarını korumak için Business Logic'in gerçekten sunucuda olması gerektiğini öneriyorum. Web tarayıcısında çalıştırılan bir faturalandırma ürününü, yalnızca sunucuya veritabanı bağlantısıyla koruduğumu hatırlıyorum. Günlük faturalandırma (iyi bir günde bir saat veya daha fazla sürebilir!) Kesintiye uğradıysa, diyelim ki tarayıcının kapatılması veya kilitlenmesi nedeniyle, veritabanının yaptığı karışıklığı çözmek birkaç saat sürebilir. tutarsız bir durumda. Unutmayın, bu kredi kartlarını da içeriyordu, bu nedenle faturalandırma kayıtlarının da işlemciye karşı kontrol edilmesi gerekiyordu!
Sunucu tarafı iş mantığı, herhangi bir dilin uygulama veya veritabanı düzeyinde işlemlerini sürdürmesi için herhangi bir çerçeve olduğundan ASİT güncellemelerini sağlamak için önemsizdir. Bunu bir web istemcisinin birden fazla güncellemesi ile yapıyorsanız ... bir noktada tutarsız bir durum elde edersiniz ve muhtemelen uygulamanızı etkileyecektir.
RESTful hizmetlerini veritabanına erişmenin bir yolu olarak düşünmek cazip gelse de, felaket için iyi bir tarif olduğu için bu tuzağa düşmemelisiniz. RESTful hizmeti aracılığıyla ortaya koyduğunuz nesne modeli veritabanınızla ilgili olabilir, ancak iş mantığınızı sadece bir CRUD motoru olarak kullanmak yerine gerçekten kapsamalıdır.