2012-09-02 34 views
25

Wydaje mi się, że klasa Context jest konsolą kontrolną, której obiekt może wywoływać dowolne funkcje, takie jak Datacontext i DomainContext w usłudze WCF Ria. Czy poprawnie rozumiem tę koncepcję? Jeśli tak, to w jakich okolicznościach należy utworzyć klasę kontekstu w mojej własnej hierarchii klas?Co to jest kontekst?

Poza DataContext, jakie inne dobrze znane klasy kontekstu ma framework .net?

Odpowiedz

34

Możesz myśleć o kontekście jako opakowaniu dla powiązanych "rzeczy", takich jak HttpContext, DbContext, ObjectContext. tzn .: HttpContext zawiera wszelkie informacje, do których można uzyskać dostęp do operacji związanych z HTTP.

DbContext zawiera metody i właściwości komunikacji z bazą danych. Podobnie ObjectContext.

Powiedziałbym, że jest to element zastępczy lub pojemnik powiązanych rzeczy za coś.

15

Dla mnie obiekt kontekstowy definiuje zestaw wartości i/lub funkcji, które są powiązane z bieżącą ścieżką wykonania. Innymi słowy, tak jak mówienie o zagadnieniu technicznym w rozmowie kwalifikacyjnej jest inne niż mówienie o tym samym temacie podczas obiadu dla frajerów, kontekst zmienia się w oparciu o czynniki wpływające na środowisko uruchomieniowe kodu zużywającego. Wydaje się to abstrakcyjne, ale nie mogę wymyślić lepszego sposobu, aby to opisać w tej chwili!

Innym znanym kontekstem w .NET jest obiekt HttpContext. Które wartości zmienią się w zależności od operacji Http. Na przykład adres URL zmieni się na HttpContext.Current.Request.Uri. Nadzieję, że umieszcza to w kontekście dla Ciebie :)

+0

więc kontekst jest czymś więcej niż tylko klasą "pomocnika" ... – Jess

4

Kontekst jest zwykle mechanizmem przechowywania dla grupy działań. HttpContext, dla example

Kapsułuje wszystkie informacje specyficzne dla HTTP na temat pojedynczego żądania HTTP.

Dla przykładu WCF, "kontekst" jest usługą. Różne usługi mają różne konteksty. Konteksty mogą być tak szczegółowe, jak chcesz. Niektóre z nich są szerokie, podobnie jak DomainContext, a niektóre z nich są ziarniste, np. HttpContext.

Konteksty są wszędzie, należy je wprowadzać, gdy trzeba uzyskać dostęp lub ustawić podobnie myślące dane lub funkcje do elementów, które można odłączyć.

Wszystkie konteksty są właśnie takie, po prostu enkapsulują logikę dla poszczególnych zestawów akcji.

Here to kolejny wpis opisujący wzór projektowania kontekstowego.

+2

Podobał mi się wyjaśnienie aż do analogii. – DarthVader

+2

Dość uczciwi, i tak mnie nie sprzedano. Dziękuję za komentarz – devshorts