Nó phụ thuộc vào yêu cầu của bạn là gì. Nếu bạn cần một giải pháp hiệu suất cao, độ trễ thấp phụ thuộc vào rất nhiều nhiệm vụ nhỏ, bạn có thể đi với một cấu trúc tương tự như những gì bạn mô tả. Các giải pháp phổ biến nhất, trong Java, PHP và C # không mặc định cho điều này.
Hầu hết các ứng dụng web phụ thuộc rất nhiều vào cơ sở dữ liệu - hầu hết trong số chúng rất nhiều để các trang không thể kết xuất mà không có ít nhất một cuộc gọi. Rõ ràng là bạn không muốn tiết lộ công khai cơ sở dữ liệu của mình, vì một số lý do:
- Bảo mật (như Oded đề cập) - bạn chắc chắn không muốn công khai mạng của mình! Lý tưởng nhất là giao diện duy nhất cho các hệ thống của bạn từ bên ngoài phải là https đến máy chủ của bạn.
- Dễ phát triển - bạn thực sự, thực sự , thực sự không muốn viết SQL bằng Javascript và các ngôn ngữ được thiết kế để trình bày web không hoạt động tốt với RDB. Họ không có khái niệm về nhà nước, ví dụ.
Vì vậy, khi bạn cần một cơ sở dữ liệu, bạn sử dụng các ngôn ngữ chơi tốt với chúng như Java, C #, PHP, v.v ... Cách dễ nhất để tạo một trang hóa ra là như sau: Bạn sử dụng ngôn ngữ tạo khuôn mẫu (nổi tiếng nhất là PHP, nhưng JSP và ASP là hai ngôn ngữ rất phổ biến khác) để xây dựng trang. Ngôn ngữ cung cấp các cấu trúc gọi ra các mô-đun khác. Trong PHP, điều này thường có trong trang hoặc trong một tệp PHP khác, sử dụng mẫu MVC. Trong JSP, bạn sử dụng scriptlets hoặc Ngôn ngữ biểu thức JSP. Các mô-đun khác này có thể thực hiện công việc nặng nề là kết nối với DB, thực hiện logic và trả về các giá trị cho lớp khung nhìn của bạn. Kết quả cuối cùng là một trang HTML được tạo, được hiển thị trên máy chủ và được gửi đến máy khách.
Khi cơ sở dữ liệu của bạn nằm trên cùng một mạng với trình kết xuất trang của bạn, bạn cũng sẽ có hiệu suất tốt hơn. Khách hàng chỉ phải thực hiện một yêu cầu và nhận một trang - bạn có thể cần thực hiện 10-15 yêu cầu DB trước khi bạn có tất cả thông tin người dùng cần. Độ trễ của mili giây trên mạng của bạn sẽ là vài giây đến vài phút nếu khách hàng phải làm tất cả.
Khi các hệ thống phát triển lớn hơn, sự tách biệt các mối quan tâm và năng lực cốt lõi trở nên quan trọng. HTML là tốt để hiển thị. Javascript tốt cho nội dung động. SQL rất tốt cho việc truy vấn cơ sở dữ liệu và các ngôn ngữ khác rất tốt trong logic nghiệp vụ. Công việc của chúng tôi là các nhà phát triển là sử dụng tất cả các công cụ có sẵn cho chúng tôi để xây dựng một hệ thống có thể bảo trì. Dễ phát triển là một phần rất lớn của một hệ thống tốt. Trong tâm trí của tôi, nó gần như quan trọng như hiệu suất và khả năng sử dụng. Các hệ thống lớn phát triển theo thời gian. Các hệ thống kém đã được viết xấu ngay từ đầu và không bao giờ được cải thiện.