2012-04-10 12 views
5

Tôi muốn người khác giải thích cho tôi, cách tiếp cận nào tốt hơn: sử dụng một phiên hoặc thiết kế nó không phiên. Chúng tôi đang bắt đầu phát triển một ứng dụng web mới và chưa quyết định con đường để làm theo.Thiết kế ứng dụng web: Phiên hoặc phiên làm việc

Session-ít thiết kế IMO là một lợi thế hơn:

Ưu điểm:

  1. Khả năng mở rộng. Chúng tôi có thể có nhiều máy chủ như chúng tôi muốn mà không phải chia sẻ phiên người dùng. Mỗi người trong số họ có thể xử lý yêu cầu (ví dụ: cân bằng tải thông qua vòng xoay).
  2. Tiết kiệm tài nguyên máy chủ. Chúng tôi không cần phải cấp phát bộ nhớ ở phía máy chủ (một lần nữa - khả năng mở rộng).
  3. Không cần phục hồi sau khi khởi động lại máy chủ.

Nhược điểm:

  1. Có trách nhiệm bảo một số thông tin người dùng liên quan trong cookie (không quan trọng).
  2. Yêu cầu mã hóa nhiều hơn (nhưng không thực sự nhiều mã hóa).

Có chủ đề nào chúng ta cần lưu ý trước khi đưa ra quyết định cuối cùng không?

+0

Ngăn xếp ngăn xếp không phải là một nơi tốt để thảo luận mở. Xem http://stackoverflow.com/faq –

+0

Đã nêu lại câu hỏi dưới dạng phù hợp hơn. –

Trả lời

4

Ứng dụng ngày nay có thể nhanh chóng phát triển rất lớn (chỉ cần xem tất cả những công cụ "nhỏ, đơn giản" như pastebin, jsfiddle v.v.). Và tại một số điểm, một máy tính cao cấp 16 lõi là không đủ (một số người có thể nói "bạn phải recode ứng dụng của bạn để tiết kiệm điện năng bla-bla", nhưng giới hạn kết nối http trên mỗi máy chủ cũng là một vấn đề) . Vì vậy, nếu bạn đang có kế hoạch xây dựng một ứng dụng công khai có thể trở nên phổ biến hơn dự kiến, bắt đầu "vô nghĩa" là con đường để đi! Thành thật mà nói, điều này sẽ chỉ ảnh hưởng đến những người viết những điều thực sự lớn.

Ưu điểm của kẻ giết người trong phiên là: lưu lượng truy cập ít hơn vào cơ sở dữ liệu mySQL và mã hóa dễ dàng hơn nhiều. Nhưng bạn sẽ phải viết lại toàn bộ hệ thống của mình khi ứng dụng của bạn trở nên lớn.

+1

Tôi nghĩ rằng bạn không cần phải có nhiều lưu lượng truy cập hơn tới mySQL - chỉ cần giữ tất cả người dùng trong bộ nhớ (ví dụ: bảng băm lớn theo id người dùng - điều này hoàn toàn khả thi). –