System.Www.Abstrakcje: do czego to służy?
... absolutnie nic?
Jaką część układanki wypełnia ASP.NET WebForms i ASP.NET MVC ?
Czy można jakoś stworzyć ASP.NET * base-aplikacja wykorzystująca System.Www.Abstrakcji, więc może być stosowany w obu rodzajach aplikacji ASP. NET-web?
W takim przypadku, jak oni retro-dopasować klasy w systemie.Www.Abstrakcje z powrotem do ASP.NET WebForms?
Nie można dodawać nowych obiektów z przestrzeni nazw, więc nie może być używany do wyśmiewania, prawda?
Update : Przepraszam za niejasności, że znam problem z testowaniem HttpContext i innych build-it ASP. NET-objects. ale i tak dzięki za dobre wyjaśnienia.
2 answers
Przestrzeń nazw zawiera typy przeznaczone do zawijania ASP.NET podstawowych klas (takich jak HttpSessionState).
Co, chcesz wiedzieć dlaczego?
Wiele z tych rdzeni ASP.NET klasy są zapieczętowane lub statyczne, co uniemożliwia zerwanie zależności między nimi a kodem. Oznacza to, że nie możesz wyśmiewać tych podstawowych zależności, co znacznie utrudnia testowanie twojego ASP.NET kod. Tak więc, zamiast bezpośrednio manipulować HttpResponse bezpośrednio w kodzie, manipulujesz nim za pomocą HttpResponseWrapper, który w czasie testu można stubować lub wykreślać, aby kontrolować zachowanie obiektu HttpResponse.
Jeśli kiedykolwiek myślałeś o stworzeniu tych wrapperów lub zaimplementowałeś jedną lub dwie z nich wcześniej, wiesz, że w tej przestrzeni nazw jest wiele pracy i cieszę się, że to zrobili.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 11:40:20
To jest rzeczywiście do wyśmiewania. - HttpContext jest klasą zamkniętą i nie można jej (łatwo) wyśmiewać. HttpContextBase nie jest zapieczętowany i wierzę, że jego metody są wirtualne, co znacznie ułatwia wyśmiewanie.
Chociaż nie można utworzyć nowej instancji HttpContextBase (powiedzmy, do użytku w formularzach internetowych), można ją uzyskać poprzez:
var ctx = new HttpContextWrapper(HttpContext.Current);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 11:39:49