Pregunta

Me estoy iniciando en un nuevo proyecto MVC donde hay algunas reglas peculiares y un poco de extrañeza, y eso me tiene desconcertado. Específicamente, tengo acceso a una base de datos que contiene todos mis datos, pero debe manejarse por completo a través de un servicio web externo. No me preguntes por qué, no entiendo las razones. Así es como es.

Por lo tanto, el CRUD se manejará a través de esta API. Estoy planeando crear una capa de servicio que cubra todas las llamadas, pero tengo problemas para enrollar mi cabeza en torno al modelo ... Para crear mis objetos de dominio basados ??en modelos (clientes, pedidos, etc.) debería:

  1. Créalos todos manualmente
  2. Cree una base de datos ficticia y apunte un ORM hacia ella
  3. Apunte un ORM a la base de datos existente pero ignore la persistencia del ORM en lugar de la API.

Siento que tengo toda la información que necesito para desarrollar esto, pero estoy atrapado con la API. Cualquier puntero o consejo sería muy apreciado.

¿Fue útil?

Solución

Dependiendo de la escala de lo que está haciendo, la opción 3 es peligrosa ya que se asume que el modelo de base de datos es el mismo que el expuesto por el servicio externo. Las opciones 1 y 2 no son IMHO muy diferentes entre sí; en cualquier caso, tendrá que decidir cuáles serán sus objetos, propiedades y comportamientos; simplemente se reduce a si se siente más cómodo al hacerlo en las clases. o tablas de bases de datos.

La clave es asegurarse de que las llamadas de servicio externas estén ocultas detrás de algún tipo de contenedor. Personalmente, luego pondría un repositorio encima de eso para manejar la consulta del contenedor de servicio externo y devolver objetos de dominio.

Otros consejos

En general, los ORM no son conocidos por su capacidad para generar clases de modelo de dominio limpias. Los ORM son conocidos por crear capas de datos, que no parece necesitar en este caso.

Probablemente podría usar una herramienta de generación de código como T4 para generar un primer paso en sus clases de modelo de dominio, en función del servicio web o la base de datos, si eso le ahorra tiempo. De lo contrario, probablemente solo crearías manualmente los objetos de dominio. Incluso si el código genera una primera pasada en los objetos de su dominio, es poco probable que exista un mapeo 1-1 limpio a los objetos de su dominio desde la base de datos o el servicio web, por lo que es probable que tenga que pasar mucho tiempo editando manualmente el dominio generado por el código. clases de todos modos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top