2009-11-05 23 views
5

Estoy en la etapa de creación de un servicio wcf para mi aplicación que proporcionará los productos. Tengo el modelo de dominio y la capa de persistencia bajo la aplicación.Mover capa de acceso a datos al servicio WCF

Para el servicio también necesitaré un modelo de dominio y una capa de persistencia similares. No quiero duplicar cosas y tampoco quiero compartir bibliotecas y acoplar la aplicación y el servicio.

Esto me hace pensar si debería crear un servicio separado (o implementar en este nuevo que estoy creando) la capa de acceso a datos y usar ese servicio para el acceso a datos desde la aplicación también, por lo tanto habrá solo una capa de acceso a datos que es compartida tanto por la aplicación como por el servicio

¿Es este un buen patrón y hay grandes problemas que me esperan en el futuro? Si es así, ¿cuál sería su sugerencia? ¡Gracias!

Respuesta

1

una vez estuve en la misma situación que usted. al principio, durante el desarrollo, no había servicios de wcf disponibles para el acceso a los datos, por lo que utilicé nhibernate para el acceso a los datos. para facilitar el cambio del acceso directo de nhibernate a los servicios wcf para la recuperación de datos, tuve algo como:

client app -> Repository Interfaces -> Repository Implementations (al principio, este recuperó los datos a través de nhibernate, la segunda implementación a través de wcf).

tener una interfaz que oculta los detalles de implementación desde el código de su aplicación puede ser una solución adecuada para su problema. (Por cierto, el código de acceso a datos nhibernate se reutilizó principalmente en el lado del servidor, por lo que no tendrás que tirar cosas).

+0

Esta es exactamente mi situación ya que también estoy usando nhibernate y tengo interfaces de repositorio y luego las implementaciones de repositorio en una biblioteca separada.¿Hay algún ejemplo concreto que lo haga a través de un servicio que yo pueda ver? – kaivalya

+0

lo siento, no puedo darle acceso a nuestra base de códigos. Sin embargo, si solo accede a una interfaz desde su aplicación cliente, no tiene que preocuparse por la implementación real. cuando se trata de transmitir entidades nhibernate a través de wcf, solucione los problemas de serialización con colecciones cargadas de forma diferida. wcf no le gustan los proxies nhibernate –

1

Si tiene servicios WCF como capa de acceso a recursos, puede mover su capa de acceso a datos existente lejos de su aplicación cliente porque su servicio web WCF es el punto final para el intercambio de datos.

Por el momento,

del cliente de aplicación < -> base de datos Access

Esta es una mala práctica, se expone a su base de datos pública y el puerto de la base de datos podría haber sido bloqueado por defecto.

con el servicio web,

aplicación cliente < -> Servicios Web (acceso de base de datos)

Se deben tener la implementación de seguridad apropiada (HTTPS y autenticación). El servicio web normalmente se aloja en el puerto amigo 80 y no tiene que exponer el público de la base de datos subyacente.

+0

Esto es una mierda. No sabes de qué estás hablando. – DarthVader

-1

Creo que debe haber solo una capa de acceso a datos en su aplicación. Por lo tanto, si crea un servicio y obtiene los datos de eso, elimine todas las conexiones directas de datos de su cliente.

Esto también significa que no tiene que hacer que su base de datos sea pública, y también, la posibilidad de que alguien altere su base de datos será bastante baja.

Cuestiones relacionadas