跳至正文
首页 » 博客 » Getting started with Azure API Apps and Azure MVC web App in Azure App Service

Getting started with Azure API Apps and Azure MVC web App in Azure App Service

在本文中,你将学习如何创建Azure API应用和在Azure We应用中部署的MVC客户端。这将是一个非常简单的应用程序,连接Azure应用服务的各种组件,为了构建它,我们将在Azure中使用Azure API应用、Azure Web应用和SQL Server。可以绘制应用程序的高级体系结构,如下图所示:

从本质上讲,在这篇文章中,我们将学习执行以下任务:

  • 进行SQL连接在SQL数据库在Azure
  • 使用实体框架数据库优先的方法来支持CRUD操作
  • 公开操作在Azure API应用
  • 配置swagger API和UI以进行元数据和API测试
  • 发布Azure API应用在Azure应用服务
  • 创建客户端代码使用swagger元数据API在ASP.NET MVC应用程序
  • 使用生成的客户端代码在MVC应用程序执行CRUD操作的表在SQL数据库在Azure
  • 发布ASP.NET MVC应用程序在Azure Web App

完成这篇文章后,你应该有一个Azure API应用程序和一个基于MVC的Azure Web应用程序在Azure服务中实时运行。作为本文的输出,我们有 http://schoolapiapp.azurewebsites.net/swagger/ui/index 运行的Azure API应用。我们还有一个基于MVC的Azure Web应用程序在此URL上运行: http://mvcclientazureapiapp.azurewebsites.net/

在这个例子中,我使用Visual Studio 2015,但是你也可以使用Visual Studio 2013。你还需要订阅Azure,但你可以免费试用。让我们开始吧!

Azure API应用

让我们从创建Azure API应用开始。若要设置开发环境,请安装Azure SDK。Azure SDK for Visual Studio 2015从这里下载, Azure SDK for Visual Studio 2013从这里下载。成功安装后,您应该得到成功安装对话框,如下图所示:

现在,你的开发环境已全部设置为创建你的第一个Azure API应用。让我们通过选择新建-> 项目->ASP.NET Web应用程序来创建一个新项目。为ASP.NET Web应用程序指定合适的名称,然后从 “模板” 对话框中选择 “Azure API应用”,如下图所示:

成功创建项目后,请执行以下操作:

  1. 从Controller文件夹中删除ValuesController。我们不需要这个控制器。
  2. 右键单击模型文件夹并添加一个新项目。

若要添加新项,请从 “数据” 选项卡中选择 “ADO.NET实体模型”,并为该模型指定一个名称。在这里,我将其作为SchoolModel。

在此步骤中,在实体数据模型向导中,从数据库选项中选择EF Designer,然后单击Next,如下图所示:

让我们在这里花一点时间,了解我们下一步要做什么。在这里,我们将连接到Azure中的sql数据库中的学校数据库。

若要连接到Azure中的SQL数据库,需要执行以下任务:

  • 添加客户端IP到数据库服务器防火墙规则在Azure门户
  • 提供数据库服务器名称在Azure
  • 提供用户名和密码使用SQL Server身份验证
  • 选择所需数据库,然后单击好

您可能需要参考下面的图像,以提供连接到Azure中的数据库的信息:

由于我们提供了连接到Azure数据库服务器的用户名和密码等重要信息,因此实体数据模型Wiazrd会询问我们是否要在连接字符串中包含敏感数据。在这里,我们将选择Yes单选按钮,然后单击Next。此外,如果你的愿望,你可能想改变connectionstring名称,但在这个例子中,我离开它作为默认。

现在我们需要选择要使用的实体。为了保持简单,我选择了学校数据库中最简单的表 (“简单” 是指与任何其他表没有关系的表)。因此,我将在此示例中选择Department表进行操作。如下图所示,要选择Department表,请选中Department的复选框并将其他字段保留为默认值。

接下来,要创建数据模型,请单击Finish,我们已经添加了模型。使用此模型,我们将创建Azure API。您可以在解决方案资源管理器中验证创建的SchoolModel,如下图所示:

