2011-08-29 19 views
7

Mam witrynę internetową i usługę internetową w tym samym katalogu wirtualnym, a niektóre strony internetowe wywołują usługę WWW.Instancja aplikacji IIS AppDomain

Kiedy usługa sieci Web jest wywoływana, czy usługi IIS tworzą nową AppDomain lub czy uruchamia usługę sieci Web w tym samym AppDomain?

Czy jest w tym ustawienie? Na jednym komputerze wydaje się tworzyć nową AppDomain. Czy zmienia to tryb puli aplikacji z Integrated na Classic?

+0

Usługa internetowa WCF lub ASP .NET? – Jeff

Odpowiedz

8

Pule aplikacji IIS uruchamiają pojedynczy proces roboczy (domyślnie). W ramach tego procesu roboczego tworzona jest wersja AppDomain dla każdej aplikacji IIS (strony internetowej). O ile mi wiadomo, dowolny kod wykonywany w ramach tej aplikacji IIS będzie działał w tym samym AppDomain (chyba że samodzielnie tworzysz własne domeny aplikacji dla dzieci). Możesz dostosować liczbę procesów roboczych na stronę, ale realistycznie to zrobić tylko wtedy, gdy zauważysz, że masz problemy z wydajnością (których nie można rozwiązać przez odseparowanie pul aplikacji). Jeśli uruchomisz wiele domen aplikacji na stronę, kod działający w tych oddzielnych domenach aplikacji nie może współużytkować stanu (na przykład sesja InProc) i może komunikować się tylko przez serializację - nie jest idealny.

Jeśli chodzi o ASP.NET i WCF; gdy są hostowane w IIS, domyślnie działają w trybie równoległym, w ramach tego samego AppDomain, to pozwala im współdzielić stan, ale żądania WCF nie są przetwarzane przez środowisko wykonawcze ASP.NET, natomiast wywołania do usług WCF są przechwytywane i przetwarzane przez środowisko wykonawcze WCF. (Chociaż połączenia z plikami .svc są nadal routowane przez program ASP.NET). W trybie side-by-side wywołania WCF nie przestrzegają konfiguracji, bezpieczeństwa, podszywania się itp., Które mógłbyś skonfigurować dla swojej strony ASP.NET.

WCF na IIS można również uruchomić w trybie zgodności z ASP.NET, w którym implementacja WCF jest zarządzana przez procedurę obsługi http, a tym samym przetwarzana również przez potok ASP.NET. Jeśli uważasz, że Twoje usługi wymagają tylko obsługi HTTP, możesz rozważyć hosting usługi w trybie zgodności, aby uzyskać dostęp do potęgi i elastyczności potoku ASP.NET.

W odniesieniu do trybu zintegrowanego i klasycznego potoku, w trybie zintegrowanym, środowisko ASP.NET jest uruchamiane przez w3wp.exe jako integralna część potoku przetwarzania IIS. Oznacza to, że wszystko przy użyciu niestandardowych procedur obsługi itd., Które można podłączyć do potoku (nawet w przypadku udostępniania treści spoza usługi .NET, np. PHP), zostanie załadowane i wykonane w tym samym AppDomain.

W trybie klasycznym program ASP.NET jest uruchamiany w jego procesie roboczym właściciela, aspnet_wp.exe i jest połączony z potokiem przetwarzania IIS jako filtr ISAPI. Sądzę, że ta sama mechanika związana z używaniem AppDomain ma również zastosowanie tutaj.

Powiązane problemy