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
?
轉載于:https://www.cnblogs.com/wmj01/p/5226977.html
總結
以上是生活随笔為你收集整理的Working with Multiple Environments(使用多个环境)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类目,延展,协议的基本概念
- 下一篇: MinGW和MSYS的自动安装 【转】