到目前为止,我们已经添加了模型。确保你已经成功地在这个阶段构建了项目,然后让我们创建一个控制器。右键单击Controllers文件夹,然后从contextmeny中选择Add->Controller。在基架选项中,选择Web API 2控制器与操作,使用实体框架,如下图所示:

要使用基架添加控制器,您需要选择以下选项:

  1. 模型类: 选择部门从下拉菜单
  2. 数据上下文类: 选择SchoolEntities从下拉列表
  3. 要么给你想要的控制器名称,要么留下基于模型类的建议名称。

单击Add,DepartmentsController将被添加到项目中。本质上,我们已经创建了web API来对Department表执行CRUD操作。在下一步中,我们必须启用Swagger元数据和UI。

启用Swagger元数据和UI

Azure应用服务支持Swagger 2.0元数据。使用此方法,每个API都可以定义一个端点URL,该端点URL以Swagger JSON格式返回API的元数据。返回的元数据可用于生成客户端代码。

您可以通过附加apiUrl/swagger/docs/v1来导航创建的API的元数据。所以让我们继续运行这个项目,你应该得到一个 “禁止” 的消息,如下图所示:

要导航到API的元数据,请将/ swagger/docs/v1附加到baseurl,如下所示

在这里可以看到JSON格式的Azure API元数据。这是Swagger 2.0 API的JSON元数据。这可用于创建客户端代码。

若要启用Swagger UI,请返回到项目,并从App_Start文件夹中打开SwaggerConfig.cs文件。在文件中,找到以下代码行并取消注释:

再次按f5运行Azure API应用。附加URL与/swagger,你会发现Swagger UI已在API上启用。

使用Swagger UI,我们可以测试创建的API。例如,让我们继续尝试创建一个新部门。单击POST选项,创建要插入JSON fromat的部门数据,然后单击Try it out。

您将看到从API返回的响应正文和响应代码。在成功创建资源时,它应该返回状态代码201。

到目前为止,您可能已经注意到,创建Azure API应用,启用Swagger metadadata和UI并在本地测试它们非常简单。现在让我们继续在Azure中发布它们。

部署API到Azure

到目前为止,我们所做的一切都是本地的。现在,我们希望使用与Visual Studio 2015结合的Azure工具将本地Azure API应用程序移动到Azure。首先,右键单击项目并选择Publish。

在 “发布Web” 对话框中,选择 “Microsoft Azure应用服务”,然后单击 “下一步”。

在下一个寡妇中,选择subscription并单击New。

在 “创建应用服务” 窗口中,首先将类型更改为API应用,如下图所示:

接下来提供以下信息:

  1. 唯一API名称
  2. 选择订阅
  3. 如果您已经创建了应用服务计划,则可以选择该计划。要创建一个新的点击新。

在这个例子中,我创建一个新的应用服务计划,如下图所示。我们将使用这个新创建的计划来发布应用程序。

提供所有信息后,您的主机选项应如下所示:

截至目前,我们已经提供了发布应用程序所需的所有信息。单击Create (创建) 以进一步进行部署。在下一个屏幕上,确认所有详细信息,然后单击下一步继续。

在此屏幕上,您可以验证连接字符串并更新数据库。要保持简单,请将所有设置保留为默认值,然后单击Next。

在此屏幕上,预览部署并单击 “发布” 以将Azure API应用部署到Azure服务。

您可以在Visual Studio的输出窗口中查看发布状态。在成功的pubish上,你将导航到Azure服务中托管的Azure API应用。你应该在Azure服务中运行Azure API应用,如下图所示。

你已成功将Azure API应用部署到Azure服务!

配置元数据URL在门户

要配置元数据URL,请登录门户,然后在应用服务部分中找到新创建的API应用。

单击API应用并选择API定义。

在API定义中,您可以更改元数据URL。如上所述,默认情况下,元数据URL设置为../swagger/docs/v1

我们可以将元数据URL更改为其他内容,如下图所示。更改URL后,不要忘记通过单击顶部的保存按钮来保存新的URL。为了保持简单,我在这里留下了元数据URL作为defualt。所以当你导航到。/swagger/docs/v1,您将获得创建客户端代码所需的swagger元数据。元数据可以在浏览器中看到,如下图所示:

