2013-07-23 8 views
5

Próbuję znaleźć różnicę między inproc i outproc w C#. Jeśli mam dll uruchomiony na serwerze i moje pytanie będzie działał zarówno inproc i outproc? Pod względem wydajności, który proces jest lepszy?Różnica między inproc i outproc

+5

Wow, to bardzo szeroki temat, z dużą ilością "to zależy". Ważną różnicą jest to, że kod uruchamiany w-proc może wywoływać nawzajem metody w tej samej przestrzeni adresowej. Jeśli jest to proces wychodzący z procesora, konieczne jest uporządkowanie parametrów i przekroczenie granic przestrzeni procesowej, które kosztują czas i procesor. – Richard

Odpowiedz

12

Serwer inproc działa w tym samym procesie co aplikacja wywołująca. Jest blisko normalnego wywołania funkcji w bibliotece DLL. Wywołując serwer outproc, dane muszą zostać zebrane w całym procesie, co jest kosztowną operacją. Serwer inproc jest szybki, ale może obniżyć twoją aplikację.

+1

Co masz na myśli, mówiąc "obniżyć swój wniosek"? Czy mógłbyś to sprecyzować? Czy rozmawiamy o sesji, czy rejestrujemy? Nie widzę, gdzie określono PO. Jeśli logujesz się, to zakładam, że masz na myśli to, że jeśli operacja dziennika się nie powiedzie, może to spowodować awarię całej aplikacji, ale jak to jest inne niż poza proc? – Sinaesthetic

+0

Myślę, że ma na myśli coś podobnego do tego, że jeśli serwerowi outproc zabraknie pamięci, ulegnie awarii, ale sam program pozostanie przy życiu i będzie mógł go ponownie uruchomić. Np. Std :: vector jest szybki, ale używa stosu/sterty procesu kontenera, a jeśli zabraknie mu pamięci, cały program ulega awarii, ale jeśli zapakujesz go na serwer outproc, program kontenera pozostanie przy życiu. – Dmitry

7

Od MSDN

stanu sesji ASP.NET obsługuje kilka różnych opcji przechowywania danych sesyjnych. Każda opcja jest identyfikowana przez wartość w wyliczaniu SessionStateMode. Na poniższej liście opisano dostępne tryby stanu sesji:

Tryb InProc, który przechowuje stan sesji w pamięci na serwerze sieci Web. To jest domyślne.

Tryb StateServer/OutProc, który przechowuje stan sesji w oddzielnym procesie nazywanym usługą stanu ASP.NET. Zapewnia to zachowanie stanu sesji po ponownym uruchomieniu aplikacji sieci Web, a także udostępnia stan sesji wielu serwerom sieci Web w farmie sieci Web.

Tryb SQLServer przechowuje stan sesji w bazie danych SQL Server. Zapewnia to zachowanie stanu sesji po ponownym uruchomieniu aplikacji sieci Web, a także udostępnia stan sesji wielu serwerom sieci Web w farmie sieci Web.

Tryb niestandardowy, który umożliwia określenie niestandardowego dostawcy magazynu. Tryb wyłączenia, który wyłącza stan sesji.

+2

Ja * myślę * on mówi o stanie sesji COM, a nie ASP.Net. – tzerb