我现在一直在阅读一些关于将 Web 应用程序和 API 应用程序部署到 Azure 的教程。但是,我仍然有点不确定您为什么要使用一个。
我可以使用 API 控制器创建新的 .NET 解决方案并将其部署为 Web 应用程序,那么为什么我特别需要 API 应用程序?这些是否专门针对 ASP.NET Web API 进行了优化,而 Web 应用程序用于交付 HTML?
我现在一直在阅读一些关于将 Web 应用程序和 API 应用程序部署到 Azure 的教程。但是,我仍然有点不确定您为什么要使用一个。
我可以使用 API 控制器创建新的 .NET 解决方案并将其部署为 Web 应用程序,那么为什么我特别需要 API 应用程序?这些是否专门针对 ASP.NET Web API 进行了优化,而 Web 应用程序用于交付 HTML?
更新 Azure 当前状态的答案,
App Services 现在将所有移动、Api 和 Web 应用程序风格替换为一个单一的应用程序框架,所有功能都被翻转,以使事情更容易跨应用程序类型访问。目前所有的 Web、Mobile 和 Api 应用都统称为应用服务。我们仍然为客户提供能够在图库中创建移动应用程序和 Web 应用程序的功能,但这基本上是解析为应用程序服务应用程序。
https://azure.microsoft.com/en-us/documentation/articles/app-service-api-apps-why-best-platform/
适用于 Web 应用程序的移动功能以及 Easy Tables 和 Easy API 等功能。API Cors 和 API 定义等 API 应用程序的功能现在也适用于 Web 应用程序。客户可以托管单个 Web 应用程序来充当任何移动服务或具有通过应用程序服务提供的所有功能的 API。
我们还有一项新的预览服务,特别针对 API 应用程序,通过为您的 API 提供管理体验,基本上您可以控制生成尝试 API 页面、收集执行分析、限制等等。查看功能博客以了解有关 Azure API 管理功能的更多信息。是的,您可以将 API 作为应用服务应用托管,并与 API 管理挂钩。
https://azure.microsoft.com/en-us/documentation/articles/api-management-get-started/
在某个时间点,不同的应用服务类型之间存在差异,但现在不再如此。该文档现在指出:
三种应用类型(API、Web、移动)之间的唯一区别是 Azure 门户中用于它们的名称和图标。
因此,您选择部署到哪种应用服务类型不再重要(除非您关心图标的外观)。
更新
函数式应用程序现在是个例外。创建函数应用会更改门户中的用户界面。然而,底层的网络应用程序也不例外。设置名为FUNCTIONS_EXTENSION_VERSION
=的应用设置~1
会将任何 Web 应用变成函数应用(减去门户中的用户界面)。
Web API 和 API 应用程序之间有许多细微差别,但非常显着和关键的区别是
本机 Swagger 实现 - 在 Visual Studio 中创建 API 应用程序时,默认情况下会出现 swagger 引用。Swagger 为 API 使用者提供了对开发人员非常友好的功能,以通过 Swagger UI 与您的 API 进行交互。基于 Swagger 的 API 还提供客户端 SDK 生成(基于 .Net 的客户端和基于 Javascript 的客户端),这使得调用 API 就像常规方法调用一样容易。注意:可以手动在常规 Web API 上实现 Swagger。
能够将您的 API 应用程序发布到 Azure Market Place。Azure Market Place 是所有 API 应用程序的公共存储库,可以免费或收费使用。
这个来自 Channel 9 的 15 分钟视频提供了关于 Api 应用程序的精彩概述。
为了补充 Greg 的回答,这里有一篇更新的文章描述了这些差异。
总结一下:
“API 应用程序的关键功能——身份验证、CORS 和 API 元数据——已直接转移到应用程序服务中。随着这一变化,这些功能可在 Web、移动和 API 应用程序中使用。事实上,这三个应用程序共享相同的 Microsoft.Web/资源管理器中的站点资源类型。”
这是另一个重要的注意事项:
“如果您的 API 已经部署为 Web 应用或移动应用,则无需重新部署应用即可利用新功能。”
这可能取决于您尝试执行的操作,但您在创建服务时会使用 Web API。ASP.Net Web API 是一个用于构建可供广泛客户端使用的 HTTP 服务的框架。这使您不仅可以为 Web 应用程序构建它,还可以将其打开以连接到 Android 应用程序、IOS 应用程序、Web 应用程序、Windows 8 应用程序、WPF 应用程序等。
因此,如果您需要 Web 服务但不需要 SOAP,那么您可以使用 Web API。
实际上,您可以在 Azure WebApp 上部署您的 aspnet webapi,并在 Worker Roles 上部署自托管。
在 WebApp(以前的 Azure 网站)上,它将部署在 IIS 上,因此您可以利用 IIS 功能。