ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)
ASP.NET Core 1.1 Preview 1于2016年10月25日發(fā)布。這個版本包括許多偉大的新功能以及許多錯誤修復(fù)和一般的增強。
要將現(xiàn)有項目更新到ASP.NET Core 1.1 Preview 1,您需要執(zhí)行以下操作:
1. 下載并安裝更新的.NET Core 1.1 Prevew 1 SDK
2. 按照.NET Core 1.1 Preview 1升級公告(下一節(jié)介紹)中的說明將項目更新為使用.NET Core 1.1 Preview 1
3. 更新您的ASP.NET Core包依賴項以使用新的1.1.0-preview1版本
注意:要在Visual Studio中使用NuGet包管理器將包更新到1.1 Preview 1,您需要從nuget.org下載并安裝用于Visual Studio 2015 3.5 RC1或更高版本的NuGet包管理器。
你現(xiàn)在應(yīng)該準備試試1.1!
.NET Core 1.1 Preview 1升級公告
2016年10月25日發(fā)布.NET Core 1.1 Preview 1。 它包括對其他Linux發(fā)行版的支持,有很多更新,是當前的第一個版本。 將在下面描述所有這些變化。 該版本是一個預(yù)覽版本,目的是早期查看.NET Core 1.1版本。 它不是“Go Live”,并且不建議用于生產(chǎn)工作負載。
關(guān)于EntityFramework Core 1.1 Preview 1,可以參考之前的我的另一篇博文
您可以立即下載版本::
- Windows x64
- Windows x86
- macOS x64
- Linux x64
您可以在.NET Core預(yù)覽下載頁面上查看完整的.NET Core 1.1下載。
.NET Core 1.1預(yù)覽1 Docker中的Docker鏡像也可以在microsoft / dotnet倉庫中找到。 您可以在.NET Core Docker Samples存儲庫中使用dotnetapp-preview示例查看新的Docker鏡像。
您可以在dot.net/core頁面上找到現(xiàn)有的.NET Core 1.0版本。 .NET Core 1.1在作為穩(wěn)定版本發(fā)布后也將列在該頁面上。
.NET Core 1.1 Preview 1改進
.NET Core 1.1版本是第一個1.x次要更新。 其主要產(chǎn)品主題是添加對新操作系統(tǒng)分發(fā)的支持。
.NET Core 1.1 Preview 1操作系統(tǒng)分發(fā)
增加了對以下分發(fā)版的支持:
- Linux Mint 18
- OpenSUSE 42.1
- macOS 10.12
- Windows Server 2016
您可以在.NET Core 1.1 Preview 1發(fā)行說明中查看完整的受支持發(fā)行版。
.NET Core 1.1 Preview 1 APIs
此版本中添加了1380個API。 您可以在API差異.NET核心應(yīng)用程序1.0(參考)VS .NET核心應(yīng)用程序1.1(參考)文檔中查看完整的集。
添加了API以啟用特定場景。 API添加沒有特定的主題。
.NET Standard 1.6.1-preview1作為此版本的一部分發(fā)布。 仍然.NET標準2.0支持。
.NET Core 1.1 Preview 1修復(fù)
進行了許多具體的產(chǎn)品更改。 您可以查看完整的.NET Core 1.1預(yù)覽1提交以了解更多。
以前發(fā)布的MSBuild和CSProj更改不是此版本的一部分,但仍然有效。
.NET Core 1.1 Preview 1 并行安裝使用.NET Core 1.0
.NET Core 1.1預(yù)覽1與.NET Core 1.0并行安裝。 .NET Core 1.0應(yīng)用程序?qū)⒗^續(xù)使用.NET Core 1.0運行時。 .NET Core 1.0環(huán)境被設(shè)計為幾乎完全不知道也安裝了稍后的次要或主要版本。
只有一個命令 - dotnet new - 將隨著安裝.NET Core 1.1的變化而改變。 dotnet new將創(chuàng)建需要.NET Core 1.1 Preview 1的新項目,而不是.NET Core 1.0。 因此,您可能希望避免將其安裝在使用命令行工具進行基于.NET Core 1.0的開發(fā)的機器上。 如果你是在Windows上,并使用Visual Studio創(chuàng)建新項目,而不是dotnet新,安裝.NET Core 1.1是個好主意。
dotnet new將為安裝的最新.NET Core版本創(chuàng)建新項目。
.NET Core 1.1 Preview 1試試看
您可以從安裝.NET Core 1.1 Preview開始。 之后,您可以像使用.NET Core 1.0一樣使用.NET Core工具。 嘗試以下命令集來創(chuàng)建,構(gòu)建和運行.NET Core 1.1 Preview 1應(yīng)用程序:
.NET Core 1.1 Preview 1升級現(xiàn)有項目
您可以將現(xiàn)有的.NET Core項目從使用.NET Core 1.0升級到.NET Core 1.1 Preview 1.我將向您展示dotnet new命令現(xiàn)在生成的新project.json文件。 這是查看需要復(fù)制/粘貼到現(xiàn)有project.json文件中的新版本值的最佳方法。 目前沒有自動化工具將現(xiàn)有項目升級到更高版本的.NET Core。
這個project.json文件與.NET Core 1.0 project.json非常相似,除了netcoreapp1.1和1.1.0-preview1-001100-00目標框架和元包版本字符串。
您可以使用以下替換來幫助您更新要臨時或永久移動到.NET Core 1.1的project.json文件。
- 將netcoreapp1.0目標框架更新為netcoreapp1.1。
- 將Microsoft.NETCore.App包版本從1.0.x(例如,1.0.0或1.0.1)更新到1.1.0-preview1-001100-00。
你也可以只寫1.1.0-preview1- *,跳過特定于構(gòu)建的信息。 它的工作原理,使您能夠更容易地前進與.NET Core 1.1的構(gòu)建,如果你采納那些。 當.NET Core 1.1作為穩(wěn)定版本發(fā)布時,您將要將元包版本更改為1.1.0。 目標框架版本不會改變.NET Core 1.1的生命周期。
升級到.NET Core 1.1 Preview 1 Docker鏡像
.NET Core 1.1預(yù)覽1圖像已發(fā)布到microsoft / dotnet倉庫。 .NET Core 1.1的兩個新標簽(用于.NET Core 1.1 Preview 1 SDK和運行時映像)分別為:1.0.0-preview2.1-sdk,1.1.0-core。
最新的和其他無版本的標簽不會被更新為指向.NET核心1.1,但仍指向.NET核心1.0。 注意,.NET Core研發(fā)團隊仍然決定無版本標簽應(yīng)該總是指向LTS版本(見下面的解釋),或者它們是否可以指向當前版本。
您可以使用.NET Core Docker Samples存儲庫中的dotnetapp-preview示例來試用新的Docker鏡像。 其他樣本可以很容易地修改,以鍛煉.NET Core 1.1 Preview 1 images,按照我給你上面的project.json升級說明。
當前版本
.NET Core研發(fā)團隊在7月宣布,將采用.NET核心版本的雙列戰(zhàn)略。當時,稱之為兩種不同的產(chǎn)品系列“LTS”和“FTS”。這些發(fā)布條款已更名為“長期支持(LTS)”和“當前版本”。這與其他平臺類似,如Red Hat Enterprise Linux,Ubuntu和Node.js。事實上,采用“當前”,因為該術(shù)語已經(jīng)在使用,并已經(jīng)具有想要的意思。
.NET Core研發(fā)團隊稱不同的版本為“trains”,因為它很容易應(yīng)用火車(長的車輛在金屬軌道上)類似于軟件版本。
雖然。 LTS(慢)和當前(快)列車定義不同的釋放節(jié)奏,對更新中可接受的變化種類的不同期望以及不同的支持時間幀。根據(jù)在.NET Framework中的經(jīng)驗,只有一個列車,.NET Core研發(fā)團隊希望在發(fā)布中有更多的靈活性,并能夠更好地服務(wù)于不同的客戶。
在經(jīng)過深入,冗長的測試,重要的客戶采用(被命名為LTS)和高度穩(wěn)定性之前發(fā)運LTS版本。一旦發(fā)布,目標是盡可能少地更新LTS版本,僅用于安全性,可靠性,性能問題和罕見的重要功能。他們支持長達三年。更保守的客戶期望零變化,雖然他們意識到這不是很現(xiàn)實。
當前版本是目前正在積極工作的版本。 .NET核心1.1是這樣的版本。在這些版本中執(zhí)行主要功能工作,并且還支持新的操作系統(tǒng)分發(fā)。這些版本是穩(wěn)定的,但是移動速度也快得多,因此當您采用它們時需要更多的測試。它們也僅在下一個最新版本發(fā)布后三個月才得到支持。要保留受支持的版本,您需要在三個月過去之前移動到下一個當前版本。有了Current,你得到的新功能必須更快,但必須留在那個發(fā)行火車。
支持一些新的操作系統(tǒng)發(fā)行版也將在LTS發(fā)行版中添加,但這將在異常基礎(chǔ)上完成。 Windows Server 2016和macOS Sierra是發(fā)生這種情況的示例。
一旦對一系列當前版本感到滿意,并且有足夠的反饋,.NET Core研發(fā)團隊將下一個版本標記為LTS,然后重復(fù)整個過程。這可能發(fā)生在連續(xù)幾個或許多當前版本之后。
當前版本到LTS的轉(zhuǎn)換是“切換火車”的好機會。預(yù)計一些開發(fā)人員將在開發(fā)較長項目期間選擇當前版本,以獲得最新功能和更廣泛的修復(fù)集,然后在項目中稍后(假設(shè)計時正常)為其生產(chǎn)部署做好準備。
版本控制,文件名和Docker標簽
如果你在一個有大量用戶和發(fā)行版的重要項目上工作,你可能會知道產(chǎn)品命名和版本控制是非常困難的。 .NET Core項目不能解決這個問題。事實上,它似乎包含它,選擇版本字符串,不是那么直觀。
有兩個.NET核心版本:一個運行時和一個包含運行時和一些工具的SDK。很容易到目前為止。主要的問題是SDK分發(fā)是最受歡迎的分發(fā),但不與運行時共享相同的版本方案。面臨的挑戰(zhàn)是,主要從運行時版本(包括本博客文章)來討論產(chǎn)品,而SDK則根據(jù)其攜帶的工具進行版本化。有很多原因選擇這樣做。這就是上下文。
.NET核心安裝程序,Docker映像和project.json文件攜帶您需要使用的版本號和原因。選擇和/或?qū)懻_的東西可能是挑戰(zhàn),因為這些字符串中的一些看起來非常相似,但意味著不同的東西。
這里是關(guān)鍵的版本:
- 1.0.0-preview2-sdk - 指.NET Core 1.0 SDK,其中包括穩(wěn)定的1.0 Runtime和預(yù)覽1.0工具。這是.NET Core Tools的第二個預(yù)覽版本。
- 1.0.0-preview2.1-sdk - 指.NET Core 1.1 SDK,其中包括預(yù)覽1.1 Runtime和預(yù)覽1.0工具。它被稱為preview2.1,因為它是一個點相關(guān)的工具相對于preview2,即使它帶有一個新的運行時。
- 1.1.0-preview1 - 指的是.NET Core 1.1 Runtime的第一個預(yù)覽。
.NET Core研發(fā)團隊打算明年發(fā)布最終的1.0版本的.NET核心工具。這種情況應(yīng)該會更好。它將使我們能夠發(fā)送1.0.0-sdk版本,沒有預(yù)覽字符串。 SDK和運行時版本仍將不匹配。.NET Core研發(fā)團隊正在討論怎么做。他們希望工具能夠比運行時更快的版本,但是,可能會選擇不時地人為地使版本號相同,以使Runtimes和SDK更容易匹配。
?
.NET Core 1.1 Preview 1升級公告介紹完畢,下面繼續(xù)之前的ASP.NET Core 1.1 Preview 1的簡介
新的東西
以下新功能可在此版本中預(yù)覽:
- URL重寫中間件
- 響應(yīng)緩存中間件
- 響應(yīng)壓縮中間件
- WebListener服務(wù)器
- 將視圖組件用作標簽助手
- 中間件作為MVC過濾器
- 基于Cookie的TempData provider
- 查看編譯
- Azure App Service日志記錄提供程序
- Azure密鑰庫配置提供程序
- Redis和Azure存儲數(shù)據(jù)保護密鑰庫
有關(guān)此版本中包含的更改的其他詳細信息,請查看發(fā)行說明。
讓我們看看準備好在這個預(yù)覽中試用的一些功能:
URL重寫中間件
通過可以使用IIS標準XML格式化規(guī)則,Apache Mod_Rewrite語法或一些編碼到您的應(yīng)用程序中的一些簡單的C#方法配置的中間件組件將URL重寫功能帶到ASP.NET Core。這允許將設(shè)計用于客戶端消耗的公共URL空間映射到中間件流水線所需的下游組件的任何表示,以及根據(jù)模式將客戶端重定向到不同的URL。
例如,您可以通過重寫對http://example.com的任何請求來確保規(guī)范主機名,而在重寫規(guī)則運行后為所有內(nèi)容重寫http://www.example.com。另一個示例是將所有請求重定向到http://example.com到https://example.com。您甚至可以配置URL重寫,以便應(yīng)用這兩個規(guī)則,并且對example.com的所有請求始終重定向到SSL并重寫為www。
我們可以通過添加對Microsoft.AspNetCore.Rewrite包的Web應(yīng)用程序的引用來開始使用此中間件。這允許我們在我們的重寫器的Startup.Configure方法中添加一個調(diào)用來配置RewriteOptions:
startup.cs
正如你所看到的,我們可以用不同的規(guī)則強制重寫和重定向。
- Url Redirect將HTTP 301 Moved Permanently狀態(tài)代碼發(fā)送到具有新地址的客戶端
- Url Rewrite為HTTP管道中的后續(xù)步驟提供了一個不同的URL,欺騙它認為請求了不同的地址。
?
響應(yīng)緩存中間件
通過將Microsoft.AspNetCore.ResponseCaching和Microsoft.Extensions.Caching.Memory包添加到應(yīng)用程序中,現(xiàn)在可以在應(yīng)用程序中激活與之前的ASP.NET版本的OutputCache功能類似的響應(yīng)緩存。 您可以在Startup.ConfigureServices方法中將此中間件添加到應(yīng)用程序,并從Startup.Configure方法配置響應(yīng)緩存。 對于示例實現(xiàn),請查看ResponseCaching存儲庫中的演示。
響應(yīng)壓縮中間件
現(xiàn)在,您可以將GZipCompression添加到ASP.NET HTTP管道,如果您希望ASP.NET執(zhí)行壓縮,而不是前端Web服務(wù)器。 此中間件在Microsoft.AspNetCore.ResponseCompression包中提供。 您可以在Startup.cs類中使用具有以下語法的最快壓縮級別添加簡單的GZipCompression:
還有其他可用于配置壓縮的選項,包括指定自定義壓縮提供程序的功能。
用于Windows的WebListener服務(wù)器
WebListener是直接在Windows Http Server API之上運行的服務(wù)器。 WebListener提供了利用Windows特定功能的選項,如支持Windows身份驗證,端口共享,帶有SNI的HTTPS,TLS的HTTP / 2(Windows 10),直接文件傳輸和響應(yīng)緩存WebSockets(Windows 8)。 在Windows上,您可以使用此服務(wù)器而不是Kestrel,通過引用Microsoft.AspNetCore.Server.WebListener包而不是Kestrel包,并將WebHostBuilder配置為使用Weblistener而不是Kestrel:
您可以在其GitHub存儲庫中找到演示使用WebListener的其他示例。
與作為此版本的一部分的其他軟件包不同,WebListener正以1.0.0和1.1.0預(yù)覽的形式提供。 1.0.0版本的包可用于生產(chǎn)LTS(1.0.1)ASP.NET Core應(yīng)用程序。 1.1.0預(yù)覽版本的軟件包是下一版本的WebListener的預(yù)發(fā)布版本,作為1.1.0版本的一部分。
將視圖組件用作標簽助手
現(xiàn)在,您可以使用Tag Helper語法從視圖中調(diào)用View組件,并在Visual Studio中獲得IntelliSense和Tag Helper工具的所有優(yōu)點。 以前,要從視圖調(diào)用View組件,您將使用Component.InvokeAsync方法,并使用匿名對象傳遞任何View組件參數(shù):
中間件作為MVC過濾器
中間件通常位于全局請求處理管道中。 但是如果你想將中間件只應(yīng)用于特定的控制器或操作呢? 您現(xiàn)在可以使用新的MiddlewareFilterAttribute將中間件應(yīng)用為MVC資源過濾器。 例如,您可以將響應(yīng)壓縮或緩存應(yīng)用于特定操作,也可以使用基于路由值的請求文化提供程序,使用本地化中間件為請求建立當前文化。
要使用中間件作為過濾器,您首先使用Configure方法創(chuàng)建一個類型,該方法指定要使用的中間件管道:
然后,您可以使用MiddlewareFilterAttribute將該中間件流水線應(yīng)用于控制器操作或全局:
基于Cookie的TempData provider
作為使用會話狀態(tài)存儲TempData的替代方法,您現(xiàn)在可以使用新的基于Cookie的TempData提供程序。 基于Cookie的TempData提供程序?qū)⑺蠺empData保存在cookie中,并且不需要管理任何服務(wù)器端會話狀態(tài)。
要使用基于Cookie的TempData提供程序,請在添加MVC服務(wù)后在ConfigureServices方法中注冊CookieTempDataProvider服務(wù),如下所示:
查看編譯
雖然視圖的razor語法提供了不需要編譯器的靈活開發(fā)體驗,但在某些情況下,您不希望在運行時解釋razor語法。 您現(xiàn)在可以預(yù)先編譯應(yīng)用程序引用的Razor視圖,并使用應(yīng)用程序部署它們。 您可以在project.json的“tools”部分中使用包引用“Microsoft.AspNetCore.Mvc.Razor.Precompilation.Tools”將視圖編譯器添加到應(yīng)用程序。 運行程序包恢復(fù)后,您可以執(zhí)行“dotnet razor-precompile”來預(yù)編譯應(yīng)用程序中的剃刀視圖。
Azure App Service日志記錄提供程序
Microsoft.AspNetCore.AzureAppServicesIntegration包允許您的應(yīng)用程序利用App Service特定的日志記錄和診斷。 使用ILogger / ILoggerFactory抽象編寫的任何日志消息將轉(zhuǎn)到門戶中App Service配置的“診斷日志”部分中配置的位置(請參閱屏幕截圖)。
用法:
添加對Microsoft.AspNetCore.AzureAppServicesIntegration包的引用,并調(diào)用Program.cs中的UseAzureAppServices方法。
program.cs
注意:UseIISIntegration不在上述示例中,因為UseAzureAppServices包括它,如果您有兩個調(diào)用,但不顯式調(diào)用UseIISIntegration不應(yīng)該不會傷害您的應(yīng)用程序。
添加UseAzureAppServices方法后,您的應(yīng)用程序?qū)⒆袷谹zure應(yīng)用程序服務(wù)設(shè)置的診斷日志部分中的設(shè)置,如下所示。 如果更改這些設(shè)置,例如,從文件系統(tǒng)切換到blob存儲日志,您的應(yīng)用程序?qū)⒆詣忧袚Q到記錄到新位置,而不重新部署。
?
Azure密鑰庫配置提供程序
Microsoft.Extensions.Configuration.AzureKeyVault包為Azure密鑰庫提供配置提供程序。 這允許您從應(yīng)用程序啟動時從密鑰保險庫秘密檢索配置并將其保存在內(nèi)存中,使用普通的ASP.NET Core配置抽象來訪問配置數(shù)據(jù)。
提供者的基本用法是這樣的:
startup.cs
有關(guān)如何添加Key Vault配置提供程序的示例,請參閱此處的示例:
https://github.com/aspnet/Configuration/tree/dev/samples/KeyVaultSample
Redis和Azure存儲數(shù)據(jù)保護密鑰庫
Microsoft.AspNetCore.DataProtection.AzureStorage和Microsoft.AspNetCore.DataProtection.Redis軟件包允許將數(shù)據(jù)保護鎖分別存儲在Azure存儲或Redis中。 這允許在網(wǎng)站的多個實例之間共享密鑰,以便您可以例如在運行ASP.NET Core應(yīng)用程序的多個負載平衡服務(wù)器上共享認證cookie或CSRF保護。 由于數(shù)據(jù)保護在幕后用于MVC中的一些事情,極有可能一旦你開始向外擴展,你將需要共享鑰匙圈。 在這兩個包之前共享密鑰的選項是使用網(wǎng)絡(luò)共享與基于文件的密鑰存儲庫。
Azure示例
Redis示例
?注意:當使用非持久性Redis實例時,使用Data Protection加密的任何內(nèi)容將無法在實例重置后解密。 對于默認的認證流,這通常只是意味著用戶被重定向到再次登錄。 但是,對于使用Data Protections Protect方法手動加密的任何內(nèi)容,您將無法完全解密數(shù)據(jù)。 因此,當手動使用Data Protection的Protect方法時,不應(yīng)使用不持久的Redis實例。 數(shù)據(jù)保護針對短暫數(shù)據(jù)進行了優(yōu)化。
?
備注
本文是針對ASP.NET Core 1.1 Preview 1的簡介,希望本文對你有所幫助。如果您覺得不錯,請點一波關(guān)注或推薦。如果轉(zhuǎn)載,請注明出處http://www.cnblogs.com/smallprogram/。
本文中間穿插簡介了.NET Core 1.1 Preview 1。如果需要查看EntityFramework Core 1.1 Preview 1的簡介,請點擊此處。
再次感謝您的閱讀。
轉(zhuǎn)載于:https://www.cnblogs.com/smallprogram/p/6075910.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6入门之对象扩展
- 下一篇: DHTML_____window对象方法