Net Core 2.0生態1

來源:互聯網
上載者:User

標籤:and   問題   效能分析   包含   表達   function   右上方   邏輯   研究   

Net Core 2.0生態

閱讀目錄

  • 前言:答讀者問(time by:2017.8.19)
  • 項目升級到ASP.NET Core 2.0
  • 新增功能:Razor Pages介紹
  • 模板更新
  • Entity Framework Core 2.0提供DbContext池
  • 監視器、無代碼更改配置、應用程式監視器
  • Razor支援C# 7.1
  • 簡化應用程式的主機配置
  • 總結

ASP.NET Core 2.0 發布日期:2017年8月14日

ASP.NET團隊宣布ASP.NET Core 2.0正式發布,發布Visual Studio 2017 15.3支援ASP.NET Core 2.0,提供新的Razor Pages項目模板。

詳細發布資訊查看.NET Core 2.0.0發布說明文檔

最新版SDK下載:https://dot.net/core

ASP.NET Core 2.0提供一系列新功能使得Web應用開發、發布、部署和維護變得更加容易,架構效能得到進一步提升。

對於.NET Core 2.0的發布介紹,圍繞2.0的架構體系,本系列相關文章:

  1. .Net Core 2.0 生態(1).NET Standard 2.0 特性介紹和使用指南(發行)
  2. .Net Core 2.0 生態(2).NET Core 2.0 特性介紹和使用指南(發行)
  3. .Net Core 2.0 生態(3)ASP.NET Core 2.0 特性介紹和使用指南(發行)
  4. .Net Core 2.0 生態(4)Entity Framework Core 2.0 特性介紹和使用指南(發行)
回到目錄前言:答讀者問(time by:2017.8.19)

在開始之前先集中回複前兩篇文章評論中大家比較關注的問題

  • 問題1:工具的更新問題
    問題by @軒轅劍:有沒單獨升級到15.3的更新啊?
    答案by @yyww:下載新版本的安裝程式,1M多,會自動更新的

VS2017安裝程式經過重構變成模組化安裝,所以對於15.3版本的更新是累加式更新,下載最新的安裝程式,會自動檢測。

Visual Studio For Mac 7.1也一樣,檢測軟體更新,進行累加式更新。

  • 問題2:.NET Standard到底是什嗎?
    問題by @wdwwtzy:這個系列不錯,想聽聽 standard 到底是啥,建議深入一些,現在太淺了
    問題by @海闊天空XM:幾張體繫結構圖?

.NET Standard是一組API集合,支援.NET Standard的.NET平台之間可以實現代碼共用,基於.NET Standard構建的類庫可以在支援.NET Standard的.NET平台進行複用,防止代碼片段化。
目前支援.NET Standard 2.0的平台有:

  • .NET Framework 4.6.1
  • .NET Core 2.0
  • Mono 5.4
  • Xamarin.iOS 10.14
  • Xamarin.Mac 3.8
  • Xamarin.Android 7.5
  • UWP (預計2017年下半年發布)

在深入一點,看這張圖

平台對.NET Standard 支援對應表(by @農碼一生)


【圖】

  • 問題3:關於System.Drawing API是否提供?
    問題by @PowerShell免費軟體:.net core2正式版了,增加了System.Drawing。
    有人在上面成功運行以前的winform程式嗎?誰能幫忙搞個hello試試看嗎?

命名空間System.Drawing是增加了,只提供了結構體,並沒有提供繪圖類,相信在接下來的版本會支援。

回到目錄項目升級到ASP.NET Core 2.0

ASP.NET Core 2.0 可以同時運行在.NET Framework 4.6.1 和 .NET Core 2.0架構,更改項目目標框架為:netcoreapp2.0

<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup>

在Visual Stdio中可以設定項目屬性

也可以手動編輯專案檔,將原項目中Microsoft.AspNetCore.*引用包升級到2.0

<ItemGroup><PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" /><PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" /></ItemGroup>

ASP.NET Core 2.0項目發布做了最佳化,發布檔案只包含引用的類庫。這個最佳化有助於使發布過程更流暢,更容易分發Web應用程式。

將 ASP.NET Core 1.0 升級到 2.0 詳細內容可以參看這篇文章。

回到目錄新增功能:Razor Pages介紹

ASP.NET Core 2.0中,提供一種新的編碼方式,這種方式在頁面邏輯集中的情境下比使用MVC架構開發更加簡單。

Razor Pages是頁面優先的架構,允許使用者開發介面時,使用簡單的服務端互動方式,通過頁面模型對象(Page Model)進行資料互動,而無需控制器中轉。

在項目開機檔案中,添加代碼

