• 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, minified, 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") ,它能正确地忽略大小写。

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

    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。环境变量设置适当的环境,允许对应用程序调试,测试或者使用进行优化。

         更多资源

        Configuration

  • 相关阅读:
    Cesium中的坐标系及转换
    Cesium Workshop
    window.postMessage 跨窗口,跨iframe javascript 通信
    VUE课程参考---7、跑马灯效果
    VUE课程---9、事件绑定v-on
    VUE课程---8、属性绑定v-bind
    VUE课程---7、解决插值表达式闪烁问题
    小谈chrome调试命令:console.log的使用
    Hadoop平台配置总结
    hadoop 关闭进程时报错no 进程 to stop
  • 原文地址:https://www.cnblogs.com/wmj01/p/5226977.html
Copyright © 2020-2023  润新知