API 应用程序和 Web 应用程序有什么区别?

What is the difference between an API App and a Web App?

我一直在阅读一些关于将 Web 应用程序和 API 应用程序部署到 Azure 的教程。但是,我仍然有点不确定您为什么要使用一个而不是另一个。

我可以使用 API 控制器创建一个新的 .NET 解决方案并将其部署为 Web 应用程序,那么为什么我特别需要一个 API 应用程序?这些是否专门针对 ASP.NET Web API 进行了优化,而 Web 应用程序是为了交付 HTML?

实际上,您可以在 Azure WebApp 上部署 aspnet webapi,并在 Worker Roles 上部署自托管。

在WebApp(以前的Azure网站)上,它会部署在IIS上,所以你可以利用IIS的特性。

这可能取决于您尝试做什么,但是您在创建服务时会使用 Web API。 ASP.Net Web API 是一个用于构建可供广泛客户端使用的 HTTP 服务的框架。这使您不仅可以为 Web 应用程序构建它,还可以打开它以连接到 Android 应用程序、IOS 应用程序、Web 应用程序、Windows 8 应用程序、WPF 应用程序等。

因此,如果您需要 Web 服务但不需要 SOAP,那么您可以使用 Web API。

正在更新对 Azure 当前状态的回答,

App Services 现在取代了所有移动、Api 和 Web 应用程序风格,成为一个单一的应用程序框架,所有功能都经过滚动,使跨应用程序类型的东西更容易访问。 目前,所有 Web、移动和 Api 应用程序统称为应用程序服务。我们仍然为客户提供能够在库中创建移动应用程序和 Web 应用程序的功能,但是基本上解析成一个App Service App.

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

适用于 Web 应用程序的移动功能以及 Easy Tables 和 Easy API。 API 应用程序的功能,如 API Cors 和 API 定义现在也适用于网络应用程序。客户可以托管一个网络应用程序作为任何移动服务或 api 具有通过应用程序服务提供的所有功能。

我们还有一项新服务正在预览,特别针对 API 应用程序,通过为您的 API 提供管理体验,基本上您可以控制生成尝试 API 页面、收集执行分析、节流等。 查看功能博客以了解有关 Azure API 管理功能的更多信息。是的,您可以将 API 作为应用服务应用托管,并与 API 管理挂钩。

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

曾经有一个时间点,不同的应用服务类型之间存在差异,但现在不再如此。 documentation 现在声明:

The only difference between the three app types (API, web, mobile) is the name and icon used for them in the Azure portal.

因此,您选择部署到哪种应用服务类型不再重要(除非您关心图标的外观)。

更新

功能应用现在是例外。创建函数应用会更改门户中的用户界面。然而,底层网络应用程序并没有什么不同。设置名为 FUNCTIONS_EXTENSION_VERSION = ~1 的应用程序设置可将任何 Web 应用程序变成功能应用程序(减去门户中的用户界面)。

Web API 和 API 应用程序之间存在许多细微差别,但非常显着和关键的区别是

  1. Native Swagger 实现 - 当您在 Visual studio 中创建 API 应用程序时,默认会出现 swagger 引用。 Swagger 为 API 消费者提供了非常适合开发人员的功能,以便通过 Swagger UI 与您的 API 进行交互。此外,基于 API 的 Swagger 提供了客户端 SDK 生成(基于 .Net 的客户端和基于 Javascript 的客户端),这使得调用 API 就像常规方法调用一样容易。 注意:可以手动在常规 Web API 上实施 Swagger。

  2. 能够将您的 API 应用程序发布到 Azure Market Place。 Azure Market Place 是所有 API 可以免费或收费使用的应用程序的 public 存储库。

this 第 9 频道的 15 分钟视频对 Api 应用程序进行了精彩概述。

为了补充 Greg 的回答,Here's an even more recent article describing the differences.

总结一下:

"The key features of API Apps – authentication, CORS and API metadata – have moved directly into App Service. With this change, the features are available across Web, Mobile and API Apps. In fact, all three share the same Microsoft.Web/sites resource type in Resource Manager."

还有一个重要提示:

"If your API is already deployed as a Web App or Mobile App, you do not have to redeploy your app to take advantage of the new features."

这是我的评论:

API 应用: 用于特定功能。从 URL 触发该功能。 可与 GET、POST、PUT、DELETE 一起使用。 可以在 BODY (Json) 接收参数。 具有有效状态代码的响应(失败、成功。)

Web APP:例如部署了多种功能的应用程序 用于创建、更新和删除客户或创建完整 ERP 的目录。

功能APP:与APIAPP非常相似, 用于特定功能。从 URL 触发该功能。 可与 GET、POST、PUT、DELETE 一起使用。 可以在 BODY (Json) 接收参数。 具有有效状态代码的响应(失败、成功。)