最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Amazing ASP.NET Core 2.0

 更新時(shí)間:2017年05月25日 11:39:25   作者:Savorboard  
Amazing ASP.NET Core 2.0,這篇文章主要介紹了ASP.NET Core 2.0 版本的新特性,感興趣的小伙伴們可以參考一下

前言

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ā)布和升級(jí),總會(huì)帶給開發(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 的下載地址:
https://www.microsoft.com/net/core/preview

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

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

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 將會(huì)自動(dòng)還原 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)目文件如下:

其中,紅色箭頭部分為新增內(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ū)?huì)自動(dòng)打包 Views 文件夾中的 *.cshtml 文件為 DLL 程序集。

PackageTargetFallback

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

UserSecretsId

這個(gè)是用來存儲(chǔ)程序中使用的機(jī)密,以前是存儲(chǔ)在 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é)可能會(huì)覺得這樣會(huì)引用了很多項(xiàng)目中使用不到的程序集,導(dǎo)致發(fā)布后的程序變得很龐大,不過我要告訴你不必?fù)?dān)心,發(fā)布后的程序集不但不會(huì)變得很大,反而會(huì)小很多,因?yàn)?Microsoft 把所有的這些依賴全部都集成到了sdk中,也就是說當(dāng)你安裝sdk的之后,MVC相關(guān)的包就已經(jīng)安裝到了你的系統(tǒng)上。

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

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

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

有些同學(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)變得很簡(jiǎn)單了,少了很多比如 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)用程序會(huì)在啟動(dòng)的時(shí)候使用該配置進(jìn)行Kerstrel的啟動(dòng)。

{
 "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 啟動(dòng)的時(shí)候使用的本地地址和端口,以及在生產(chǎn)環(huán)境需要使用的 HTTPS 的配置項(xiàng),通常情況下關(guān)于 HTTPS 的節(jié)點(diǎn)配置部分應(yīng)該位于 appsettings.Production.json 文件中。

現(xiàn)在,dotnet run在啟動(dòng)的時(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)記。他們可能還會(huì)有一個(gè) *.cshtml.cs 的 class 文件,對(duì)應(yīng)的頁面相關(guān)的一些代碼,是不是很像 Web Form 呢?

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

有關(guān) Razor Pages的更多信息可以看這里:
https://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..

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .net連接oracle的3種實(shí)現(xiàn)方法

    .net連接oracle的3種實(shí)現(xiàn)方法

    這篇文章介紹了.net連接oracle的3種實(shí)現(xiàn)方法,有需要的朋友可以才可以一下
    2013-07-07
  • Visual Studio 2017 IDE安裝使用圖文教程

    Visual Studio 2017 IDE安裝使用圖文教程

    這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017 IDE安裝使用圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • xUnit 編寫 ASP.NET Core 單元測(cè)試的方法

    xUnit 編寫 ASP.NET Core 單元測(cè)試的方法

    這篇文章主要介紹了xUnit 編寫 ASP.NET Core 單元測(cè)試的方法,文中代碼非常詳細(xì),幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    這篇文章主要給大家介紹了關(guān)于在ASP.NET Core自定義中間件中如何讀取Request.Body與Response.Body的內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • C# WindowsMediaPlayer 的一些用法實(shí)例

    C# WindowsMediaPlayer 的一些用法實(shí)例

    這篇文章介紹了C# WindowsMediaPlayer 的一些用法實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • Asp.Net HttpHandler 妙用

    Asp.Net HttpHandler 妙用

    很多時(shí)候,我們新建一個(gè)xxx.aspx頁和xxx.aspx.cs文件,不過是為了實(shí)現(xiàn)一個(gè)很簡(jiǎn)單的功能
    2009-04-04
  • asp.net中控制反轉(zhuǎn)的理解(文字+代碼)

    asp.net中控制反轉(zhuǎn)的理解(文字+代碼)

    控制反轉(zhuǎn),從字面意思來看, 就是控制權(quán)由被動(dòng)變主動(dòng)又變?yōu)楸粍?dòng),或被動(dòng)變主動(dòng)又變?yōu)楸粍?dòng)。從這個(gè)角度來說,IOC就變得非常容易理解
    2014-09-09
  • 如何在ASP.NET Core應(yīng)用程序運(yùn)行Vue并且部署在IIS上詳解

    如何在ASP.NET Core應(yīng)用程序運(yùn)行Vue并且部署在IIS上詳解

    這篇文章主要給大家介紹了關(guān)于如何運(yùn)行Vue在ASP.NET Core應(yīng)用程序并且部署在IIS上的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • ASP.NET Core實(shí)現(xiàn)多文件上傳

    ASP.NET Core實(shí)現(xiàn)多文件上傳

    這篇文章介紹了ASP.NET Core實(shí)現(xiàn)多文件上傳的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • WPF實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果

    WPF實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果

    這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

徐水县| 贞丰县| 黑龙江省| 邹城市| 苍溪县| 昂仁县| 阳高县| 全州县| 抚宁县| 道真| 三都| 油尖旺区| 哈尔滨市| 岳西县| 连南| 深圳市| 商洛市| 运城市| 五指山市| 蒙山县| 石台县| 德昌县| 蕲春县| 通州市| 广灵县| 象州县| 陵川县| 通州市| 两当县| 合作市| 梁河县| 祁连县| 江城| 民县| 罗田县| 泰来县| 无为县| 仙桃市| 荥经县| 阜平县| 临安市|