Thông báo: Trường hợp ứng dụng, ứng dụng các sự kiện, và nhà nước ứng dụng trong ASP.NET

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:312607
TÓM TẮT
ASP.NET HttpApplication đối tượng ẩn nhiều khái niệm phức tạp để đơn giản hóa các chương trình mô hình. Bài viết này mô tả một số các phức tạp. Ngoài ra, điều này bài viết mô tả như thế nào ASP.NET xử lý vấn đề tương thích với các cổ điển Microsoft Active Server Pages (ASP) Ứng dụng đối tượng.

Bài viết này được chia thành sau đây phần:
THÔNG TIN THÊM

Ứng dụng lớp và trường hợp ứng dụng

Một ứng dụng lớp được định nghĩa trong tập tin Global.asax. Mã trong Global.asax xác định một lớp mới mà có nguồn gốc từ System.web.HttpApplication. Nếu không có một tập tin Global.asax, lớp cơ sở, HttpApplication, được sử dụng như là lớp ứng dụng.

ASP.NET runtime tạo ra như nhiều trường hợp của các lớp học ứng dụng khi cần thiết để xử lý yêu cầu cùng một lúc. Đối với hầu hết các ứng dụng, con số này là hạn chế về số lượng chủ đề và vẫn còn trong khoảng 1 đến 100, tùy thuộc vào phần cứng, tải máy chủ, cấu hình, và như vậy. Nhiều yêu cầu tái sử dụng ứng dụng trường hợp, và danh sách miễn phí các ứng dụng trường hợp được lưu giữ trong các thời kỳ giảm tải. Trường hợp ứng dụng được sử dụng một cách an toàn sợi, có nghĩa là, một trong những yêu cầu một lúc. Điều này có ý nghĩa quan trọng:
  • Bạn không cần phải lo lắng về khóa khi bạn truy cập các thành viên không tĩnh của giai cấp ứng dụng.
  • Ứng dụng mã có thể lưu trữ dữ liệu yêu cầu cho mỗi yêu cầu trong các thành viên không tĩnh của lớp học ứng dụng (nhưng không phải sau khi các EndRequest sự kiện vì sự kiện này có thể duy trì các yêu cầu cho một chặng đường dài thời gian).
Bởi vì các thành viên tĩnh của bất kỳ lớp học, trong đó có một ứng dụng lớp, có không thread-safe, mã người sử dụng phải cung cấp thích hợp khóa cho truy nhập cho các thành viên tĩnh. Điều này áp dụng cho bất kỳ thành viên tĩnh mà bạn thêm vào các ứng dụng lớp.

Sử dụng các hướng dẫn sau để truy cập vào các Ví dụ ứng dụng được liên kết với các yêu cầu hiện tại:
  • Từ Global.asax, sử dụng các Điều này hoặc Tôi đối tượng.
  • Từ một trang, tất cả các trang bao gồm một mạnh mẽ-gõ ApplicationInstance bất động sản.
  • Từ các HttpContext đối tượng, sử dụng các HttpContext.ApplicationInstance bất động sản (mà bạn gõ như HttpApplication).
Chú ý Bởi vì Ứng dụng đề cập đến từ điển nhà nước toàn cầu ứng dụng trong cổ điển ASP, ASP.Sử dụng NET ApplicationInstance và không phải Ứng dụng như một tên đặc tính để đề cập đến các ứng dụng ví dụ mà xử lý các yêu cầu hiện tại.

Sự kiện ứng dụng

Trọn đời của một yêu cầu bao gồm một loạt các ứng dụng sự kiện (và tiềm ẩn một số bước mà ASP.Triển khai mạng). Những sự kiện này liệt kê dưới đây theo thứ tự chúng được thực hiện:
  1. BeginRequest
  2. AuthenticateRequest sự kiện
  3. DefaultAuthentication sự kiện nội bộ
  4. AuthorizeRequest sự kiện
  5. ResolveRequestCache sự kiện
  6. Nội bộ bước để "xử lý bản đồ" (khi biên soạn mất vị trí, một trường hợp trang được tạo ra)
  7. AcquireRequestState sự kiện
  8. PreRequestHandlerExecute sự kiện
  9. Nội bộ bước "thực thi lệnh xử lý" (khi trang mã này là bị hành quyết)
  10. PostRequestHandlerExecute sự kiện
  11. ReleaseRequestState sự kiện
  12. Nội bộ bước để lọc hồi đáp UpdateRequestCache sự kiện
  13. UpdateRequestCache sự kiện
  14. EndRequest sự kiện
