18 votos

Sistema.Web.Abstracciones: ¿qué es bueno?

... absolutamente nada?

¿Qué parte del rompecabezas que hace que se llene de ASP.NET WebForms y ASP.NET MVC respectivamente?

Se puede de alguna manera crear una ASP.NET * la base de la aplicación que utiliza el Sistema.Web.Abstracciones para que pueda ser utilizado en ambos tipos de ASP.NET-aplicaciones web?

En ese caso, ¿cómo se retro-fit las clases en el Sistema.Web.Abstracciones de nuevo en ASP.NET WebForms?

Usted no puede de nuevos objetos en el espacio de nombres, por lo que no puede ser utilizado para burlarse, ¿no?

Actualización: lo Siento por no ser claro que sé que el problema con las pruebas de HttpContext y otras build-it ASP.NET-objetos. Pero gracias por las buenas explicaciones de todos modos.

29voto

Will Puntos 76760

El espacio de nombres contiene los tipos que están diseñados para envolver ASP.NET's de las clases esenciales (tales como HttpSessionState).

Qué, quieres saber por qué?

Muchos de estos núcleo ASP.NET las clases están sellados o estática, lo que es imposible de romper las dependencias entre ellos y su código. Eso significa QUE usted no puede burlarse de las dependencias, por lo que es mucho más difícil para poner a prueba tu ASP.NET código. Así, en lugar de manipular directamente la HttpResponse directamente en el código, manipular a través de la HttpResponseWrapper, que, durante el tiempo de prueba, usted puede stub o un mock para controlar cómo el objeto HttpResponse se comporta.

Si alguna vez has pensado acerca de la creación de estos contenedores, o han implementado uno o dos de ellos antes, tendría que saber que hay un montón de trabajo envuelto en ese espacio de nombres, y yo, me alegro de que lo hizo.

14voto

espertus Puntos 108

De hecho, es para burlarse. - HttpContext es una clase cerrada y no se puede (fácilmente) burlado. HttpContextBase no está sellado y creo que los métodos son virtuales, haciendo burla mucho más fácil.

Mientras que usted no puede de nuevo-de una instancia de HttpContextBase (es decir, para su uso en WebForms), se puede obtener una instancia a través de:

var ctx = new HttpContextWrapper(HttpContext.Current);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: