下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

教您Azure上部署和监控ASP.Net内核

作者:课课家教育     来源: http://www.kokojia.com点击数:1310发布时间: 2017-10-13 15:00:19

标签: Azure数据库云计算

  欢迎各位同学阅读本篇文章,本篇文章将教您Azure上部署和监控ASP.Net内核,课课家教育平台提醒您:本篇文章中有许多的小细节,因此大家一定要认真阅读本篇文章哦~

  ASP.Net内核(Core)是ASP.NET的最新版本。它是通过利用.Net内核,这个轻量级的、可组合的.NET框架为基础来建立的。有些人喜欢用,但有些人并不喜欢。不过,这毕竟是未来的趋势。微软将来会向着.Net内核迈进,而那些常规的、成熟版本也必将消亡。

  我是非常喜欢ASP.Net内核的。它有着大量的新特性、更为精简、而且运行起来非常快。当然,它需要被运行在Azure上面。

  在这篇文章中,我将向你展示如何为Azure部署一个简单的ASP.Net内核应用程序。我还将向你展示如何用Stackify Retrace,这一应用性能管理工具的来向该一个应用程序发出各种指令。

  在本文章中,我将用到一个名为SimplCommerce的示例程序。这是一个基于ASP.Net内核的、开源的、电子商务类型的应用。你可以在GitHub上获取到。该应用程序基本上是由一个web应用程序和一个数据库所组成。

  我将指导你完成如下的步骤:

  在SQL Azure上创建SimplCommerce数据库

  配置该应用程序来使用Stackify Retrace

  将该应用程序部署到Azure

  为web应用激活Stackify Retrace

  Stackify Retrace在运行中的优点

  在SQL Azure上创建SimplCommerce数据库

  SimplCommerce应用程序使用一个SQL数据库来存储其产品目录和其他数据。在开始使用该应用之前,你首先需要设置一个数据库。你可以选择将其放置在本地,也可以放到其他别的地方。

  因为我的计划是将整个应用程序部署到Azure上面,所以当我在Azure里工作时,我就使用的是一个在它内部运行的数据库。这样的好处在于:它会给我足够的信心在Azure SQL里做各种运行的尝试时候,而不会碰到与本地SQL服务器上所产生的任何奇怪的差异问题。

  我们需要执行以下步骤来设置一个Azure SQL数据库并连接它:

  1.创建一个Azure SQL数据库

  2.修改应用程序中的连接字串(connectionstring)

  3.开启防火墙,以允许我的本地机器连接到Azure SQL Server

  步骤1:创建一个Azure SQL数据库

  第一步是创建一个Azure SQL数据库,以承载SimplCommerce的数据。我运用Azure的门户界面(Portal)来创建一个新的数据库。它会以一个向导的形式带着我在Azure SQL Server上进行创建,并合理进行配置。

教您Azure上部署和监控ASP.Net内核_Azure_数据库_云计算_课课家教育

  正如你在上图中所看到的,我选择的只是“基本定价层(pricing tier)”。因为这将只是一个测试应用而已,并不需要大量的“马力(资源)”。

  Azure SQL server和数据库就这样创建好了,我们现在需要连接到它。我想把我的本地机器连接到SQL Azure数据库,并使用它来进行当地开发。尽管这种数据库与我的代码分处异处的方式貌似低效,但实际上这已经足够能快速运行了。

  步骤2:修改应用中的连接字串

  为了将SimplCommerce应用程序连接到数据库,我需要修改其连接字串。在ASP.Net内核里,这些设置位于appsettings.json和一些底层文件之中。这些.json文件包含了各种配置,就像以前的那个web.config文件一样。

这些.json文件包含了各种配置,就像以前的那个web.config文件一样。

  令人感到奇妙的是:它们是根据你设置的环境变量来工作的。例如,你可以创建一个appsettings.development.json文件来用于环境变量的变化。就像这样:

