ASP.NETCore2.0版本的有什么新特性-創(chuàng)新互聯(lián)

ASP.NET Core 2.0 版本的有什么新特性?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

在清苑等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,清苑網(wǎng)站建設(shè)費(fèi)用合理。

前言

ASP.NET Core 的變化和發(fā)展速度是飛快的,當(dāng)你發(fā)現(xiàn)你還沒有掌握 ASP.NET Core 1.0 的時(shí)候, 2.0 已經(jīng)快要發(fā)布了,目前 2.0 處于 Preview 1 版本,意味著功能已經(jīng)基本確定,還沒有學(xué)習(xí)過 ASP.NET Core 的同學(xué)可以直接從 2.0 開始學(xué)起,但是如果你已經(jīng)掌握了 1.0 的話,那么你只需要了解在 2.0 中增加和修改的一些功能即可。

每一次大版本的發(fā)布和升級,總會帶給開發(fā)人員一些驚喜和令人興奮的特性,有關(guān) ASP.NET Core 本次的 2.0 版本的新特性,主要集中在幾個(gè)部分上。

SDK 的變化

PS: 目前如果你想在VS中體驗(yàn) ASP.NET Core 2.0 全部特性的話,你需要 VS 2017.3 預(yù)覽版本。當(dāng)然你可以使用 VS Core 來快速了解。

.NET Core 2.0 Priview 的下載地址:
www.microsoft.com/net/core/preview

完成之后可以在 cmd 中使用以下命令查看版本。

ASP.NET Core 2.0 版本的有什么新特性

變化1:添加了如下圖箭頭所指新命令。

ASP.NET Core 2.0 版本的有什么新特性

dotnet new razor
dotnet new nugetconfig
dotnet new page
dotnet new viewimports
dotnet new viewstart

添加了這些新的cli命令。 其中 viewimports,viewstart 即為Razor視圖中的_xxx.cshtml那兩個(gè)文件.

變化2: dotnet new xxx 將會自動還原 NuGet 包,不需要你再次進(jìn)行 dotnet restore 命令了。

G:\Sample\ASPNETCore2 > dotnet new mvc

The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully.
This template contains technologies from parties other than Microsoft, see https://aka.ms/template-3pn for details.

Processing post-creation actions...
Running 'dotnet restore' on G:\Sample\ASPNETCore2\ASPNETCore2.csproj...
Restore succeeded.

*.csproj 項(xiàng)目文件

在 2.0 中,當(dāng)創(chuàng)建一個(gè) MVC 項(xiàng)目的時(shí)候,生成的 csporj 項(xiàng)目文件如下:

ASP.NET Core 2.0 版本的有什么新特性

其中,紅色箭頭部分為新增內(nèi)容,我們依次來看一下:

MvcRazorCompileOnPublish:

在 1.0 版本中,如果我們需要在發(fā)布的時(shí)候編譯 MVC 中的 Views 文件夾為DLL的話,需要引用
Microsoft.AspNetCore.Mvc.Razor.ViewCompilation 這個(gè) NuGet 包,而現(xiàn)在已經(jīng)不需要了,這個(gè)功能已經(jīng)默認(rèn)的集成在了SDK中,只需要在csporj添加配置即可,在發(fā)布的時(shí)候?qū)詣哟虬?Views 文件夾中的 *.cshtml 文件為 DLL 程序集。

PackageTargetFallback

這個(gè)配置項(xiàng)是用來配置當(dāng)前程序集支持的目標(biāo)框架。

UserSecretsId

這個(gè)是用來存儲程序中使用的機(jī)密,以前是存儲在 project.json 文件中,現(xiàn)在你可以在這里進(jìn)行配置了。

有關(guān) UserSecrets 的更多信息,可以查看我的這篇博客文章。

MVC 相關(guān)包

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final" />

在 Core MVC 2.0 中,所有MVC相關(guān)的NuGet 包都被集成到了這個(gè)Microsoft.AspNetCore.All包中,它是一個(gè)元數(shù)據(jù)包,包含了大量的東西,其中包括:Authorization, Authentication, Identity, CORS, Localization, Logging, Razor, Kestrel 等,除了這些它還附加了 EntityFramework, SqlServer, Sqlite 等包。

