Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 20252|Odpowiedź: 1

[Źródło] Zakres instancji komponentu autofac

[Skopiuj link]
Opublikowano 14.09.2018 13:22:21 | | | |
Zakres instancji decyduje, jak usługi są współdzielone między żądaniami.

Oryginalny adres:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Jedna instancja na każdą zależność

Dzięki tej opcji za każdym razem, gdy usługa jest żądana, zwracana jest nowa instancja. Użyj InstancePerDependency(). To jest opcja domyślna. Kod poniżej, linie 2 i 3, są równoważne.

Poniższy kod generuje nową instancję dla każdej pętli, co daje łącznie 100 instancji.

Pojedynczy przypadek

Użyj tej opcji, aby zażądać usługi zarówno w skali root, jak i zagnieżdżonej, oba zwracając tę samą instancję. Użyj SingleInstance() do określenia.


Kod poniżej, w1 i w2, to zawsze ten sam obiekt, a klasa Worker występuje tylko w jednym przypadku w 100 pętliach.


Jeden przypadek na zakres cyklu życia

Użyj tej opcji, aby zażądać usługi w określonym ILifetimeScope, zwracając tylko jedną instancję. Użyj InstancePerLifetimeScope(). W następującym kodzie 100 razy w1 w scope1 to ten sam obiekt, a 100 razy w2 w scope2 to ten sam obiekt, ale w1 i w2 nie są tym samym obiektem.


Jedna instancja na dopasowany zakres cyklu życia

Podobnie jak [jeden przypadek na cykl życia] powyżej, ale z większą kontrolą. Użyj tej opcji, aby umożliwić obiektowi ILifetimeScope otrzymanie tagu. W zasięgu walki tag team występuje tylko jeden przypadek. Użyj metody InstancePerMatchingLifetimeScope().

W poniższym kodzie w1 i w2 są takie same, w3 i w4 są takie same, ale w1 i w3 są różne.

Podczas parsowania należy podać odpowiednie znaczenie, a następujący kod wyrzuca wyjątek.

Jedna instancja na każde żądanie

Niektóre aplikacje naturalnie mają semantykę żądań, jak ASP.NET MVC lub WebForm. [Jedna instancja na żądanie] jest implementowana na podstawie [jedna instancja na dopasowany zakres cyklu życia], poprzez dostarczanie znaczników zakresu, funkcji rejestracji oraz integracji typów wspólnych. W zasadzie [jedna instancja na zakres cyklu życia dopasowania].

ASP.NET Core używa jednej instancji na zakres cyklu życia zamiast jednej instancji na każde żądanie.

Jedna instancja na posiadanie

<T> Typ współukrytego skojarzenia Owned tworzy zagnieżdżone zakresy cyklu życia. Dzięki rejestracji instancji na własność możesz ograniczyć zależności do własnych instancji.

W takim przypadku usługa ServiceForHandler jest ograniczona do zakresu instancji MessageHandler.


Zakres gwintów

Autofac może wymusić obiekty wątku A, aby nie spełniały zależności wątku B.

Pozwól każdemu stworzyć własny zakres życia

Ważne: W scenariuszu wielowątkowym uważaj, aby nie posprzątać zakresu nadrzędnego.W przeciwnym razie podzakresy w wątku pochodnym nie będą w stanie rozwiązywać usługi.

Każdy wątek będzie miał własną instancję MyThreadScopedComponent, która jest w zasadzie singletonem opartym na cyklu życia. Instancje w zakresie nie są udostępniane zewnętrznie, więc łatwo jest izolować komponenty między wątkami.

Dodając parametr ILifetimeScope, zakres nadrzędny może zostać wstrzyknięty do kodu generującego wątek, a Autofac automatycznie wstrzykuje aktualny zakres, który następnie może być użyty do tworzenia zagnieżdżonych zakresów.

Jeśli chcesz to kontrolować dalej, możesz użyć [jedna instancja na dopasowany zakres cyklu życia] do powiązania komponentów z zakresem wątków z wewnętrznymi zakresami cyklu życia, jak pokazano na rysunku:



"Kontekst" na diagramie to zakres cyklu życia utworzony metodą BeginLifetimeScope.





Poprzedni:Efekty kliknięcia myszką na front-end: wolność, demokracja, dobrobyt
Następny:{&quot;error_msg&quot;: &quot;Certyfikacja IAM nie powiodła&quot;}
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com