就像这样:

  我在此处所说的环境变量是指ASPNETCORE_ENVIRONMENT变量。默认情况下,当你在Visual Studio中调试时,ASP.Net内核用到该变量,且值为“development”。而当你部署自己的应用时,该变量的默认值则为“production”。你可以在任何所用到的托管环境中覆盖该变量,甚至是在Visual Studio的项目文件(projectfile)的设置中。

  总之,为了把我的本地机器连接到数据库,我将数据库的连接字串放到了appsettings.development.json文件中。

  步骤3:开启防火墙,以允许我的本地机器连接到Azure SQL Server

  但这还不够,Azure SQL Server在默认情况下开启了防火墙,阻断了除Azure中的地址以外的所有IP地址去访问服务器。因此,我需要将自己的IP地址添加到防火墙中,以连到服务器上。你可以在Azure的门户界面里设置Azure SQL Server。

  一切设置好以后,你会发现数据库还是空的,没有任何的数据表。在GitHub的SimplCommerce页面上,你会找到用来执行将各种表和数据填充到数据库的具体步骤。这些对数据库的填充主要涉及到运行一个实体框架的迁移和SQL脚本的操作。

  配置应用程序来使用Stackify Retrace

  在将应用程序部署到Azure之前,我需要将其准备好并把数据发送到Stackify Retrace,以方便我们去监控该应用是如何运行的。这是一个非常强大的监控工具,它能帮助我监控到:

  应用程序和相关组件的性能

  应用程序中的内部错误

  应用程序的可用性

  上述的第一点是非常重要的,因为我想看到该应用的全方位性能。这还意味着我也想看到我的各个相关组件,例如Azure SQL数据库,的执行状况和需要改进的地方。同时我也需要包括对应用程序出现错误时的提醒和深入挖掘重要因素的能力。如果没有它,我至少要等到用户反馈的时候才会知道错误的发生,这会造成非常不好的用户体验。Retrace能帮助我深挖错误、追溯原因并予以修复。而所有的这些都只需要简单的设置便可实现。

  首先,我添加名为StackifyMiddleware的块包,你可以在如下图所示的Visual Studio中进行操作或是在包管理器的控制台窗口中输入以下命令:

  Install-Package StackifyMiddleware

Install-Package StackifyMiddleware

  然后,你可以在应用程序的类中激活所需的Stackify中间件。而在配置方法上,你需要输入一行:app.UseMiddleware(); 注意,在插入这一行语句之前,你要先定义好app.UseMvc的声明。

然后,你可以在应用程序的类中激活所需的Stackify中间件。

  好,现在一切都准备就绪了,我们可以开始向Azure部署该应用了。

  将ASP.NET内核部署到Azure

  我想让该应用程序运行在Azure中。为了做到这一点,我将创建一个Azure的Web应用,并将我的应用程序部署到里面。就像其他类型的应用程序一样,ASP.NET内核的应用程序是运行在Azure的Web应用之中的。请记住老版本的ASP.NET内核的应用程序(也就是基于project.json格式的)将在2017年5月底之后不再被Azure所支持。

  我将使用Visual Studio来把该应用程序部署到Azure。这其实很简单,你只需右键单击ASP.NET应用的项目文件并选择发布(publish)。如下所示的向导就会指导你去实现。如果你没有现成的话,它甚至会为你创建一个全新的Web应用。

如下所示的向导就会指导你去实现。如果你没有现成的话,它甚至会为你创建一个全新的Web应用。

  在这些完成之后,我就有了一个Web应用,该应用程序就运行于其中。不过,它是仍不可运行的。

  为该Web应用激活Stackify追溯

  首先,我需要安装一个扩展,以便Stackify Retrace能够捕捉到Web应用的数据。我可以从Azure的门户来实现。在那里,你可以在Web应用的选项中选择扩展菜单(extensions menu)并选择Stackify APM + extension,然后安装它。这将激活Stackify来捕捉运行Web应用所需资源的各项指标,如CPU、内存等。

首先,我需要安装一个扩展,以便Stackify Retrace能够捕捉到Web应用的数据。

  记住,请确保在安装了这个扩展之后重新启动该Web应用。

  配置Web应用

  接下来,我需要做的就是配置该Web应用。

  记得吗?我已经把数据库的连接字串放入了appsettings.development.json文件中。就是因为在默认情况下,该应用在部署的时候并会不使用development.json文件,因此它不能连接到数据库。可见,我需要给该Web应用的应用设置(ApplicationSettings)中的连接字串赋值,这将覆盖数据库的连接配置设置,以允许该应用程序连接到数据库。