Chú ý Nếu bạn sử dụng Server.Transfer hoặc Response.Redirect(string), yêu cầu hiện tại có hiệu quả bị gián đoạn và một số sự kiện được liệt kê ở trên sẽ không được nêu ra. Tuy nhiên, các EndRequest sự kiện sẽ được nâng lên trong trường hợp này.

Các mục sau đây có thể xử lý các sự kiện này:
  • Nội bộ ASP.NET trang khuôn khổ (ví dụ, bước 6, 9, và 12 trong danh sách trước).
  • HTTP mô-đun đó được cấu hình cho ứng dụng. Các mặc định danh sách các mô-đun HTTP được xác định trong tập tin Machine.config.
  • Mã trong Global.asax là nối thông qua các Application_ ngày EventName phương pháp hoặc đó là nối một cách rõ ràng khi bạn thêm xử lý sự kiện Đối với một tên xử lý khác.
Mỗi sự kiện có thể đồng bộ và không đồng bộ thuê bao. Thuê bao không đồng bộ được thực hiện lần đầu tiên. Không phải tất cả sự kiện luôn luôn bị hành quyết; sự kiện duy nhất luôn luôn thực hiện EndRequest. Do đó, thực hiện tất cả các after-request dọn trong các EndRequest sự kiện.

Chú ý Trong hầu hết trường hợp, các phản ứng thực tế được gửi tới khách hàng sau khi Ví dụ ứng dụng kết thúc với những phản ứng (đó là sau khi EndRequest).

Application_OnStart và Application_OnEnd

ASP.NET giới thiệu độc đáo Application_OnStartApplication_OnEnd "sự kiện" để tương thích với cổ điển ASP. Những sự kiện này "" thi hành chỉ một lần trong đời sống của một ứng dụng và không phải cho mỗi ứng dụng ví dụ. Vì vậy, nếu bạn thay đổi các thành viên không tĩnh tại đây phương pháp, bạn ảnh hưởng đến trường hợp chỉ có một ứng dụng và không phải tất cả trường hợp. Bạn có thể khởi tạo một ví dụ ứng dụng hoặc trong các nhà xây dựng hoặc bằng ghi đè các Init phương pháp.

Application_OnStart là một tương đương logic với các nhà xây dựng lớp cho các ứng dụng lớp, nhưng nó cung cấp một lợi thế: các mã có quyền truy cập vào các HttpContext Đối với yêu cầu đầu tiên tới ứng dụng.

Ứng dụng nhà nước

Ứng dụng quốc là một từ điển toàn cầu của các đối tượng vào cuối bị ràng buộc, mà cổ điển ASP giới thiệu để bù cho sự vắng mặt của các biến toàn cầu trong Microsoft Visual Basic script Edition (VBScript). Trong ASP.NET, bạn có thể truy cập ứng dụng nhà nước thông qua một trong những cách sau:
  • Ứng dụng bất động sản (trong đó được định nghĩa trong cả hai HttpApplicationTrang các lớp học)
  • HttpContext.Application
ASP.NET bao gồm nhà nước ứng dụng chủ yếu cho các khả năng tương thích với cổ điển ASP vì vậy mà nó là dễ dàng hơn để di chuyển các ứng dụng hiện có để ASP.NET. Đó là khuyến cáo rằng bạn lưu trữ dữ liệu thành viên tĩnh của các ứng dụng lớp thay vì trong các Ứng dụng đối tượng. Điều này làm tăng hiệu suất bởi vì bạn có thể truy cập một tĩnh biến nhanh hơn bạn có thể truy cập một mục trong ứng dụng từ điển.

Để truy cập các thành viên tĩnh ứng dụng từ các trang trong Microsoft Visual C#.NET và Microsoft Visual Basic.NET, bạn phải sử dụng các ClassName thuộc tính trong Global.asax để đặt tên lớp ứng dụng của bạn. Cho Ví dụ:
<%@ Application Language="C# | VB" ClassName="MyClass" %>				
Nếu một thành viên tĩnh được đặt tên theo MyStaticMember trong tập tin Global.asax của bạn, bạn có thể sử dụng MyClass.MyStaticMember để truy cập nó từ trang của bạn.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 312607 - Xem lại Lần cuối: 08/27/2011 19:19:00 - Bản sửa đổi: 2.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

  • kbappdev kbhttpruntime kbinfo kbstate kbmt KB312607 KbMtvi
Phản hồi