public class Startup{    public void ConfigureServices(IServiceCollection services)    {        // 包含對Razor Pages 和控制器支援.        services.AddMvc();    }    public void Configure(IApplicationBuilder app)    {        app.UseMvc();    }}

當在服務註冊中調用AddMvc方法時會啟用Razor Pages功能。
添加一個測試頁面,放在Pages目錄下,命名為Now.cshtml

@page<html>    <body>        <h2>The server-local time now is:</h2>        <p>@DateTime.Now</p>    </body></html>

這看起來像是標準的Razor視圖,只是在頁面頂部委任標記@page,就定義該頁面為獨立的Razor Page,在頁面中依然可以使用 HtmlHelpers, TagHelpers 或者.NET 代碼,可以像在Razor視圖中一樣定義方法,只需添加區塊層級元素@functions,然後在其內部編寫代碼。

@page@functions {public string FormatDate(DateTime theTime) {    return theTime.ToString("d");}}<html>    <body>        <h2>The server-local time now is:</h2>        <p>@FormatDate(DateTime.Now)</p>    </body></html>

結合使用PageModel對象,可以建立更加複雜的頁面互動,PageModel是一個MVVM架構概念,相當於視圖模型(VM),允許執行方法並將屬性綁定到對應的頁面中。在Pages目錄中建立一個NowModel.cshtml.cs 類。

namespace MyFirstRazorPage.Pages{public class NowModel : PageModel{    private IFileProvider _FileProvider;    public NowModel(PhysicalFileProvider fileProvider)    {    _FileProvider = fileProvider;    LastModified = _FileProvider.GetFileInfo("Pages/Now.cshtml").LastModified.LocalDateTime;    }    public DateTime LastModified { get; set; }    public void OnGet() { }}}

這個類繼承自PageModel,根據頁面業務需要可以構建與頁面互動的邏輯類,並且可以對該類中的商務邏輯進行單元測試。在本例中,將LastModified屬性載入到頁面。另外注意OnGet方法用來聲明PageModel可以響應HTTP GET請求。

更新Razor Page,使用PageModel定義的LastModified屬性。

@page
@model MyFirstRazorPage.Pages.NowModel

<html>    <body>        <h2>This page was last updated:</h2>        <p>@Model.LastModified</p>    </body></html>

更多Razor Pages詳細介紹參看資料。

回到目錄模板更新

模板已經增強,不僅包含MVC模式的Web應用程式模板,也包含Razor Pages Web應用程式模板,還包含一系列單頁應用(SPA)程式模板。這些單頁模板使用Javascript服務功能在ASP.NET Core服務中嵌入NodeJS,將JavaScript應用程式伺服器作為項目中的一部分進行編譯。

命令列工具提供的內建項目模板

回到目錄Entity Framework Core 2.0提供DbContext池

參看:Entity Framework Core 2.0發布(稍後發布,會用單獨一篇文章總結)

回到目錄監視器、無代碼更改配置、應用程式監視器

運行在Azure應用服務上的ASP.NET Core 2.0項目無需修改,提供效能分析、錯誤報表和Azure應用程式監視功能。

在Visual Studio 2017中右鍵項目,Add->Application Insights Telemetry,啟動應用程式資料收集,然後可以直接預覽日誌資訊和應用程式效能報告。

這個功能可以讓我們在開發階段,對應用程式效能做出測試和反饋,當程式發布到Azure之後,可以在Azure門戶中進行分析和調試,程式資訊的收集從第一次發布應用程式並導航到雲門戶時開始。Azure將會以一個紫色橫幅提示您,這表明應用程式監視和分析功能是可用的。

點擊進入查看應用程式監視服務,無需重新編譯和部署,應用程式監視服務將開始報告捕獲到的活動資料。

資料報告顯示了應用程式中失敗的請求和錯誤的數量。單擊關注的資料項目,將展示關於失敗請求的詳細資料:

中拋出一個System.Exception,點擊查看異常報告,可以查看拋出異常的詳細資料,包括呼叫堆疊:

應用程式監視的快照調試現在支援ASP.NET Core 2.0應用。如果設定在應用程式中配置快照調試,則頂部的“開啟調試快照”連結將顯示並顯示完整的呼叫堆疊,可以單擊堆棧中的方法來查看本地變數:

 

好了!我們可以更進一步,點擊右上方的“下載快照”按鈕,在Visual Studio中啟動一個異常偵錯工作階段。

這些頁面的效能如何?從應用程式監視頁面中,選擇左側的效能選項,深入地研究每個請求在應用程式的效能跟蹤。

更多資訊參看使用應用程式洞察的效能分析。

如果您想要使用您的應用程式的原始日誌,您可以在應用程式服務中啟用診斷記錄,並將診斷層級設定為警告或錯誤,以查看該異常被拋出。

最後,選擇左邊的日誌流,您可以看到您在開發人員工作站上所擁有的控制台。選擇將在Azure中觸發的嚴重層級或更大層級的錯誤和日誌訊息。

所有應用程式感知功能都可以在 ASP.NET Core 中使用,不用重新編譯和部署。快照調試需要添加額外的步驟和一些代碼,而配置就像在啟動類中添加額外代碼一樣簡單。

更新資訊參看:應用程式洞察線上文檔

回到目錄Razor支援C# 7.1

Razor視圖引擎藉助Roslyn編譯器支援C# 7.1功能,比如:預設運算式、推斷的元組名稱和模式比對泛型。要在項目中使用c# 7.1特性,在專案檔中添加以下屬性,然後重新載入解決方案:

<LangVersion>latest</LangVersion>

C# 7.1本身還是預覽版狀態,可以在其GitHub存放庫中查看這些特性的語言規範。

回到目錄簡化應用程式的主機配置

主機配置已經大大簡化,預設ASP.NET Core項目模板中提供WebHost.CreateDefaultBuilder,自動分配一個Kestrel伺服器,如果IIS可用則嘗試運行在IIS上,並配置標準控制台記錄提供者。

public class Program{    public static void Main(string[] args)    {        BuildWebHost(args).Run();    }    public static IWebHost BuildWebHost(string[] args) =>        WebHost.CreateDefaultBuilder(args)            .UseStartup<Startup>()            .Build();}
回到目錄總結

ASP.NET Core 2.0提供的一系列新功能提供編寫應用程式的新方法,簡化了應用程式在生產環境的管理和維護。

Net Core 2.0生態1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.