首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Visual Studio中Web API和Azure API应用程序之间的差异

Visual Studio中Web API和Azure API应用程序之间的差异
EN

Stack Overflow用户
提问于 2017-12-15 01:41:06
回答 3查看 1.8K关注 0票数 5

当创建一个新的Azure Web应用程序来开发我的API并将其托管在ASP.NET中时,我有两个选择:

  • Web API
  • Azure API应用程序

我可以创建Web API应用程序并将其托管在Azure API应用程序中吗?那么它们都存在的主要原因是什么呢?

EN

回答 3

Stack Overflow用户

发布于 2019-01-26 07:04:41

它们只是不同的起点,取决于您的需求。

Azure API是一个支持OpenAPI的精简版API-only模板。

app是一个完整的ASP.NET MVC应用程序,主要面向支持ASP.NET。

区别#1: Web API模板中的身份验证支持

ASP.NET网络应用编程接口

支持身份验证选择(无、个人用户、工作或学校、Windows)。

ASP.NET Azure API应用程序

期望客户端提供令牌(不记名令牌或API令牌)。使用Azure门户配置用户(不是API令牌)的身份验证和授权。使用Azure API管理(或其他服务)管理API令牌。

区别#2: Web API模板中的MVC支持

ASP.NET网络应用编程接口

自动包含MVC以显示帮助页面。这些与OpenAPI (Swagger)自生成的文档不同。

ASP.NET Azure API应用程序

不会自动包含MVC或帮助页

区别#3:支持Web API中UI的文件

ASP.NET网络应用编程接口

包括区域、内容、HomeController、字体、脚本和视图

ASP.NET Azure API应用程序

不同之处#4: Web API模板中的启动配置更多

ASP.NET网络应用编程接口

代码语言:javascript
复制
public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

ASP.NET Azure API应用程序

代码语言:javascript
复制
public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}

区别#5: Azure API模板中的OpenAPI (Swagger)支持

ASP.NET网络应用编程接口

代码语言:javascript
复制
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/values/5
    public void Delete(int id)
    {
    }
}

ASP.NET Azure API应用程序

默认情况下启用OpenAPI (Swagger)。swagger JSON文档位于/ OpenAPI /docs/v1

代码语言:javascript
复制
public class ValuesController : ApiController
{
    // GET api/values
    [SwaggerOperation("GetAll")]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    [SwaggerOperation("GetById")]
    [SwaggerResponse(HttpStatusCode.OK)]
    [SwaggerResponse(HttpStatusCode.NotFound)]
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    [SwaggerOperation("Create")]
    [SwaggerResponse(HttpStatusCode.Created)]
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    [SwaggerOperation("Update")]
    [SwaggerResponse(HttpStatusCode.OK)]
    [SwaggerResponse(HttpStatusCode.NotFound)]
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/values/5
    [SwaggerOperation("Delete")]
    [SwaggerResponse(HttpStatusCode.OK)]
    [SwaggerResponse(HttpStatusCode.NotFound)]
    public void Delete(int id)
    {
    }
}
票数 4
EN

Stack Overflow用户

发布于 2017-12-15 10:05:44

你可以检查这个link

Azure应用程序服务中的API应用程序提供了一些功能,可以更轻松地在云和内部部署中开发、托管和使用API。通过API应用程序,您可以获得企业级安全性、简单的访问控制、混合连接、自动生成SDK

Service.The是Azure提供的计算资源,用于在应用程序中托管网站或Web应用程序计算资源可能位于共享或专用虚拟机(VM)上,具体取决于您选择的定价层。您的应用程序代码在与其他客户隔离的托管VM中运行。

票数 2
EN

Stack Overflow用户

发布于 2018-06-10 01:40:10

Web API -此模板将在同一解决方案中生成MVC(模型/视图/控制)模式( Web App)和Web API的模板。

Azure API app -此样板将生成Web API的模板,不包括web应用的相关文件。它在app_start下有一个额外的配置文件,名为SwaggerConfig.cs

参见here: ASP.NET Core Web API help pages with Swagger / Open API。当您将API发布到azure中时,它会很有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47819233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档