Visual Studio中Web API和Azure API APP之间的区别

时间:2017-12-14 17:41:06

标签: asp.net azure asp.net-web-api2 azure-api-apps

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

  • Web API
  • Azure API APP

我可以创建一个Web API APP并将其托管在Azure API APP中吗?那么它们存在的主要原因是什么?

enter image description here

3 个答案:

答案 0 :(得分:2)

根据您的需要,它们只是不同的起点。

Azure API是具有OpenAPI支持的精简API模板。

ASP.NET Web API是一个完整的ASP.NET MVC应用程序,主要用于支持API。

差异#1:Web API模板中的身份验证支持

ASP.NET Web API

支持身份验证选择(无,个人用户,工作或学校,Windows)。 Screenshot showing selection of authentication support

ASP.NET Azure API应用

期望客户端提供令牌(承载令牌或API令​​牌)。使用Azure门户配置用户(不是API令牌)的身份验证和授权。使用Azure API管理(或其他服务)来管理API令牌。 Screenshot showing unavailable selector for authentication support

差异#2:Web API模板中的MVC支持

ASP.NET Web API

自动包括MVC以便显示帮助页面。这些与OpenAPI(Swagger)自生成的文档不同。 Screenshot showing MVC option preselected, non-editable

ASP.NET Azure API应用

不会自动包含MVC或帮助页面 Screenshot showing MVC option not selected, editable

差异#3:Web API中的UI支持文件

ASP.NET Web API

包括区域,内容,HomeController,字体,脚本和视图 Screenshot showing Solution Explorer with expanded assets

ASP.NET Azure API应用

Screenshot showing Solution Explorer with minimal assets

差异#4:Web API模板中的更多启动配置

ASP.NET Web API

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应用

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}

差异#5:Azure API模板中的OpenAPI(Swagger)支持

ASP.NET Web API

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)。 OpenAPI JSON文档位于/ swagger / docs / v1

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)
    {
    }
}

答案 1 :(得分:1)

您可以查看link

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

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

答案 2 :(得分:1)

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

Azure API应用程序 - 此样板将生成Web API模板,不包括Web应用程序的相关文件。它在app_start下有一个名为SwaggerConfig.cs的额外配置文件 见here: ASP.NET Core Web API help pages with Swagger / Open API。将API发布到azure时会很有用。