2012-05-18 25 views
5

Realicé algunas búsquedas pero no encontré ninguna respuesta disponible a este problema.Cuál es la arquitectura correcta para MVC4 WebAPI

bien, mi arquitectura MVC 3 es la siguiente:

- Project.EDM (contains only the entity framework edmx file and its .tt and .cs entity classes) 
- Project.DAL (contains IXxxRepositiory and XxxRepository where CRUD is performed on the entity classes) 
- Project.Web (the MVC3 project. Controllers transfer data from ViewModels into entity models and call the CRUD functions in the DAL repositories.) 

El WebApi en MVC4 parece tan atractivo ya que vamos a ser capaces de llamar a las operaciones CRUD de otras aplicaciones. Todos amamos esta idea.

Pero los ejemplos existentes que he encontrado tienen las operaciones CRUD dentro del proyecto MVC4 bajo ApiController. Estoy acostumbrado a poner estas operaciones en un proyecto DAL separado. ¿Cuál es la opción recomendada? ¿Todavía podemos tener una clase DAL separada? ¿Cómo diseñan los expertos la arquitectura?

Gracias por todos los consejos útiles.

+2

Esta pregunta es un poco subjetiva – MilkyWayJoe

+0

Puede ser útil si proporciona un enlace al ejemplo que está viendo. – Bull

Respuesta

7

Lo que hago es la siguiente:

  • repositorio para consultar la base de datos de capa
    • servicio para validar cosas y para evitar la duplicación de código
      • Web UI
      • Web API

Por lo tanto, tanto la IU como la API tendrán uno o varios servicios, que a su vez tienen uno o varios objetos de repositorio.

La única razón por la que la mayoría de los ejemplos consultan directamente la base de datos desde el ApiController es probablemente debido a su simplicidad.

+0

¿Es su API web otro proyecto MVC4? – Blaise

+2

Sí, generalmente creo proyectos separados para todo. Así que mi solución podría tener este aspecto: - Contexto (sostiene el EDMX) - Repositorios - Servicios (Service Layer) - Entidades - ViewModels - WebUI - WebAPI - DependencyInjection (porque el núcleo DI debe ser llamado desde los proyectos API y UI) –

+0

Wow! ¡Realmente has separado todo! ¿A dónde van las operaciones CRUD? ¿Todavía están en repositorios? – Blaise

Cuestiones relacionadas