2013-07-23 32 views
5

Tôi đang cố gắng tìm sự khác biệt giữa inproc và outproc trong C#. Nếu tôi có một dll chạy trên máy chủ và câu hỏi của tôi là nó sẽ chạy trong cả hai inproc và outproc? Hiệu suất-khôn ngoan mà quá trình là tốt hơn?Sự khác biệt giữa inproc và outproc

+5

Ồ, đây là một chủ đề rất rộng, với rất nhiều "nó phụ thuộc". Một sự khác biệt quan trọng là mã chạy trong proc có thể gọi cho từng phương thức khác trong cùng một không gian địa chỉ. Nếu nó là out-proc cần phải được marshalling các thông số và vượt qua ranh giới không gian quá trình, mà chi phí thời gian và CPU. – Richard

Trả lời

12

Máy chủ inproc chạy trong cùng một quá trình với ứng dụng gọi điện. Nó gần với một cuộc gọi chức năng bình thường trên một dll. Gọi một máy chủ outproc, dữ liệu cần phải được marshalled trên toàn bộ quá trình boundry đó là một hoạt động đắt tiền. Máy chủ inproc nhanh nhưng có thể làm giảm ứng dụng của bạn.

+1

Bạn có ý gì khi "đưa ứng dụng của bạn xuống"? Bạn có thể cụ thể hơn không? Chúng ta đang nói chuyện, hoặc đăng nhập? Tôi không thấy OP được chỉ định ở đâu. Nếu đăng nhập, sau đó tôi giả định những gì bạn có nghĩa là nếu các hoạt động đăng nhập thất bại, sau đó nó có thể sụp đổ toàn bộ ứng dụng, nhưng làm thế nào là rằng bất kỳ khác nhau hơn proc ra? – Sinaesthetic

+0

Tôi nghĩ rằng anh ấy có nghĩa là một cái gì đó tương tự như nếu máy chủ outproc hết bộ nhớ, nó sẽ sụp đổ nhưng bản thân chương trình sẽ vẫn còn sống và có thể khởi động lại nó. Ví dụ std :: vector là nhanh nhưng sử dụng stack/heap của quá trình container, và nếu nó hết bộ nhớ, toàn bộ chương trình bị treo, nhưng nếu bạn bọc nó trong một máy chủ outproc, chương trình container vẫn còn sống. – Dmitry

7

Từ MSDN

trạng thái phiên ASP.NET hỗ trợ tùy chọn lưu trữ khác nhau cho dữ liệu phiên. Mỗi tùy chọn được xác định bởi một giá trị trong liệt kê SessionStateMode. Danh sách sau đây mô tả các chế độ trạng thái phiên có sẵn:

Chế độ InProc, lưu trữ trạng thái phiên trong bộ nhớ trên máy chủ Web. Đây là mặc định.

Chế độ máy chủ/OutProc, lưu trữ trạng thái phiên trong một quá trình riêng biệt được gọi là dịch vụ trạng thái ASP.NET. Điều này đảm bảo rằng trạng thái phiên được giữ nguyên nếu ứng dụng Web được khởi động lại và cũng làm cho trạng thái phiên có sẵn cho nhiều máy chủ Web trong một trang trại Web.

Chế độ SQLServer lưu trữ trạng thái phiên trong cơ sở dữ liệu SQL Server. Điều này đảm bảo rằng trạng thái phiên được giữ nguyên nếu ứng dụng Web được khởi động lại và cũng làm cho trạng thái phiên có sẵn cho nhiều máy chủ Web trong một trang trại Web.

Chế độ tùy chỉnh, cho phép bạn chỉ định nhà cung cấp lưu trữ tùy chỉnh. Chế độ tắt, tắt chế độ phiên.

+2

Tôi nghĩ * anh ấy nói về COM, chứ không phải trạng thái phiên ASP.Net. – tzerb

Các vấn đề liên quan