Estoy tratando de encontrar la forma de pasar el contexto http actual de la web a una clase de servicio (o inicializar la clase con una referencia). Estoy haciendo esto para abstraer el resto de la aplicación de la necesidad de saber algo sobre el contexto http.Pasar el contexto web a un 'servicio' en la aplicación ASP MVC
También quiero que el servicio sea comprobable usando TDD, probablemente utilizando uno de los frameworks de Mockable. Por lo tanto, sería preferible usar una interfaz en lugar de una clase real.
Un ejemplo de lo que me gustaría lograr:
class WebInstanceService
{
private IHttpContext _Context;
public WebInstanceService(... , IHttpContext HttpContext)
{
....
_Context = HttpContext;
}
// Methods...
public string GetInstanceVariable(string VariableName)
{
return _Context.Current.Session[VariableName];
}
}
Uno de los principales problemas que tengo es que no hay IHttpContext, el contexto .net http es una subclase de una clase abstracta que puede No te burles (¿es fácil?).
Otro problema es que no puedo inicializar instancias globales de la clase porque el contexto no será relevante para la mayoría de las solicitudes.
que podría hacer la clase estática, y requieren el contexto que se pasa a cada función como se le llama, es decir
public static string GetInstanceVariable(string VariableName, HttpContext Context)
{ ... }
pero esto no hace que la clase más fácil de probar, todavía necesito cree un HttpContext y, además, cualquier servicio que no sea compatible con la web que desee utilizar esta clase de repente debe poder recuperar el contexto que requiere que esté estrechamente acoplado al servidor web; todo el motivo para querer crear esta clase en el primer lugar.
Estoy abierto a TODAS las sugerencias, especialmente aquellas que las personas saben que facilitan las pruebas fáciles de tdd. ¿Cómo me sugieren las personas que aborde este problema?
Saludos
Esto es exactamente lo que trato de hacer, no quiero que los servicios de mi aplicación tengan que preocuparse por acceder a la sesión para recuperar datos, preferiría que fueran a través de la clase WebInstanceService. – Ash
Me gustaría cuestionar incluso WebInstanceService. ¿El servicio necesita saber que es de la web? –