Working with Multiple Environments(使用多个环境)

Working with Multiple Environments

ASP.NET 5提高了跨多环境控制应用程序行为的支持。比如:开发,过度,生产。环境变量用来表明应用程序运行的环境,允许适当配置应用程序。

In  this   article(在这篇文章中主要介绍的章节如下):

• Development, Staging, Production

• Determining the environment at runtime

• Startup conventions Browse or download samples on GitHub.

Development, Staging, Production

        ASP.NET 5引用特定的环境变量。ASPNET_ENV(or Hosting:Environment)描述了当前正在运行的应用程序的环境。这个变量可以设置任何值,但是按照惯例使用三个值,分别为:Development, Staging, and Production。您将发现这些值用于ASP.NET 5提高那个的样品和模板中。

当前环境设置能从ASP.NET 5检测到所使用的编程方式,此外,ASP.NET MVC6介绍了Environment Tag Helper,Environment Tag Helper允许MVC视图包括基于当前应用程序环境的某些部分。

Development

下面是开发应用程序时使用的环境。用Visual Studio 2015时,在项目的调试配置文件中指定环境设置,比如IIS Express,如下图所示:

当修改已创建项目的默认设置,更改在Properties文件夹中的launchSettings.json中被持久化,   包括用到的任何环境变量。在Web配置文件改变 ASPNET_ENV (or Hosting:Environment) 变量为Staging之后,launchSettings.json文件如下所示:

{
  "iisSettings": {
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
        "applicationUrl": "http://localhost:40088/",
        "sslPort": 0
                    }
    },
  "profiles": {
     "IIS Express": {
         "commandName": "IISExpress",
         "launchBrowser": true,
         "environmentVariables": {
              "ASPNET_ENV": "Development"
            }
       },
     "web": {
         "commandName": "web",
         "environmentVariables": {
               "Hosting:Environment": "Staging"
           }
      }
  }
}

      Staging环境是预生产环境,在生产环境之前用来最终测试,理想的情况是,它的物理特性能反应项目产品 ,以至于任何问题在Staging环境中第一次出现时就能解决而不影响客户的使用。

Production(产品)

应用程序运行并被用户使用的环境是Procuction环境。这个环境应该被配置最大的安全性,性能和应用程序的健壮性,production环境中可能有的一些公共设置和开发时有所不同,包括以下。

Turn on caching

Ensure all client-side resources are bundled, mini?ed, and potentially served from a CDN

Turn off diagnostic ErrorPages

Turn on friendly error pages
        Enable production logging and monitoring (for example, Application Insights)

这不是一个完整的列表,最好避免在应用程序的很多部分进行分散环境检查。相反,推荐的方法是尽量在应用程序的Startup类(cs)中执行这种检查。

Determining the environment at runtime(在运行时决定使用环境)

为了正常工作,IHostingEnvironment服务提供了带有环境的核心抽象概念,ASP.NET hosting层提供了该服务并且通过依赖注入将这个服务注入到启动逻辑中。Visual Studio中的ASP.NET 5 网站模板用这种方法加载特定环境的配置文件(if present),并自定义应用程序的错误处理设置。在这2种情况下,目前指定环境通过调用 EnvironmentName 或者IsEnvironment 将IHostingEnvironment 的实例传递给适当的方法来实现这种行为的。

如果需要检查在特定的环境中,应用程序是否运行,用env.IsEnvironment("environmentname") ,它能正确地忽略大小写。

例如,可以使用以下代码在Con?gure方法中设置环境的具体错误操作:

if (env.IsDevelopment())
 {
   app.UseBrowserLink();
   app.UseDeveloperExceptionPage();
   app.UseDatabaseErrorPage();
  }
 else
 {
   app.UseExceptionHandler("/Home/Error");
 }

   如果应用程序在开发环境中正常运行,它可能BrowserLink ,开发特定的错误页,否则,配置一个标准的错误页作为对任何未处理异常的响应显示出来。

Startup conventions(启动约定)

ASP.NET 5支持基于协议的方法在当前环境中配置应用程序的启动。也可以根据环境通过编程的方式控制应用程序的执行,并允许创建和管理自己的协议。

当ASP.NET应用程序启动时,启动类启动应用程序,加载配置设置等(到ASP.NET  startup了解更多)。然而,如果存在名为Startup{EnvironmentName}的类,(比如StartupDevelopment),ASPNET_ENV环境变量和这个名相匹配,使用启动类。开发时可以配置启动项,当应用程序在Production的环境中运行,将使用一个单独的StartupProduction。反之亦然。

当应用程序在Development环境中被设置成运行,以下示例项目中的StartupDevelopment将运行。

在开发期间,运行应用程序,显示欢迎屏幕,示例还包括一个StartupStaging类:

当ASPNET_ENV设置成Staging,并且应用程序运行,使用StartupStaging类,应用程序将显示字符串声明,并运行在staging 环境中。当环境没有设置成Development或者是Staging时,会运行应用程序默认的Startup类。(据推测,设置为Production,而不是仅限于这三个选项。还要注意,如果没有环境设置,运行默认启动)。

除了在当前环境下使用完全独立的Startup类,也可以重新在Startup类中配置应用。Configure[Environment]() 和 Configure[Environment]Services()中的Configure()和ConfigureServices()方法支持特定环境的版本,和Startup类本身类似。如果定义了ConfigureDevelopment方法,当环境设置为development时,它将被调用,而不是调用Configure(),同样,在同样的环境中ConfigureDevelopmentServices()方法将被调用,而不是ConfigureServices()方法。

