2009-08-24 17 views
5

¿Debo acceder a la clase de membresía asp.net desde el controlador y pasar los resultados a la capa de servicio, o acceder directamente desde la capa de servicio?¿Llamar a la clase de membresía de asp.net desde el controlador o capa de servicio?

Estoy desgarrado porque, por un lado, esto parece una lógica comercial que debe manejarse en la capa de servicio, pero no quiero vincular la capa de servicio al espacio de nombres web ya que esto podría convertirse en una aplicación de Windows. la carretera.

Respuesta

6

respuesta, use IoC para crear una interfaz de membresía que utiliza la capa de servicio. la implementación del sitio web puede usar el espacio de nombres web. Y la aplicación de Windows puede tener una implementación diferente. y dado que puede inyectar esa dependencia, su capa de servicio no tiene que cambiar :-)

+0

Este iba a ser mi próximo plan de ataque, gracias por validar. –

0

¿Es realmente un problema utilizar System.Web? No es diferente de vincularlo a System.Configuration o System.IO. Cualquier aplicación puede hacer uso de ella, ya sea que esté "fuera de línea" o no.

Adjunto rutinariamente mis aplicaciones web a ensamblajes que son más clásicos como ensamblajes "winforms", para tener acceso a objetos de recolección útiles y cosas así.

+0

Mi pensamiento era solo que si cambio a las formas de las garantías, sería más correcto no depender de un ensamblaje no relacionado. De acuerdo, es algo trivial. –

3

La membresía ASP.NET es específica de la Web, por lo que debe accederse en el Controlador. MHO es que la capa de servicio no debe estar conectada a la web. Entonces, para agregar/eliminar usuarios, hazlo a través del Controlador.

OTOH, en la capa de servicio, puede leer Thread.CurrentPrincipal.Identity, que no es específico de la web, pero resulta ser totalmente compatible con la membresía ASP.NET. Entonces, si solo necesita obtener el usuario actual, puede hacerlo sin tener que separar las preocupaciones.

Cuestiones relacionadas