¿Cuál es la diferencia entre una aplicación API y una aplicación web?

95

He estado leyendo algunos tutoriales sobre la implementación de aplicaciones web y aplicaciones API en Azure. Sin embargo, todavía no estoy seguro de por qué usaría uno sobre otro.

Puedo crear una nueva solución .NET con controladores API e implementarla como una aplicación web, entonces, ¿por qué necesitaría específicamente una aplicación API? ¿Están optimizados específicamente para ASP.NET Web API, donde las aplicaciones web están para entregar HTML?

envio
fuente

Respuestas:

75

Actualizando la respuesta al estado actual de Azure,

Los servicios de aplicaciones ahora reemplazan todos los tipos de aplicaciones móviles, API y web como un marco de aplicación único con toda la funcionalidad renovada para hacer las cosas más accesibles en todos los tipos de aplicaciones. Actualmente, todas las aplicaciones web, móviles y de API se denominan colectivamente servicios de aplicaciones. Todavía ofrecemos al cliente la posibilidad de crear una aplicación móvil y una aplicación web en la galería, pero eso básicamente se resuelve en una aplicación de servicio de aplicaciones.

https://azure.microsoft.com/en-us/documentation/articles/app-service-api-apps-why-best-platform/

Funciones para el trabajo móvil para la aplicación web, así como Easy Tables y Easy API. Y las funciones para aplicaciones API como API Cors y definiciones API ahora también funcionan en aplicaciones web. Un cliente puede alojar una sola aplicación web para que actúe como cualquier servicio móvil o una API con todas las funciones que se ofrecen a través de los servicios de la aplicación.

También tenemos un nuevo servicio en vista previa especialmente dirigido a aplicaciones API al ofrecer una experiencia de administración para sus API. Básicamente, puede controlar la generación de páginas de prueba API, recopilar análisis de ejecución, aceleración y mucho más. Consulte el blog de características para obtener más información sobre las características de administración de API de Azure. Y sí, puede alojar las API como una aplicación de servicio de aplicaciones y conectar todo con API Management.

https://azure.microsoft.com/en-us/documentation/articles/api-management-get-started/

Chibi Chakaravarthi
fuente
2
¡Felicitaciones por mantener las cosas actualizadas! Aunque ... Normalmente, creo que una nueva respuesta estaría en orden, dada la cantidad de información que se ha actualizado frente a la respuesta original. Por otra parte, creo que este es un caso extraño / área gris, ya que ya se votó / aceptó. :)
David Makogon
Sí, creo que la actualización es buena, ya que mantiene el hilo actualizado y asegura que la gente vea la respuesta fácilmente :).
Chibi Chakaravarthi
4
Entonces, ¿cuál es la razón principal de tener aplicaciones API y aplicaciones web bajo el paraguas de los servicios de aplicaciones si no hay diferencia
Hussein Salman
1
Otra diferencia: si un desarrollador desea importar una definición de aplicación en la administración de api usando la opción Api App, solo las aplicaciones web creadas como Api Apps estarán disponibles para su selección
user1075679
59

Hubo un momento en el que hubo diferencias entre los diferentes tipos de servicios de aplicaciones, pero eso ya no es cierto. La documentación ahora dice:

La única diferencia entre los tres tipos de aplicaciones (API, web, móvil) es el nombre y el icono que se usan para ellos en Azure Portal.

Por lo tanto, ya no importa en qué tipo de servicio de aplicación elija implementar (a menos que le importe cómo se ve el ícono).

ACTUALIZAR

Las aplicaciones funcionales son ahora la excepción. La creación de una aplicación de función cambia la interfaz de usuario en el portal. La aplicación web subyacente, sin embargo, no es diferente. Establecer una configuración de aplicación llamada FUNCTIONS_EXTENSION_VERSION= ~1convierte cualquier aplicación web en una aplicación de función (menos la interfaz de usuario en el portal).

