API App和Web App有什么区别?


95

我现在已经阅读了一些有关将Web Apps和API Apps部署到Azure的教程。但是,对于您为什么要在另一个之上使用我仍然不确定。

我可以使用API​​控制器创建一个新的.NET解决方案,并将其部署为Web App,那么为什么要专门要求一个API App?这些是针对ASP.NET Web API专门优化的吗,因为Web Apps用于传递HTML?

Answers:


75

更新有关Azure当前状态的答案,

现在,App Services将所有的Mobile,Api和Web Apps风格替换为一个单一的应用程序框架,并且具有所有功能,从而使跨各种应用程序类型的事物更易于访问。当前,所有Web,移动和Api应用程序统称为应用程序服务。我们仍然为客户提供能够在图库中创建移动应用程序和Web应用程序的方法,但这基本上可以解决应用程序服务应用程序的问题。

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

Web应用程序的移动功能以及Easy Tables和Easy API等功能。API应用程序的功能(例如API Cors和API定义)现在也可以在网络应用程序上使用。客户可以托管一个Web应用程序,以充当任何移动服务或具有通过应用程序服务提供的所有功能的api。

我们还为预览版提供了一项新服务,特别是通过为您的API提供管理经验来专门针对API应用程序。基本上,您可以控制生成尝试API页面,收集执行分析,限制等。查看功能博客以了解有关Azure API管理功能的更多信息。是的,您可以将API托管为App Service App,并通过API Management进行连接。

https://azure.microsoft.com/zh-CN/documentation/articles/api-management-get-started/


2
保持最新状态的荣誉!尽管...通常,鉴于已更新了多少信息与原始答案相比,我通常认为应该有一个新的答案。再说一次,我猜这是一个奇怪的案例/灰色区域,因为它已经被批准/接受了。:)
David Makogon '16

是的,我认为更新是很好的,因为它可以使线程保持新鲜并确保人们容易看到答案:)。
Chibi Chakaravarthi '16

4
那么,如果没有区别的话,将API APP和Web Apps置于APP Services的保护之下的主要原因是什么
Hussein Salman

1
另一个不同之处:如果开发人员希望使用Api App选项在api管理中导入应用程序定义,则只能选择作为Api Apps创建的Web应用程序
user1075679

59

在某个时间点上,不同的应用程序服务类型之间存在差异,但这不再是事实。该文档现在指出:

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

因此,不再需要选择将其部署到哪种应用程序服务类型(除非您在乎图标的外观)。

更新

功能应用程序现在是例外。创建功能应用程序会更改门户中的用户界面。但是,基础Web应用程序没有什么不同。设置名为FUNCTIONS_EXTENSION_VERSION= 的应用程序设置~1会将任何Web应用程序转换为功能应用程序(减去门户中的用户界面)。


还有另一个区别。您不能在api应用上使用调试快照点。请参阅从Nikhil_Joglekar_MSFT的评论上二零一七年十月十二日docs.microsoft.com/en-us/visualstudio/debugger/...
斯科特张伯伦

@ChibiChakaravarthi如何使用rest api区分某个应用程序是否为功能应用程序?我正在使用以下API端点:management.azure.com/subscriptions {subscriptionId} / resourceGroups / {resourceGroupName} /providers/Microsoft.Web/sites/ {name}?api-version = 2016-08-01答案是,该密钥可靠且有用吗?
rohanagarwal

可悲的是没有。功能应用程序只是另一个Web应用程序。我可以知道您为什么想知道应用程序的类型吗?
Chibi Chakaravarthi

11

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应用发布到Azure市场。Azure Market Place是所有API应用程序的公共存储库,可以免费使用或收费使用。

频道9的 15分钟视频很好地概述了Api Apps。


2

为了补充Greg的答案,这是最近的一篇文章,描述了这些差异。

总结一下:

“ API Apps的主要功能-身份验证,CORS和API元数据-已直接移到App Service中。通过这一更改,这些功能可在Web,Mobile和API Apps中使用。实际上,这三者共享相同的Microsoft.Web /资源管理器中的站点资源类型。”

这是另一个重要说明:

“如果您的API已经部署为Web应用程序或移动应用程序,则无需重新部署应用程序即可利用这些新功能。”


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 '18

1

这是我的评论:

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

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

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

比较表:Web应用程序与API应用程序与Azure函数。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.