Tôi đang phát triển một ứng dụng dựa trên web với mục tiêu chính là lấy dữ liệu từ cơ sở dữ liệu, hiển thị nó trên giao diện người dùng, nhập dữ liệu người dùng và ghi lại vào cơ sở dữ liệu. Ứng dụng sẽ không thực hiện bất kỳ thuật toán cường độ công nghiệp nào, nhưng sẽ nhận được số lượt truy cập rất cao vào thời gian cao điểm (được mô tả dưới đây) sẽ thay đổi qua ngày.
Các lớp là Trình bày, Kinh doanh, Dữ liệu điển hình của bạn. Lớp dữ liệu được chăm sóc bởi máy chủ cơ sở dữ liệu. Lớp nghiệp vụ sẽ chứa thành phần DAL để truy cập máy chủ cơ sở dữ liệu qua tcp. Các lựa chọn tôi phải tách các lớp này thành các tầng là:
- Các lớp trình bày và kinh doanh có thể được giữ trên cùng một tầng.
- Lớp trình bày trên một tầng riêng biệt và lớp kinh doanh trên một tầng riêng biệt.
Trong trường hợp lựa chọn 2, lớp nghiệp vụ sẽ được truy cập bởi lớp trình bày bằng dịch vụ WCF qua http hoặc tcp.
Tôi không thấy bất kỳ quá trình xử lý nặng nào được thực hiện trên lớp Business, vì vậy tôi nghiêng về tùy chọn 1 ở trên. Tôi cũng cảm thấy vì lý do tương tự, thêm một tầng mới sẽ chỉ giới thiệu độ trễ mạng. Tuy nhiên, về khả năng mở rộng trong trường hợp tôi cần mở rộng hoặc mở rộng quy mô, cách nào tốt hơn để đi? Ứng dụng này sẽ cần có khả năng hỗ trợ tới 6 triệu người dùng mỗi giờ. Sẽ có một lượng dữ liệu hợp lý trong mỗi phiên người dùng, lưu trữ tùy chọn của người dùng và các chi tiết khác. Tôi cũng sẽ sử dụng bộ nhớ đệm cấp trang.