2012-07-12 15 views
12

lo general, cuando la disposición Un arquitectura multicapa para un proyecto que tengo las siguientes capas:¿Dónde encaja la API web en una arquitectura típica de n niveles?

  • dominio (modelo de dominio, contratos de depósito)
  • datos (repositorios de trabajo en la parte superior del modelo de dominio)
  • Servicio (agregados repos, el almacenamiento en caché, validación)
  • Presentación (la aplicación MVC)

¿Dónde encajaría ASP.NET MVC 4 Web API teniendo en cuenta que será utilizado por la aplicación real y los clientes externos? ¿Es parte de la capa deservicio o utiliza la capa servicio y se sienta en el mismo nivel con la aplicación MVC?

+0

En ese desglose de capa en particular, diría Presentación ... en la medida en que la API web * usa * la capa de servicio. –

+2

@pst, esto es lo que hice al principio, pero parece extraño para mí, ya que no presenta ningún contenido. Entonces, ¿la API web simplemente actuaría como el contenedor HTTP para la capa de servicio? –

+0

@pst, tu comentario más o menos confirmó lo que estaba pensando. ¿Por qué no publicas como respuesta y la acepto? Gracias :) –

Respuesta

8

Podría haber 2 enfoques:

  1. Usted decide consumir su Web API de la aplicación MVC mediante llamadas HTTP. En este caso, el código de llamada (HttpClient) se encuentra en su capa de Datos. Ya sea que esté buscando sus datos de una base de datos o una llamada a un servicio web remoto, realmente no debería importar. En este caso desde la Web API probablemente ya encapsular gran parte de la lógica de negocio de su capa de servicios va a ser muy delgada, sólo una envoltura alrededor de la capa de acceso a datos, o incluso inexistente si no trae ningún valor adicional.

  2. Como Web API está escrita en .NET, puede decidir hacer referencia directamente al ensamblaje que contiene la capa de servicio de esta API en su aplicación MVC. En este caso, la capa de servicio de su aplicación API web se convierte en la capa de servicio de su aplicación MVC.

+0

Creo que el primer enfoque es algo en la línea de lo que estaba pensando. Usted mencionó que HttpClient se encuentra en la capa de datos y esto no está claro para mí. ¿Debería situarse la API en la parte superior de la capa de servicio que se encuentra en la parte superior de la capa de datos y, básicamente, actuar como un contenedor HTTP?Creo que lo que estás describiendo es que la API debería reemplazar ambas capas y la capa de datos es un HttpClient simple o algún tipo de SDK que consulta la API. Es mi entendimiento correcto? –

+2

Si usa el primer enfoque, piense en la API web como algo completamente externo. Dentro de esta API, puede volver a tener una capa de acceso a datos, una capa de acceso al servicio y modelos de visualización expuestos. Pero en términos de sus clientes de API web esto no importa. Es un detalle de implementación. –

+0

Aha, creo que tu último comentario lo hizo clic. Estoy pensando que puedo construir la API en la parte superior del nivel de servicio y, probablemente, exponer un .NET SDK usando RestSharp para el nivel de Aplicación y cualquier cliente externo. ¡Gracias por la respuesta! –

0

Hay dos posibilidades

  • de nivel medio o middleware: aquí es donde normalmente los servicios web y los servicios WCF han estado trabajando. El uso de REST es mucho más ligero que SOAP, por lo que este es un caso de uso de facto. Los servicios web y WCF son mejores con respecto a la generación de clientes, pero Web API se pondrá al día gradualmente.
  • Capa de presentación: esto proporcionará datos a las aplicaciones de una sola página o cualquier sitio web/aplicación moderna que use datos y renders en el cliente.
+0

¿Alguna razón para votar a la baja? – Aliostad

Cuestiones relacionadas