Estoy trabajando en un proyecto en MVC que tiene una aplicación móvil, por lo que una cosa es clara: tenemos que usar la API web para que pueda usarse en la aplicación móvil.
Después de crear API cuando comenzamos a desarrollar el sitio web, estamos confundidos y discutimos sobre si usar API o acceder directamente al objeto Business. Y terminamos después de tener una opinión de un desarrollador más experimentado para consumir API web en lugar de usar el objeto Business directamente.
Estoy teniendo confusión con respecto a esta estructura de solución.
1) Por qué deberíamos usar la API web y hacer una solicitud HTTP (que lleva mucho tiempo) para obtener o colocar datos en lugar del objeto comercial directamente que está en la misma solución.
2) Después de tener argumentos, dijeron qué pasaría si el cliente desea alojar API y web en un servidor en la nube diferente y aplicar el escalado solo en API o puede querer tener una URL diferente para acceder a la API y la Web (que es algo lógico). Entonces, en ese caso, ¿deberíamos llamar a la API web desde la aplicación MVC en la misma solución?
3) Si estamos alojando API y Web en diferentes hosting, significa que nuestra Web usará WebClient y tendrá una llamada HTTP en cada navegación. ¿Es correcto?
4) Si vamos a hacer un objeto comercial desde la API y el alojamiento web en un servidor diferente, entonces, si algo cambia en BL, será necesario actualizar la compilación en ambos servidores.
5) O deberíamos crear un solo proyecto para API y podemos agregar vistas o páginas html para desarrollar una interfaz web para que de esa manera podamos llamar directamente a API desde ajax.
Según mi conocimiento, # 5 es la mejor solución o API es solo para acceso de terceros. Si tenemos DB, EF, capa de datos y capa empresarial en la misma solución, entonces no deberíamos usar API para hacer llamadas HTTP y acceder directamente a objetos comerciales. (corríjame si me equivoco) Se necesita API cuando la aplicación móvil o de escritorio o cualquiera quiere acceder a la aplicación para que podamos tener el mismo repositorio y la misma capa de datos.
En mi escenario, tengo que crear una API, ya que también tenemos una aplicación móvil, y en el lado de la API del proyecto llamamos capa empresarial (proyecto separado) y la capa empresarial se comunica con la capa de acceso a datos (proyecto separado). Entonces, mi pregunta es si alojamos nuestra API y nuestra web en diferentes servidores, entonces llamar a la API, que es una solicitud HTTP, puede tomar más tiempo en lugar de usar el método de la capa empresarial a medida que creamos el proyecto y tenemos .dll de la capa empresarial. En el controlador API, acabamos de convertir la venta de nuestro negocio a formato json.
He buscado en internet pero no obtuve una respuesta convincente. Encontré un blog http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx discutiendo el mismo punto pero nuevamente en ese blog, mi pregunta es ¿por qué debemos considerar el escenario # 3?
Actualización: podemos tener un proyecto API diferente y un proyecto MVC y podemos llamar a la API desde la web usando JavaScript o podemos usar el patrón MVVM.