Odpowiedź JaredPar jest dobra, z tą różnicą, że nie odnotowuje wartości raison d'etre dla AppDomains - co oznacza, że można WYBRAĆ Zgromadzenie tylko przez wyładowanie jego AppDomain. Jeśli jesteś długo działającym procesem systemu operacyjnego i spodziewasz się załadować , a następnie rozładować zespoły z dowolnego powodu, potrzebujesz AppDomain. Prototypowym przykładem jest ASP.NET, który ładuje zespoły kodu aplikacji na żądanie, a następnie może je później wyładować, gdy aplikacje nie są już aktywnie używane.
Kosztem, jaki zapłacisz za możliwość rozładowania, jest ta niezależność - musisz komunikować się przez granicę AppDomain, Nie można wykonać prostego wywołania metody. Musisz zarządzać cyklem życia aplikacji AppDomain. Itp
Jeśli wystarczy dynamicznie załadować zespoły i nie sądzę, musisz wyładować je ciągu życia jednego procesu to prawdopodobnie nie trzeba uruchamiać wiele AppDomains. Dobrym przykładem może tu być bogata aplikacja obsługująca model wtyczki, w której wyszukuje zespoły wtyczek w katalogu "etc" i ładuje je wszystkie. Jeśli jednak model wtyczki wymaga wyładowania wtyczek ... dobrze.
Istnieją niespotykane scenariusze. Przypuśćmy, że chcesz załadować dwie różne wersje Zgromadzenia w tym samym czasie. Możesz natrafić na pułapki, jeśli nie segregujesz ich z AppDomains. Ale to będzie dość rzadkie.
Głównym scenariuszem uzasadniającym istnienie AppDomains jest długotrwały proces, który musi umożliwiać rozładowanie złożeń.
Oczywiście aplikacje mogą polegać na procesie systemu operacyjnego, gdy chcemy zwolnić zespół. Innymi słowy, możesz mieć 3 lub 4 współpracujące ze sobą procesy, każdy z własnym zbiorem Zespołów, a gdy chcesz zwolnić zespół, po prostu zamknij proces, który go obsługuje. Ale AppDomain oferuje do tego lepszy mechanizm, bez konieczności zatrzymywania/uruchamiania procesu lub komunikatów między procesami, który jest jeszcze cięższy niż opisane powyżej komunikaty Cross-AppDomain. Mam na myśli to, że nadal działa zdalnie, ale jest wolniejszy i zmienia kontekst.
Głównym problemem jest to, że nie rozumiem zdolności, które uzyskuję, korzystając z nich. Czytałem, że są lekkim procesem, ale wydaje się, że noszą coś więcej niż tylko to, a może brakuje mi czegoś, co mogłoby mnie później ugryźć. IE Zabieram więcej, niż potrzebuję. –