API App和Web App有什么区别?

113

我已经阅读了几篇关于将Web应用程序和API应用程序部署到Azure的教程,但我仍然有点不确定为什么要使用其中一个。

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

7个回答

89

更新 Azure 的最新状态:

现在,App Services 代替了所有 Mobile、Api 和 Web 应用程序的类型,成为一个单一的应用框架,并在其中滚动了所有功能,以使跨应用程序类型更加易于访问。目前,Web、Mobile 和 Api 应用程序都被统称为 App Services。我们仍然为客户提供在图库中创建 Mobile 应用程序和 Web 应用程序的选项,但基本上这会转换为一个 App Service 应用程序。

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

移动工作的功能也适用于 Web 应用程序,例如 Easy Tables 和 Easy API。而 API 应用程序的功能,如 API Cors 和 API definitions,现在也适用于 Web 应用程序。客户可以托管单个 Web 应用程序,以充当任何移动服务或具有通过应用服务提供的所有功能的 API。

我们还推出了一项针对 API 应用程序的预览服务,通过提供 API 的管理体验,您可以控制生成尝试 API 页面、收集执行分析、限制流量等等。请查看功能博客,了解有关 Azure API 管理功能的更多信息。是的,您可以将 API 托管为 App Service 应用程序,并将其与 API 管理连接起来。

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


3
感谢保持更新!虽然...通常情况下,考虑到已经更新的信息与原始答案相比有多少,我会认为需要一个新的答案。不过,我想这个情况可能有点特殊/灰色地带,因为它已经被点赞/接受了。 :) - David Makogon
是的,我认为更新很好,因为它使帖子保持新鲜,并确保人们轻松地看到答案 :)。 - C B
4
如果API应用程序和Web应用程序没有区别,为什么要将它们放在APP服务的统一管理下?这是主要原因。 - Hussein Salman
1
另一个区别是:如果开发者想要使用 Api App 选项在 API 管理中导入应用程序定义,那么只有创建为 Api Apps 的 Web 应用程序可供选择。 - user1075679

66

曾经在不同的应用程序服务类型之间存在差异,但现在已不再是这样了。根据文档的说明:

三种应用类型(API、Web、移动)之间唯一的区别就是 Azure 门户中用于它们的名称和图标。

因此,选择哪种应用服务类型进行部署已经不再重要(除非您在意图标的外观)。

更新

现在,函数应用是一个例外。创建函数应用将更改门户中的用户界面。但是,在底层,Web 应用程序并没有任何区别。设置名为FUNCTIONS_EXTENSION_VERSION = ~1 的应用程序设置将任何 Web 应用程序转换为函数应用程序(减去门户中的用户界面)。


还有一个区别。您无法在 API 应用程序上使用调试断点。请参见 Nikhil_Joglekar_MSFT 在 2017 年 10 月 12 日的评论 https://learn.microsoft.com/en-us/visualstudio/debugger/debug-live-azure-applications - Scott Chamberlain
@ChibiChakaravarthi如何区分是否使用rest api功能应用程序? 我正在使用此API端点:https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}?api-version=2016-08-01 响应中有kind键,该键可靠且有用吗? - rohanagarwal
很遗憾,函数应用程序只是另一个 Web 应用程序。我可以知道您想了解应用程序类型的原因吗? - C B
这是一个更好的、直接回答问题的答案,我感觉。 - AlvinfromDiaspar

13

Web API和API Apps之间存在许多细微差别,但是最显著和关键的区别有:

  1. 原生Swagger实现 - 在Visual Studio中创建API App时,默认提供Swagger参考。Swagger为API消费者提供非常友好的开发人员功能,可以通过Swagger UI与您的API进行交互。此外,基于Swagger的API提供客户端SDK生成(基于.Net的客户端和基于JavaScript的客户端),这使得调用API就像调用常规方法一样容易。 注意:在常规Web API上手动实现Swagger。

  2. 能够将API Apps发布到Azure市场。Azure Market Place是所有API Apps的公共存储库,可以免费或按收费方式使用。

这个 来自Channel 9的15分钟视频提供了有关Api Apps的优秀概述。


2
为了补充Greg的回答,这里有一篇更加新的文章描述了区别。 总结一下:
API Apps的关键特性(认证、CORS和API元数据)已经直接转移到App Service。通过此改变,这些特性可在Web、移动和API Apps之间共享。实际上,这三者共用Resource Manager中的相同Microsoft.Web/sites资源类型。
另外还有一个重要的注意事项:
如果您的API已被部署为Web App或Mobile App,您不需要重新部署应用程序以利用新功能。

1
这取决于你想做什么,但当你创建服务时,你需要使用Web API。ASP.Net Web API是一个框架,用于构建可被广泛客户端消费的HTTP服务。这使得你不仅可以为Web应用程序构建它,还可以连接到Android应用程序、IOS应用程序、Web应用程序、Windows 8应用程序、WPF应用程序等等。因此,如果你需要一个Web服务,但不需要SOAP,则可以使用Web API。

我认为用户的意思是,Web API 应用程序与 Web 应用程序非常相似,在 VS 中我们可以轻松地混合它们,这就使得 Web API 应用程序独特。当我们将 Web API 或 Web 应用程序部署到本地 IIS 时,没有任何区别,那么为什么在 Azure 中会有区别呢? - user441521

1

这是我的评论:

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

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

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

Comparation table:  Web App vs API app vs Azure Functions.


0

实际上,您可以将ASP.NET WebAPI部署在Azure WebApp上,并在Worker Roles上进行自主托管。

在WebApp(前身为Azure网站)上,它将部署在IIS上,因此您可以利用IIS的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接