IIS đã làm điều này, đó là những gì tái chế là tất cả về. CNTT đang tải tệp DLL trong khi phiên bản cũ của ứng dụng vẫn đang chạy. chỉ sau khi việc này được hoàn thành, việc tái chế đã hoàn tất.
Tuy nhiên tải của DLL chỉ là một phần của việc ứng dụng web đã sẵn sàng, cũng có thể tải ban đầu như tải/bộ nhớ đệm cho người sử dụng db, vv
Những hành động này không phải là một phần của quá trình tái chế, chúng xảy ra sau khi tất cả các DLL được nạp lại và việc tái chế đã hoàn tất.
Một thời gian ngắn, tôi gặp sự cố này với ứng dụng có thời gian khởi động rất lớn do hoạt động db/bộ nhớ đệm nặng trong khi khởi động. Vì vậy, tôi đã quan tâm nếu có một số chức năng cho phép chúng tôi thực thi mã trước khi tái chế được đánh dấu là đã hoàn thành, do đó ứng dụng được xem là lần đầu tiên được tái chế khi mọi thứ sẵn sàng chạy. Về cơ bản những gì tôi muốn là một số loại chức năng dàn dựng.
Tôi đã liên lạc với nhóm IIS về vấn đề này, thật đáng buồn là họ nói với tôi rằng không có chức năng như vậy tồn tại, cũng không phải là kế hoạch.
Để giải quyết điều này, bạn có thể thử làm như sau:
- Sử dụng xen kẽ triển khai:
Bạn thiết lập 2 trang web với hồ bơi ứng dụng riêng biệt. Một trong số đó là trang web LIVE, một trang web khác là trang web STAGED. Nếu bạn muốn triển khai thay đổi, bạn chỉ cần triển khai đến trang web STAGED. Sau khi mọi thứ được tải/lưu trữ, vv, bạn chuyển cài đặt URL của ứng dụng web để định tuyến lại các yêu cầu gửi từ LIVE sang STAGED. Vì vậy, một trong những LIVE trở thành STAGED mới và cách khác xung quanh. Việc triển khai tiếp theo sau đó sẽ đi đến STAGED mới một lần nữa và như vậy.
CẬP NHẬT
Rõ ràng họ đã tạo ra một mô-đun IIS cung cấp chức năng này bằng cách bây giờ:
IIS Application ấm-Up Module cho IIS 7.5
Đội IIS đã phát hành phiên bản thử nghiệm beta đầu tiên của mô-đun khởi động ứng dụng cho IIS 7.5. Điều này giúp làm ấm các ứng dụng của bạn thậm chí còn dễ dàng hơn các mô tả trước đó. Thay vì viết mã tùy chỉnh, bạn chỉ định URL của tài nguyên cần thực thi trước khi ứng dụng web chấp nhận các yêu cầu từ mạng.Sự khởi động này xảy ra trong khi khởi động dịch vụ IIS (nếu bạn đã cấu hình nhóm ứng dụng IIS là AlwaysRunning) và khi một quá trình xử lý công việc IIS tái chế. Trong quá trình tái chế, quy trình nhân viên IIS cũ tiếp tục thực hiện các yêu cầu cho đến khi quy trình công nhân mới được hoàn thành được làm ấm, để ứng dụng không bị gián đoạn hoặc các vấn đề khác do bộ nhớ cache chưa được lưu trữ. Lưu ý rằng mô-đun này hoạt động với bất kỳ phiên bản nào của của ASP.NET, bắt đầu bằng phiên bản 2.0.
Để biết thêm thông tin, hãy xem Ứng dụng khởi động trên trang web IIS.net. Để có hướng dẫn minh họa cách sử dụng tính năng khởi động, hãy xem Bắt đầu với Mô-đun Khởi động Ứng dụng IIS 7.5 trên Trang web IIS.
Xem:
http://www.asp.net/whitepapers/aspnet4
Nếu bạn sử dụng ASP.NET 4 Auto Start tính năng:
Bạn vẫn có thể chọn để tự động tái chế các quá trình lao động từ thời gian tới thời gian. Khi bạn làm điều đó, mặc dù, ứng dụng sẽ ngay lập tức khởi động lại và mã khởi động của bạn sẽ thực thi (không giống như ngày hôm nay - nơi bạn phải đợi để yêu cầu tiếp theo việc cần làm).
Sự khác biệt chính giữa Tính năng khởi động và khởi động tự động là Mô đun khởi động là một phần của quy trình tái chế. Thay vì chặn ứng dụng cho các yêu cầu, trong khi chạy mã init.
Chỉ những điều bạn nhận được bằng cách sử dụng tính năng Tự động bắt đầu là bạn không phải đợi người dùng truy cập trang, điều này không giúp ích cho trường hợp của bạn.
Xem bài viết trên blog của Gu:
http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx
UPDATE 2:
Đáng buồn thay Module hâm lại đã bị ngưng cho IIS 7/7.5:
http://forums.iis.net/t/1176740.aspx
Nó sẽ là một phần của IIS8 dù (Nó bây giờ được gọi là ứng dụng khởi Module):
http://weblogs.asp.net/owscott/archive/2012/03/01/what-s-new-in-iis-8.aspx
UPDATE 3:
Như đã chỉ ra trong các ý kiến Mô đun khởi động lại được hiển thị lại cho IIS 7.5 là Mô-đun khởi tạo ứng dụng cho IIS 7.5 sau IIS 8 đã được phát hành:
http://www.iis.net/downloads/microsoft/application-initialization
Cảm ơn rất nhiều để lấy ý kiến của bạn, tôi thu thập mà tôi cần phải di chuyển bộ nhớ cache và tải trước của tôi hành động đến một chế độ ngoài quá trình mà tôi có thể tắt tải một số công việc init của ứng dụng và thực hiện "tự động bắt đầu" một d cuối cùng chờ đợi cho IIS8 :) – sam360
Module Warmup vẫn tồn tại cho IIS 7.5 như Mô-đun khởi tạo ứng dụng cho IIS 7.5_: http://www.iis.net/downloads/microsoft/application-initialization – NicolasF