2013-04-23 41 views
6

Tôi có một ứng dụng web ASP.NET MVC4 và tôi muốn một số mã được thực hiện khi ứng dụng khởi động lần đầu tiên. Mã cơ bản tải một loạt dữ liệu từ cơ sở dữ liệu và lưu trữ nó trong bộ nhớ cache, để bất kỳ yêu cầu nào trong tương lai có thể tìm kiếm dữ liệu từ bộ nhớ cache.Nơi đặt mã khởi tạo trong ứng dụng ASP.Net MVC?

Địa điểm chính xác để đặt mã này ở đâu? Tôi có nên chỉ cần thêm dòng mã của mình vào Global.asax hay có phương pháp hay nhất để gọi mã khi ứng dụng bắt đầu?

Trả lời

6

Có một lớp riêng biệt để thực hiện khởi tạo dữ liệu và gọi phương thức tương ứng từ Global.asax. Các Global.asax về cơ bản nên phục vụ như là một dàn nhạc. Các khởi tạo riêng lẻ như khởi tạo vùng chứa DI, khởi tạo bộ nhớ cache, khởi tạo tuyến đường, v.v. nên nằm trong các lớp riêng của chúng, do đó tôn trọng nguyên tắc trách nhiệm duy nhất.

4
Global.asax.cs:Application_Start() 

Cùng một nơi bạn làm những việc như đường đăng ký.

Đây chính xác là nơi tôi khởi tạo bộ nhớ cache. Tôi cũng kiểm tra thời gian hết hạn bộ nhớ cache trên mỗi Application_BeginRequest() để xem liệu nó có cần được cập nhật hay không.

1

Bạn có thể đặt mã trong Application_Start trong Global.asax.

Hoặc bạn có thể sử dụng loại Lazy trên một thành viên tĩnh và nó sẽ chỉ khởi tạo khi được gọi đầu tiên (và nó vẫn còn trong bộ nhớ cho đến khi ứng dụng chạy). Điều này có lợi thế là không làm chậm ứng dụng khởi động không cần thiết.

Ví dụ, ví dụ này là dành cho một Regex biên soạn, nhưng cũng có thể được thực hiện với tải dữ liệu:

public static Lazy<Regex> LibraryTagsRegex = 
    new Lazy<Regex>(() => new Regex(@"^library/tagged/(?<Tags>.+)", RegexOptions.Compiled)); 
Các vấn đề liên quan