您可以执行GET操作,并通过导航到URL在浏览器中查看所有部门../api/部门。部门将在浏览器中以JSON形式返回,如下图所示:

您还可以使用swagger UI测试其他操作,正如我们在本文的上一节中讨论的那样。

太好了,到目前为止,我们已经创建了Azure API,它使用Azure中的sql数据库。我们还成功地将其部署到Azure应用服务。

创建MVC客户端

在本文的这一部分中,我们将创建一个.NET客户端。让我们继续创建一个ASP.NET MVC项目。

在模板中,选择 “MVC”,然后从 “更改身份验证” 选项中选择 “无身份验证”。

成功创建项目后,右键单击项目,然后从上下文菜单中选择 “ 添加”-> “REST API客户端”。

在选择REST API客户端选项时,您将获得从Microsoft Azure下载API或选择到现有Swagger元数据文件的选项。您也可以选择在此处更改客户端命名空间名称。

让我们选择从Microsoft Azure API应用程序下载的选项,然后单击浏览按钮。若要选择应用服务,请选择 “订阅”,然后选择 “Azure API应用”,如下图所示,然后单击 “好” 按钮。

进一步点击好按钮后,元数据将被下载到客户端应用程序。成功下载元数据后,您将发现已生成客户端代码。您可以在解决方案资源管理器中看到它们,如下图所示:

现在我们已经从Azure API应用创建了客户端代码。让我们继续添加一个控制器: 右键单击Controllers文件夹,然后从上下文菜单中选择add->Controller。从模板中,选择具有读/写操作的MVC 5控制器。

使用geneearted代码,在Azure API上执行操作非常容易。在生成的控制器的索引操作中,您可以通过使用SchoolApiApp的实例来获取所有部门。要获取所有部门,请参阅下面的列表:

私人SchoolApiApp app = SchoolApiApp();        公共ActionResult索引 (){            返回视图 (app.Departments.GetDepartments ());}

正如您可能从上面列出的代码推断出的那样,使用REST API只需几行代码。记住这一点。NET客户端代码已使用Azure API应用的Swagger元数据生成。

要添加视图,请右键单击索引操作并选择添加视图。在 “添加视图” 模板中,选择 “列表”,然后选择 “部门” 作为模型类。

创建记录也非常简单。为此,您需要做的就是通过传递enity对象来调用Post方法,如下面的清单所示。

公共ActionResult创建 ([Bind(Include = "Administrator,Budget,Name,StartDate" )] 部门部门){            尝试{                // TODO: 添加插入逻辑                if (ModelState.IsValid){department.DepartmentID = 4569;app.Departments.Postdepartment by department (部门);}                返回 “Index” (RedirectToAction );}            catch (Exception ex){                返回视图 ();}}

生成的代码将包含所有操作,如List,Post,Put和Delete。您可以像在上面的示例中使用List和Post操作一样轻松地使用它们。

在最后一步中,让我们继续将MVC客户端发布到Azure Web App。发布将与我们发布的API应用程序相同。为简洁起见,我避免截图,只提到的步骤。

将MVC客户端发布到Azure Web应用

  1. 右键单击项目,然后单击发布
  2. 选择将目标发布为Microsoft Azure应用服务
  3. 选择订阅,然后单击新建
  4. 给web应用程序一个名称,选择区域,然后单击创建
  5. 在最后一步中,单击发布

在成功发布时,您将获得 “发布成功” 消息以及Visual Studio输出窗口中的URL。

好极了!我们刚刚将ASP.NET MVC应用程序发布到Azure Web App,该应用程序正在使用Azure API应用程序。

结论

在本文中,我们学习了如何执行以下任务:

  • 将SQL连接到SQL数据库中的Azure
  • 使用实体框架数据库第一种方法来支持CRUD操作
  • 公开操作在Azure API应用
  • 配置swagger API和UI以进行元数据和API测试
  • 发布Azure API应用在Azure应用服务
  • 创建客户端代码使用swagger元数据API在ASP.NET MVC应用程序
  • 使用生成的客户端代码在MVC应用程序执行CRUD操作表在SQL数据库在Azure
  • 发布ASP.NET MVC应用程序在Azure Web App

</p