Mặc dù có nhiều trường phái suy nghĩ về điều này, và chắc chắn không có cách nào có thể được gọi là "cách đúng" trên toàn cầu, trong khi tất cả những cách khác là "sai cách" trên toàn cầu, có một số lý do để cô lập logic kinh doanh ở phía máy chủ và truy cập các đối tượng và dịch vụ đó thông qua dịch vụ RESTful.
Câu trả lời ngắn gọn là chủ yếu là về quản lý rủi ro, giám sát và cải thiện hiệu suất.
Chi tiết:
Lý do tối quan trọng số 1 là bảo mật. Khách hàng không bao giờ được tin tưởng để gửi bất cứ thứ gì ngoài rác vào máy chủ và bằng cách giữ phía máy chủ khía cạnh bảo mật, bạn cách ly nguy cơ tiềm ẩn của người dùng lừa đảo làm hỏng hệ thống của bạn. Hãy nhớ rằng, Javascript hoàn toàn là phía máy khách và có thể thay đổi một cách tầm thường, vì vậy bạn KHÔNG THỂ TIN TƯỞNG.
Lý do số 2 là tách mối quan tâm. Lập trình viên javascript của bạn có thể không phải là một chuyên gia về bảo mật và chuyên gia bảo mật của bạn có thể không giỏi về Javascript. Bằng cách tách logic nghiệp vụ khỏi logic trình bày, bạn tránh vượt qua những lo ngại này, vì javascript sẽ không được phép truy cập các tài nguyên vượt quá mức cho phép của nó và bị đưa ra lỗi, việc xử lý nằm trong ưu tiên của Trình lập trình tập lệnh. Tương tự, anh chàng Bảo mật sẽ không gỡ lỗi Javascript để xem cách bảo mật được duy trì.
Lý do số 3 là hiệu suất. Logic kinh doanh có khả năng có thể đòi hỏi tài nguyên máy chủ và cơ sở dữ liệu. Bằng cách giữ logic đó tách biệt khỏi các thành phần UI của bạn, sau đó bạn có thể mở rộng chỉ phần đó của ứng dụng, giúp việc giải quyết các tắc nghẽn trở nên dễ dàng hơn nhiều. Ngoài ra, việc cách ly quy trình kinh doanh nào đang tải hệ thống hoặc cơ sở dữ liệu của bạn dễ dàng hơn nhiều nếu quy trình kinh doanh được thực thi trên máy chủ.
Một hệ quả ở đây là thường một số quy trình kinh doanh sẽ sử dụng cùng một dữ liệu và do đó bạn có thể triển khai bộ đệm ẩn ở phía máy chủ để giảm tải toàn bộ hệ thống mà có thể không thể / bảo mật để cấp cho khách hàng quyền truy cập vào mã.
Cuối cùng, tôi sẽ đề xuất rằng để duy trì các tiêu chuẩn ACID, Business Logic thực sự cần phải có trên máy chủ. Tôi nhớ duy trì một sản phẩm thanh toán chạy trong trình duyệt web, chỉ có kết nối cơ sở dữ liệu với máy chủ. Nếu thanh toán hàng ngày (có thể mất một giờ hoặc nhiều hơn vào một ngày tốt!) Bị gián đoạn, giả sử, do trình duyệt bị đóng hoặc bị sập, có thể mất vài giờ để loại bỏ mớ hỗn độn mà cơ sở dữ liệu còn sót lại trong trạng thái không nhất quán Hãy nhớ rằng, điều này cũng liên quan đến thẻ tín dụng, vì vậy hồ sơ thanh toán cũng phải được kiểm tra đối với bộ xử lý!
Logic nghiệp vụ phía máy chủ chủ yếu là tầm thường để đảm bảo cập nhật ACID, vì có bất kỳ khuôn khổ nào cho bất kỳ ngôn ngữ nào để duy trì giao dịch, ở cấp độ ứng dụng hoặc cơ sở dữ liệu. Nếu bạn đang thực hiện việc này thông qua nhiều bản cập nhật từ một ứng dụng web ... bạn sẽ có trạng thái không nhất quán tại một số điểm và có khả năng nó sẽ ảnh hưởng đến ứng dụng của bạn.
Mặc dù có thể rất hấp dẫn khi nghĩ về các dịch vụ RESTful chỉ đơn giản là một cách để truy cập cơ sở dữ liệu, bạn không nên rơi vào cái bẫy này, vì đó là một công thức tốt cho thảm họa. Mô hình đối tượng bạn trưng ra thông qua dịch vụ RESTful có thể liên quan đến cơ sở dữ liệu của bạn, nhưng thực sự nên gói gọn logic kinh doanh của bạn thay vì chỉ sử dụng nó làm công cụ CRUD.