Gregjhogan
fuente
Hay otra diferencia. No puede usar puntos de depuración en aplicaciones api. Vea los comentarios de Nikhil_Joglekar_MSFT el 12 de octubre de 2017 docs.microsoft.com/en-us/visualstudio/debugger/…
Scott Chamberlain
@ChibiChakaravarthi ¿Cómo diferenciar si una aplicación es una aplicación funcional usando rest api? Estoy usando este punto final de API: management.azure.com/subscriptions {subscriptionId} / resourceGroups / {resourceGroupName} /providers/Microsoft.Web/sites/ {name}? Api-version = 2016-08-01 Hay una clave de tipo en la respuesta, ¿es esa clave confiable y útil?
rohanagarwal
Tristemente no. la aplicación de función es solo otra aplicación web. ¿Puedo saber por qué quieres saber el tipo de aplicación?
Chibi Chakaravarthi
11

Hay muchas diferencias menores entre la API web y las aplicaciones API, pero las diferencias más notables y clave son

  1. Implementación nativa de Swagger: cuando crea una aplicación API en Visual Studio, la referencia de swagger viene de forma predeterminada. Swagger proporciona características muy amigables para los desarrolladores para que los consumidores de API interactúen con su API a través de la interfaz de usuario de Swagger. Además, las API basadas en Swagger proporcionan generación de SDK de cliente (tanto el cliente basado en .Net como el cliente basado en Javascript), lo que facilita la llamada a las API como una llamada a un método normal. Nota: La implementación de Swagger en la API web normal es posible manualmente.

  2. Posibilidad de publicar sus aplicaciones API en Azure Market Place. Azure Market Place es el repositorio público de todas las aplicaciones API que se pueden consumir de forma gratuita o mediante un cargo.

este video de 15 minutos del Canal 9 brinda una excelente descripción general sobre las aplicaciones Api.

Venkatesh Muniyandi
fuente
2

Para complementar la respuesta de Greg, aquí hay un artículo aún más reciente que describe las diferencias.

Para resumir:

"Las funciones clave de las aplicaciones API (autenticación, CORS y metadatos API) se han trasladado directamente a App Service. Con este cambio, las funciones están disponibles en aplicaciones web, móviles y API. De hecho, las tres comparten el mismo Microsoft.Web / tipo de recurso de sitios en Resource Manager. "

Y aquí hay otra nota importante:

"Si su API ya está implementada como una aplicación web o una aplicación móvil, no es necesario que vuelva a implementar su aplicación para aprovechar las nuevas funciones".

Rudy Scoggins
fuente
1

Esto puede depender de lo que intente hacer, pero usaría una API web cuando esté creando un servicio. ASP.Net Web API es un marco para crear servicios HTTP que pueden ser consumidos por una amplia gama de clientes. Esto le permite crearlo no solo para una aplicación web, sino también tenerlo abierto para conectarse a aplicaciones de Android, aplicaciones IOS, aplicaciones web, aplicaciones de Windows 8, aplicaciones WPF, etc.

Entonces, si necesita un servicio web pero no necesita SOAP, puede usar la API web.

Daniel Egan
fuente
Creo que el usuario está diciendo que una aplicación web api es muy similar a una aplicación web y, de hecho, en VS podemos mezclarlas fácilmente, lo que hace que una aplicación web api sea única. Cuando implementamos una api web o una aplicación web en IIS localmente, no hay diferencia en nada, entonces, ¿por qué una diferencia en Azure?
user441521
1

Aquí mis comentarios:

Aplicación API: se utiliza para una funcionalidad específica. Activando esa funcionalidad desde una URL. Se puede usar para usar con GET, POST, PUT, DELETE. Puede recibir parámetros en BODY (Json). Respuesta con código de estado válido (falla, éxito).

APLICACIÓN Web: Una aplicación implementada con múltiples funcionalidades, por ejemplo un catálogo para crear, actualizar y eliminar clientes o para crear un ERP completo.

Aplicación de función: es muy similar a la aplicación API, utilizada para funcionalidades específicas. Activando esa funcionalidad desde una URL. Se puede usar para usar con GET, POST, PUT, DELETE. Puede recibir parámetros en BODY (Json). Respuesta con código de estado válido (falla, éxito).

Tabla de comparación: aplicación web frente a aplicación de API frente a funciones de Azure.

Israel Calderon
fuente
0

En realidad, puede implementar su webapi aspnet en Azure WebApp y un autohospedaje en roles de trabajo.

En WebApp (antiguos sitios web de Azure), se implementará en IIS, para que pueda aprovechar las funciones de IIS.

Thiago Custodio
fuente