有些同學(xué)可能會覺得這樣會引用了很多項(xiàng)目中使用不到的程序集,導(dǎo)致發(fā)布后的程序變得很龐大,不過我要告訴你不必?fù)?dān)心,發(fā)布后的程序集不但不會變得很大,反而會小很多,因?yàn)?Microsoft 把所有的這些依賴全部都集成到了sdk中,也就是說當(dāng)你安裝sdk的之后,MVC相關(guān)的包就已經(jīng)安裝到了你的系統(tǒng)上。

這樣的好處是你不用擔(dān)心更新Nuget包或者刪除的時(shí)候,因?yàn)榇罅康陌姹静灰恢聠栴}導(dǎo)致隱藏的沖突問題,另外一個(gè)好處就是,這樣對于很多新手的話就很友好 2333,他們不需要知道他們什么情況下會從那個(gè)NuGet 包中獲取自己需要的信息。

現(xiàn)在,發(fā)布后的文件夾是如此簡潔: 大小 4.3M

ASP.NET Core 2.0 版本的有什么新特性

再貼個(gè)以前的 發(fā)布后的文件夾你們感受一下: 大小 16.5M

ASP.NET Core 2.0 版本的有什么新特性

有些同學(xué)可能好奇他們把那些引用的 MVC 包放到哪里了,默認(rèn)情況下他們位于這個(gè)目錄:

C:\Program Files\dotnet\store\x64\netcoreapp2.0

新的 Program.cs 和 Startup.cs

現(xiàn)在,當(dāng)創(chuàng)建一個(gè) ASP.NET Core 2.0 MVC 程序的時(shí)候,Program 和 Startup 已經(jīng)發(fā)生了變化,他們已經(jīng)變成了這樣:

Program.cs

public class Program
{
 public static void Main(string[] args)
 {
 BuildWebHost(args).Run();
 }

 public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup<Startup>()
 .Build();
}

Startup.cs

public class Startup
{
 public Startup(IConfiguration configuration)
 {
 Configuration = configuration;
 }
 
 public IConfiguration Configuration { get; }
 
 public void ConfigureServices(IServiceCollection services)
 {
 services.AddMvc();
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
 if (env.IsDevelopment())
 {
 app.UseDeveloperExceptionPage();
 }
 else
 {
 app.UseExceptionHandler("/Home/Error");
 }

 app.UseStaticFiles();

 app.UseMvc(routes =>
 {
 routes.MapRoute(
 name: "default",
 template: "{controller=Home}/{action=Index}/{id?}");
 });
 }
}

可以發(fā)現(xiàn),新的 Program.cs 中和 Startup.cs 中的內(nèi)容已經(jīng)變得很簡單了,少了很多比如 appsetting.json 文件的添加,日志中間件, Kertrel , HostingEnvironment 等,那么是怎么回事呢? 其他他們已經(jīng)被集成到了 WebHost.CreateDefaultBuilder 這個(gè)函數(shù)中,那么我們跟進(jìn)源碼來看一下內(nèi)部是怎么做的。

WebHost.CreateDefaultBuilder

下面是 WebHost.CreateDefaultBuilder 這個(gè)函數(shù)的源碼:

public static IWebHostBuilder CreateDefaultBuilder(string[] args)
{
 var builder = new WebHostBuilder()
 .UseKestrel()
 .UseContentRoot(Directory.GetCurrentDirectory())
 .ConfigureAppConfiguration((hostingContext, config) =>
 {
 var env = hostingContext.HostingEnvironment;

 config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);

 if (env.IsDevelopment())
 {
 var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
 if (appAssembly != null)
 {
  config.AddUserSecrets(appAssembly, optional: true);
 }
 }

 config.AddEnvironmentVariables();

 if (args != null)
 {
 config.AddCommandLine(args);
 }
 })
 .ConfigureLogging((hostingContext, logging) =>
 {
 logging.UseConfiguration(hostingContext.Configuration.GetSection("Logging"));
 logging.AddConsole();
 logging.AddDebug();
 })
 .UseIISIntegration()
 .UseDefaultServiceProvider((context, options) =>
 {
 options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
 })
 .ConfigureServices(services =>
 {
 services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
 });

 return builder;
}

可看到,新的方式已經(jīng)隱藏了很多細(xì)節(jié),幫助我們完成了大部分的配置工作。但是你知道怎么樣來自定義這些中間件或者配置也是必要的技能之一。

