Tôi cố gắng nói chúng bằng những từ khác.
Trong một máy chủ, bạn có thể có nhiều trang asp.net chạy cùng nhau. Mỗi một trang web là một miền ứng dụng .
Bạn phải gán cho mỗi người một nhóm ứng dụng . Nhiều miền ứng dụng (trang web) có thể có cùng một nhóm ứng dụng và vì chúng có cùng một nhóm ứng dụng nên chúng chạy trong cùng một quy trình và trong cùng một tài khoản - và chúng có cùng cài đặt của nhóm. Nếu nhóm này khởi động lại, thì tất cả các trang web trong nhóm đó sẽ khởi động lại.
Bây giờ mỗi nhóm có thể có một hoặc nhiều quy trình công nhân . Mỗi quy trình worker là một chương trình khác nhau chạy trang web của bạn, có các biến tĩnh riêng, chúng có các lệnh dừng start stop khác nhau, v.v. Các quy trình worker khác nhau không giao tiếp với nhau và cách duy nhất để trao đổi dữ liệu là từ các tệp chung hoặc cơ sở dữ liệu chung. Nếu bạn có nhiều quy trình công nhân và một trong số họ tính toán thời gian dài, thì quy trình kia có thể đảm nhận việc xử lý các cuộc gọi internet và hiển thị nội dung.
Khi bạn gán nhiều quy trình công nhân cho một nhóm duy nhất thì bạn tạo khu vườn web được gọi và trang web của bạn giống như được chạy từ nhiều máy tính nếu một máy tính là một máy xử lý.
Mỗi quy trình công nhân có thể có nhiều luồng.
Quá trình nhiều worker ảnh hưởng đến bạn như thế nào:
Khi bạn có một worker, mọi thứ sẽ đơn giản hơn, giữa các ứng dụng của bạn, tất cả các biến tĩnh đều giống nhau và bạn sử dụng lock
để đồng bộ hóa chúng.
Khi bạn chỉ định nhiều quá trình worker thì bạn vẫn tiếp tục sử dụng lock
cho các biến tĩnh, các biến tĩnh không khác nhau giữa nhiều lần chạy trang web của bạn và nếu bạn có một số tài nguyên chung (ví dụ: tạo hình thu nhỏ trên đĩa) thì bạn cần phải đồng bộ hóa quy trình công nhân của mình với Mutex
.
Thêm một lưu ý nữa. Có vẻ như khi bạn thực hiện nhiều quy trình công nhân hơn thì bạn có thể tải trang không đồng bộ trơn tru hơn. Có một vấn đề nhỏ với trình xử lý phiên của asp.net đó là khóa toàn bộ quá trình tải trang - điều đó tốt và không tốt tùy thuộc vào việc bạn biết và xử lý nó - hoặc thay đổi nó.
Vì vậy, hãy nói về một trang web chỉ với nhiều quy trình công nhân. Tại đây, bạn phải đối mặt với vấn đề mà bạn cần đồng bộ hóa sự thay đổi tài nguyên chung của mình Mutex
. Nhưng các trang / trình xử lý sử dụng phiên chúng không đồng bộ vì phiên khóa chúng. Điều này là tốt để bắt đầu bởi vì bạn tránh để thực hiện đồng bộ hóa nhiều điểm này của bạn.
Một số câu hỏi về chủ đề này:
Ứng dụng web bị chặn trong khi xử lý ứng dụng web khác khi chia sẻ cùng một phiên
jQuery Ajax các cuộc gọi đến dịch vụ web dường như là
ASP.NET Server đồng bộ Máy chủ không xử lý các trang một cách không đồng bộ
Thay thế hoàn toàn phiên của ASP.Net
Bây giờ khóa phiên này không ảnh hưởng đến các trang web khác nhau.
Giữa các trang web khác nhau, quy trình làm việc nhiều hơn có thể giúp không trang này chặn trang kia với quy trình chạy dài.
Ngoài ra giữa các trang web khác nhau, nhiều nhóm hơn cũng có thể giúp ích, bởi vì mỗi nhóm có ít nhất một quy trình hoạt động, nhưng hãy nhớ và tự bạn xem bằng cách sử dụng trình khám phá quy trình, mỗi quy trình làm việc chiếm nhiều bộ nhớ hơn của máy tính của bạn và một máy chủ lớn với bộ nhớ 16G và một máy chủ SQL không thể có quá nhiều quy trình làm việc khác nhau - ví dụ trên một máy chủ có 100 trang web được chia sẻ, bạn không thể có 100 nhóm khác nhau.