using Microsoft.AspNet.Builder;namespace Environments  {     public class StartupDevelopment      {          public void Configure(IApplicationBuilder app)           {             app.UseWelcomePage();           }       }  }

  

 using Microsoft.AspNet.Builder;  using Microsoft.AspNet.Http; 

 namespace Environments   {    public class StartupStaging       {         public void Configure(IApplicationBuilder app)           {             app.Run(async context =>             {              context.Response.ContentType = "text/plain";              await context.Response.WriteAsync("Staging environment.");              });           }       }  }

   总结

ASP.NET 5提供类很多特性和协议,允许开发人员在不同的环境中控制应用程序如何执行。当发布应用程序从development到staging到production。环境变量设置适当的环境,允许对应用程序调试,测试或者使用进行优化。

更多资源

Con?guration

时间: 2024-10-05 20:52:50

Working with Multiple Environments(使用多个环境)的相关文章

Semantic Monocular SLAM for Highly Dynamic Environments面向高动态环境的语义单目SLAM

一.摘要 当前单目SLAM系统能够实时稳定地在静态环境中运行,但是由于缺乏明显的动态异常处理能力,在动态场景变化与运动中往往会失败.作者为解决高度动态环境中的问题,提出一种语义单目SLAM架构,结合基于特征和直接方法实现具有挑战的条件下系统的鲁棒性.作者所提出的方法利用专业概率模型从场景中提取的语义信息,使跟踪和建图的概率最大化依赖于那些相对于相机没有呈现相对运动的场景部分.在KITTI和Synia数据集上,作者展示了在动态环境中更稳定的姿态估计效果以及相比当前最好静态场景下不错的表现. 二.贡

在多个环境中工作

在多个环境中工作 原文: Working with Multiple Environments作者: Steve Smith翻译: 刘浩杨校对: 孟帅洋(书缘) ASP.NET Core 介绍了支持在多个环境中管理应用程序行为的改进,如开发(development),预演(staging)和生产(production).环境变量用来指示应用程序正在运行的环境,允许应用程序适当地配置. 章节: 开发,预演,生产 在运行时确定环境 启动约定 概要 附加资源 查看或下载示例代码 开发,预演,生产 AS

.Net Core + Angular Cli 开发环境搭建

一.基础环境配置 1.安装VS 2017 v15.3或以上版本 2.安装VS Code最新版本 3.安装Node.js v6.9以上版本 4.重置全局npm源,修正为 淘宝的 NPM 镜像: npm install -g cnpm --registry=https://registry.npm.taobao.org 5.安装TypeScript cnpm install -g typescript typings 6.安装 AngularJS CLI cnpm install -g @angul

.Net Core+Angular Cli/Angular4开发环境搭建教程

一.基础环境配置1.安装VS2017v15.3或以上版本2.安装VSCode最新版本3.安装Node.jsv6.9以上版本4.重置全局npm源,修正为淘宝的NPM镜像:npminstall-gcnpm 一.基础环境配置 1.安装VS 2017 v15.3或以上版本2.安装VS Code最新版本3.安装Node.js v6.9以上版本4.重置全局npm源,修正为 淘宝的 NPM 镜像: npm install -g cnpm --registry=https://registry.npm.taob

Angular总结一:环境搭建

工欲善其事必先利其器,开发 Angular 项目首先要搭建环境.Angular 的环境搭建包括三个方面,开发环境 WebStorm,命令行工具 Angular CLI,以及 nodejs. 一.安装 nodejs 进入到 nodejs 的官网 https://nodejs.org/en/ 去下载安装包,下载慢的同学可以去我的百度网盘下载:https://pan.baidu.com/s/1mkilULq 密码:uaf7 根据电脑操作系统推荐了不同的版本,这里可以选择以上两个中的其中一个,下载完成后

Postman全局变量和环境变量设置

在Postman中有两种方法添加变量 1.在右上角齿轮处可以手动添加 点击"Manage Environments"可以进入管理环境变量界面 点击Add,可以设置环境的名字,然后设置变量键值对. 有两种设置方式,点击Bulk Edit可以进入另一个模式来批量编辑,随意选一样 效果如下: 该界面还有其他一些复制,删除什么的小功能 点击Globals按钮可以进入全局变量设置界面 操作和环境变量一样,点击旁边的对勾可以禁用. send前选择对应的环境变量(下图) 全局变量和环境变量的区别?

MyBatis(一) —— 环境搭建

一 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.(官方解释) 二 为什么使用MyBatis? 1. MyBatis简单实用 MyBatis使用难度相对简单,仅仅需要导

ASP.NET Core 第一章:简介

英文原版:Introduction to ASP.NET Core 关于ASP.NET Core ASP.NET Core 是一个全新的开源.跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联网)应用和移动后端等.ASP.NET Core可以运行在 .NET Core 或完整的 .NET Framework 之上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发框架,由开销很小的模块化组件构成,这就保持了你构造解决

ASP.NET 5 Configuration

原文:https://docs.asp.net/en/latest/fundamentals/configuration.html ASP.NET 5支持多种配置选项. 应用的配置文件可以是JSON,XML,INI格式,也可以是来自系统环境变量.而且你还可以写自己的自定义configuration provider. 下载本文示例代码 获取设置configuration ASP.NET 5的重构了之前依赖于System.Configuration和xml格式的配置文件(如web.config).