appsettings.json 的變化

在 appsettings.json 中,我們可以定義 Kestrel 相關(guān)的配置,應(yīng)用程序會在啟動的時(shí)候使用該配置進(jìn)行Kerstrel的啟動。

{
 "Kestrel": {
 "Endpoints": {
 "Localhost": {
 "Address": "127.0.0.1",
 "Port": "9000"
 },
 "LocalhostHttps": {
 "Address": "127.0.0.1",
 "Port": "9001",
 "Certificate": "Https"
 }
 }
 },
 "Certificate": {
 "HTTPS": {
 "Source": "Store",
 "StoreLocation": "LocalMachine",
 "StoreName": "MyName",
 "Subject": "CN=localhost",
 "AllowInvalid": true
 }
 },
 "Logging": {
 "IncludeScopes": false,
 "LogLevel": {
 "Default": "Warning"
 }
 }
}

以上配置內(nèi)容配置了 Kertrel 啟動的時(shí)候使用的本地地址和端口,以及在生產(chǎn)環(huán)境需要使用的 HTTPS 的配置項(xiàng),通常情況下關(guān)于 HTTPS 的節(jié)點(diǎn)配置部分應(yīng)該位于 appsettings.Production.json 文件中。

現(xiàn)在,dotnet run在啟動的時(shí)候?qū)⑼瑫r(shí)監(jiān)聽 9000, 和 9001 端口。

日志的變化

在 ASP.NET Core 2.0 中關(guān)于日志的變化是非常令人欣慰的,因?yàn)樗F(xiàn)在不是作為MVC中間件配置的一部分了,而是 Host 的一部分,這句話好像有點(diǎn)別扭,囧~。 這意味著你可以記錄到更加底層產(chǎn)生的一些錯(cuò)誤信息了。

現(xiàn)在你可以這樣來擴(kuò)展日志配置。

 public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup<Startup>()
 .ConfigureLogging(factory=>{你的配置})
 .Build();

全新的 Razor Pages

ASP.NET Core 2.0 引入的另外一個(gè)令人興奮的特性就是 Razor Pages。提供了另外一種方式可以讓你在做Web 頁面開發(fā)的時(shí)候更加的沉浸式編程,或者叫 page-focused 。額...它有點(diǎn)像以前 Web Form Page,它隸屬于 MVC 框架的一部分,但是他們沒有 Controller。

你可以通過dotnet new razor命令來新建一個(gè) Razor Pages 類型的應(yīng)用程序。

Razor Pages 的 cshtml 頁面代碼可能看起來是這樣的:

@page

@{
 var message = "Hello, World!";
}

<html>
<body>
 <p>@message</p>
</body>
</html>

Razor Pages 的頁面必須具有 @page 標(biāo)記。他們可能還會有一個(gè) *.cshtml.cs 的 class 文件,對應(yīng)的頁面相關(guān)的一些代碼,是不是很像 Web Form 呢?

有同學(xué)可能會問了,沒有 Controller 是怎么路由的呢? 實(shí)際上,他們是通過文件夾物理路徑的方式進(jìn)行導(dǎo)航,比如:

ASP.NET Core 2.0 版本的有什么新特性

有關(guān) Razor Pages的更多信息可以看這里:
docs.microsoft.com/en-us/aspnet/core/razor-pages

總結(jié)

可以看到,在 ASP.NET Core 2.0 中,給我們的開發(fā)過程帶來了很多便利和幫助,他們包括 Program 等的改進(jìn),包括 MVC 相關(guān) NuGet 包的集成,包括appsetting.json的服務(wù)器配置,以及令人驚訝的Razor Page,是不是已經(jīng)迫不及待的期待正式版的發(fā)布呢?如果你期待的話,點(diǎn)個(gè)【推薦】讓我知道吧~ 2333..

如果你對 ASP.NET Core 有興趣的話可以關(guān)注我,我會定期的在博客分享我的學(xué)習(xí)心得。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁標(biāo)題:ASP.NETCore2.0版本的有什么新特性-創(chuàng)新互聯(lián)
鏈接分享:http://www.muchs.cn/article24/dhcsce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、響應(yīng)式網(wǎng)站、建站公司、網(wǎng)站導(dǎo)航品牌網(wǎng)站設(shè)計(jì)、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)