记得吗?我已经把数据库的连接字串放入了appsettings.development.json文件中。

  另外,我需要插入Stackify.ApiKey及其值到该应用的设置中。这将告诉Stackify该Web应用属于我的帐户的,要并让我能够看到该应用的数据。你可以在你的Stackify的账号面板上找到这个键值。当然,如果你还没有帐户的话,你就需要注册一个14天的适用版了。

  我还建议你设置Stackify.AppName和Stackify.Environment的属性。这些都会出现在Stackify的门户界面上,并能够帮助你去识别你的应用。你可以通过阅读如下链接 ,以了解Azure应用服务中设置Stackify Retrace的全部指令。

  Stackify Retrace在运行中的优点

  通过Stackify Retrace的后台运行,我可以看到一些有关该应用程序的有趣信息。Stackify是一个SaaS产品,所以你可以在登录看到你的数据。在这里,我可以访问到各种各样的仪表盘和指标,从而定制出我心仪的内容。

在这里,我可以访问到各种各样的仪表盘和指标,从而定制出我心仪的内容。

  我最喜欢的一个是性能仪表盘。在这里,我可以很容易地看到我的应用的运行状态和各种表现。Retrace可以告诉我有哪些相关的组件,而且可以对它们进行查看。在这种情况下,如下图示,我调入了一个最耗时间的Azure SQL数据库。我能够很快看到在当前时间段有多少个失败请求。

我调入了一个最耗时间的Azure SQL数据库。我能够很快看到在当前时间段有多少个失败请求。

  显示在它后面的错误概述也很有帮助。它告知我了该应用程序里的一个错误,你可以让它运行一段时间以得到其概述。它会显示正在发生的错误数量,并以简短的堆积跟踪线来显示。

它会显示正在发生的错误数量,并以简短的堆积跟踪线来显示。

  你可以深入了解这些堆积跟踪线,来查看到包括HTTP请求和HTTP头部在内的有关错误的各种信息。

你可以深入了解这些堆积跟踪线,来查看到包括HTTP请求和HTTP头部在内的有关错误的各种信息。

  这个功能对于让你能快速地得到错误的根源并解决之是非常强大的。

  知识分享:Azure

  存储服务:

  主条目:关系数据库,DocumentDB,存储体,搜索服务和Redis缓存服务

  存储数据是一个平台服务最基本的要求,Azure 在开发初期就提供了基本的存储 (Azure Storage) 与关系数据库 (SQL Azure),存储服务提供了 Blob、Table 和 Queue 分别管理非结构化数据、结构化数据与消息通信,2014年新增 File 服务,以支持在云虚拟机间的快速数据共享。

  数据库服务 SQL Azure 为 SQL Server as a Service,提供大部分在地端的 SQL Server 数据库的能力,2013 年微软将 SQL Azure 正名为 Azure SQL Database,以提升品牌识别度,2014 年新增依交易量计费的 DTU 模式,以及新一代数据库引擎 V12,强化数据库的功能与效率,2015 年更提出了许多数据库的企业级应用,如 Elastic Pooling、SQL Data Warehouse 与和 SQL Server 2016 配合的 SQL Database Strerch Database 功能,使 SQL Database 更适合企业的应用。

  Azure Search 是微软为提升云数据检索的功能而于 2014 年提供,搭配 Azure DocumentDB 实现出的数据检索服务。

  Azure Redis Cache 为微软基于Redis开源项目所发展的分布式缓存服务,用以取代 2011 年的 Azure Shared Cache 以及 2012 年提出的 Azure Role-based Cache 服务,由于 Redis Cache 适用于许多平台与框架,使得 Azure Redis Cache 更容易被大众接受以作为分布式缓存基础建设。

  分析服务:

  主条目:HDInsights,数据流分析,数据工厂,事件汇集器,数据湖和机器学习

  分析服务是 Microsoft Azure 一系列支持大数据与机器学习等与数据分析相关的服务集合,由数据的获取,分析到存储都有完整的解决方案。

  数据获取:Azure Event Hub,由物联网设备获取信号或消息数据;Azure Data Factory 处理数据的转换;Azure Stream Analytics 处理在数据流动过程中的特征分析。

  数据分析:Azure HDInsights 支持以Apache Hadoop为主的技术集合所支持的数据分析,包含MapReduce、HDFS、HBase、Pig等技术;Azure Machine Learning 支持以模型为主的数据分析与推断能力。

  数据存储:Azure Data Lake 支持各种类型的数据,无上限的数据存储能力。

  小结:相信大家最后阅读完毕本篇文章后,学到了不少知识吧?其实大家私下呢,还得多多自学,才能学习的更加深彻,更加透彻,当然如果大家还想了解更多相关方面的内容的话呢,课课家教育平台欢迎大家咨询~

赞(20)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程