婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解讀ASP.NET 5 & MVC6系列教程(4):核心技術與環境配置

解讀ASP.NET 5 & MVC6系列教程(4):核心技術與環境配置

熱門標簽:地圖標注軟件免費下載 網絡電話外呼系統上海 百應電話機器人外呼系統 臨沂智能電話機器人加盟 聯通官網400電話辦理 外呼電話機器人成本 西寧呼叫中心外呼系統線路商 400電話辦理怎么樣 蘇州如何辦理400電話

asp.net 5是下一代的asp.net,該版本進行了全部重寫以適用于跨平臺,新新版本中,微軟引入了如下工具與命令:DNVM、DNX、DNU。

DNVM(.NET Version Manager):由于要實現跨平臺的目錄,微軟提供了DNVM功能,DNVM是ASP.NET最底層的內容,他是一組Powershell腳本,用于啟動指定版本的ASP.NET運行環境,并且可以在同一臺機器的同一時間點上通過使用Nuget工具來管理各種版本的ASP.NET運行環境(DNX),以及進行相應的升級操作。

DNX(.NET Execution Environment):DNX是ASP.NET程序的運行環境,用于啟動并運行ASP.NET程序。該運行環境包括了編譯系統、SDK工具集、Native CLR宿主環境。可以使用DNVM管理各種版本的DNX,如dnvm list命令可以列出所有可用的DNX環境,而dnvm install 0.1-alpha-build-0446則可以將指定版本的DNX安裝到.dnx文件夾,你可以在%USERPROFILE%\.dnx\runtimes 目錄下找到已安裝所有版本的DNX。不同的操作系統有不同的DNX版本。

dnx.exe:dnx.exe是用于啟動自宿主環境(Self-Hosting)的命令行工具,在使用命令行代碼進行自宿主環境啟動程序時,dnx負責查找并調用CLR Native Host,dnx命令是整個運行環境的入口點,你可以使用dnx run來啟動程序。

dnu(DNX Utility):是一個命令行的包管理器,包含在DNX內,所以只要安裝了DNX,就可以使用dnu命令, 其可以用于恢復程序包、安裝程序包、部署程序包等等,比如把project.json里自定義的程序集自動下載下來進行使用。

DNX架構及運行原理

DNX是ASP.NET程序運行的核心,其遵循如下兩個準則:

DNX應該是自包含的,DNX在解析完應用程序依賴樹以后才能知道要使用哪個Core CLR包,所以在得到解析樹之前,DNX是無法加載任何CLR的,但Roslyn編譯器除外。依賴注入(Dependency Injection,簡稱DI)貫穿著整個系統棧,DI是DNX的一個核心部分,所有DNX上的類庫都構建在DI之上。

DNX執行環境的分層架構如下:

Layer 0:Native Process

該層的功能非常簡單,主要就是用于查找并調用Layer 1里的CLR Native Host,并將系統相關的參數傳遞給native host,以便后續使用。目前Windows下使用DNX.exe來處理這個事情,而IIS也提供了一個中介(網站bin目錄下提供一個AspNet.Loader.dll)可以將請求轉發給Native Host;而Linux和Mac則通過其相應版本的dnx來支持這項功能。

DNX用法:

dnx.exe --lib {paths} --appbase {path} [ProgramName]

--lib {paths}:程序集dll的保存地址(一般是引用的第三方程序集和項目預編譯程序集),該地址是Layer 2層的托管代碼入口點可以加載程序集的地方。

--appbase {path}:程序保存的目錄,默認為%CD%。

[ProgramName]:程序名稱,該程序所在的程序集(或者是含有Programe::Main的dll)保存在--lib 路徑下,默認值是appbase\project.json里的name。大多數情況下,該名稱都是包含著加載鏈的程序宿主(Microsoft.Net.ApplicationHost)。但是,如果你的程序包含了入口點(Main方法),并被編譯到--lib目錄下的話,你就可以使用該程序集的名稱作為[ProgramName],這種方式將完全忽略加載鏈并直接啟動你的程序。

Layer 1 : CLR Native Host

這一層的內容依賴于你所選擇呢CLR版本,該層有如下兩個職責:

啟動CLR,啟動哪個CLR取決于你選擇的CLR版本。如果是Core CLR,該層會加載coreclr.dll,配置并啟動運行環境,然后創建應用程序域(AppDomain),以便運行所有的托管代碼。調用托管代碼的入口點(Layer 2),一旦Native Host的入口點返回了該線程,就會把CLR的線程清理干凈并關閉,比如,卸載應用程序域(AppDomain)并停止運行環境。

Layer 2:Managed Entry Point

Layer 2層(托管代碼入口)是編寫托管代碼的第一層,其職責如下:

創建LoaderContainer(其包含需要的ILoaders),ILoader負責根據程序集的名稱來加載程序集。CLR需要一個程序集的話,LoaderContainer就會使用其ILoader來解析所需要的程序集。從--lib的路徑目錄下,用根ILoader來加載程序集,并解析其依賴。調用程序的主入口點。

Layer 3:Application host/Application

如果開發人員將整個程序編譯成程序集放在libpath目錄下,那該層就是你的應用程序了。使用的時候,將含有程序入口點的程序集名稱作為[ProgramName]的參數傳入即可,Layer 2層會直接調用該程序集。

不過,一般其它情況下,都會使用一個應用程序宿主(Application host)來解析程序的依賴內容并啟動運行程序。Microsoft.Net.ApplicationHost是運行環境提供的應用程序宿主,并擁有如下職責:

解析project.json里定義的各種依賴程序集。將一個ILoader添加到LoaderContainer,以便從各種地方(如源代碼、NuGet、Roslyn等)加載相應的程序集。調用程序集的入口點,將其作為下一個參數,傳遞給DNX.exe。

Layer 4:Application

這一層,就是開發人員開發的程序,其運行在應用程序宿主之上。

環境配置:

要對ASP.NET 5程序的運行環境DNX進行配置,首先需要安裝并配置DNVM,不同的操作系統安裝DNVM的時候不太一樣,我們在這里大概講解一下。

Windows安裝命令

//需要安裝powershell 3.0
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.ps1'))"

Linux

curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/dnvminstall.sh | sh  source ~/.dnx/dnvm/dnvm.sh

Mac OS X
在Mac上,首先要安裝Mac系統本身的包管理器Homebrew(http://brew.sh),并使用brew tap aspnet/k命令將指定到ASP.NET5相關的git存儲庫,比如執行如下命令:

brew install dnvm

該命令將會自動從ttps://www.nuget.org/api/v2上下載最新的DNX,下載以后,如果你的系統不識別dnvm的話,你還需要再執行一下如下語句:

source dnvm.sh

上述DNVM安裝以后,系統會將dnvm文件復制到C:\Program Files\Microsoft DNX\Dnvm目錄,并將C:\Program Files\Microsoft DNX\Dnvm目錄添加到環境變量中,以便全局都可以使用。注意:這里只是安裝了DNVM,并沒有安裝任何版本的DNX,要安裝DNX的話,可以通過運行dnvm或dnvm help來查找相關的命令,具體命令如下:

dnvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy ADDRESS>]

1.從feed源安裝最新版的DNX
2.為已安裝的DNX設置一個默認(default)別名
3.將DNX bin添加的用戶PATH環境變量中
4.-g|-global 在全局內進行安裝(其它用戶也可以使用)
5.-f|-force 強制更新成最新版(即便最新版已經安裝過了)
6.-proxy 訪問遠程服務器的時候使用特定的地址作為代理

dnvm install semver>|alias>|nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-alias alias>] [-g|-global] [-f|-force]

1.| 從feed源安裝指定的DNX
2.從本地文件系統安裝指定的DNX
3.latest 從feed源安裝最新版的DNX
4.將DNX bin添加到當前命令行的path環境變量中
5.-p|-persistent 將DNX bin添加到系統PATH環境變量中
6.-a|-alias 對指定安裝的DNX設置別名
7.-g|-global 在全局內進行安裝
8.-f|-force 強制安裝指定的DNX(即便該版本已經安裝過了)

dnvm use semver>|alias>|none [-x86][-x64] [-svr50][-svrc50] [-p|-persistent] [-g|-global]

1.| 將DNX bin添加到當前命令行的path環境變量中
2.none 將DNX bin從當前命令行的path環境變量中刪除
3.-p|-persistent 將DNX bin添加到系統PATH環境變量中
4.-g|-global 組合使用-p將用戶PATH修改成系統PATH

dnvm list //列出所有已安裝的DNX版本
dnvm alias //列出所有定義了別名的DNX版本
dnvm alias alias> // 顯示定義了別名的DNX名稱
dnvm alias alias> semver> [-x86][-x64] [-svr50][-svrc50] //給指定的DNX版本設置別名

管理程序集的dnu命令和feed源配置

通過dnu命令進行包管理的時候,通常使用如下命令:

dnu restore:查詢程序的所有依賴包,并將其全部下載到packages目錄,該命令會下載整個依賴包以及這些依賴包所依賴的其它依賴包。
dun install package id>:該install命令用于下載指定的程序包并添加到程序中。
dun publish:該命令會將你的程序打包到一個可以運行的自包含目錄中。其會創建如下目錄結構:

output/
output/packages
outpot/appName
output/commandName.cmd

1.packages目錄包含所有應用程序需要的程序包。
2.appName目錄包含所有應用程序的代碼,如果引用了其它項目,則在引用的其它項目也會創建各自項目的同級目錄,即生成的目錄會和AppName同級。
3.publish命令,會將project.json中的commands節點中的各種命令,分別生成響應的命令行文件,如commands里的web命令,我們就可以通過dnx web(格式:dnx command>)開運行它。

由于dnu在內部使用了Nuget命令,進行程序包的管理,所以使用的時候要正確配置Nuget的feed源,目前ASP.NET 5相關的包都在myget feed上,所以我們需要添加這個feed才能正常運行。這些配置信息在Windows下的%AppData%\NuGet\NuGet.config(或者*nix下Mono使用的~/.config/NuGet/NuGet.config)文件中進行管理。示例如下:

?xml version="1.0" encoding="utf-8"?>
configuration>
 packageSources>
 add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2/" />
 add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 /packageSources>
 disabledPackageSources />
 activePackageSource>
 add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 /activePackageSource>
/configuration>

在VS2015下,則可以直接通過Tools--> Options--> Nuget Package Manager--> Package Sources來設置,示例如下圖:

另外需要注意一下,上述feed的地址是asp.net5的每日構建版本,如果你想使用穩定的里程碑版(如1.0.0_alpha4),則需要使用如下地址https://www.myget.org/F/aspnetmaster/api/v2/

Web Server支持

微軟在實現DNX的時候提供了幾種Web服務器支持,具體分別如下:

Microsoft.AspNet.Loader.IIS (Helios)

該服務器用于在IIS上加載ASP.NET5程序,以便和IIS進程集成,同時繞過了System.Web從而帶來性能上的提升,可以支持Windows認證、靜態文件訪問等功能。其原理是將IIS與NDX之間做一個橋接。

Microsoft.AspNet.Server.WebListener (WebListener)

該服務器通過Microsoft.AspNet.Hosting在IIS之外加載程序、服務、work role等,它直接運行在Http.Sys核心驅動之上,僅消費少許性能,從中可以受益于端口共享,Windows認證等功能。

Microsoft.AspNet.Server.Kestrel (Kestrel)

該服務器通過Microsoft.AspNet.Server.Kestrel在IIS之外加載運行,其設計被用于跨平臺的Web服務(Windows、Mac、Linux等等)。

參考內容

https://github.com/aspnet/Home/wiki/DNX-structure
https://github.com/aspnet/Home/wiki/Command-Line
https://github.com/aspnet/Home/wiki/Version-Manager
https://github.com/aspnet/Home/wiki/Package-Manager

您可能感興趣的文章:
  • 解讀ASP.NET 5 & MVC6系列教程(5):Configuration配置信息管理
  • 解讀ASP.NET 5 & MVC6系列教程(6):Middleware詳解
  • 解讀ASP.NET 5 & MVC6系列教程(7):依賴注入
  • 解讀ASP.NET 5 & MVC6系列教程(8):Session與Caching
  • 解讀ASP.NET 5 & MVC6系列教程(9):日志框架
  • 解讀ASP.NET 5 & MVC6系列教程(10):Controller與Action
  • 解讀ASP.NET 5 & MVC6系列教程(11):Routing路由
  • 解讀ASP.NET 5 & MVC6系列教程(12):基于Lamda表達式的強類型Routing實現
  • 解讀ASP.NET 5 & MVC6系列教程(13):TagHelper
  • 解讀ASP.NET 5 & MVC6系列教程(14):View Component

標簽:海西 臨夏 平涼 清遠 慶陽 中衛 甘肅 聊城

巨人網絡通訊聲明:本文標題《解讀ASP.NET 5 & MVC6系列教程(4):核心技術與環境配置》,本文關鍵詞  解讀,ASP.NET,amp,MVC6,系列,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解讀ASP.NET 5 & MVC6系列教程(4):核心技術與環境配置》相關的同類信息!
  • 本頁收集關于解讀ASP.NET 5 & MVC6系列教程(4):核心技術與環境配置的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产视频在线观看一区二区三区| 久久精品亚洲麻豆av一区二区| 久久影视一区二区| 五月婷婷综合激情| 久久女同精品一区二区| 免费看欧美女人艹b| 国产日韩在线不卡| 欧美亚洲动漫制服丝袜| 亚洲国产精品一区二区久久恐怖片 | 国产精品国产三级国产aⅴ中文| 国产成人午夜高潮毛片| 亚洲国产精品久久人人爱| 久久99精品久久久| 亚洲成av人片在线| 综合激情成人伊人| 欧美精品一区二区久久久| 欧美日韩成人一区二区| 99国产一区二区三精品乱码| 久久黄色级2电影| 精品国产成人在线影院| 欧美精品色综合| 欧美欧美午夜aⅴ在线观看| 丁香婷婷综合网| 亚洲精品少妇30p| 国产亚洲精品免费| 久久精品亚洲精品国产欧美kt∨| 在线综合视频播放| 欧美大黄免费观看| 欧美成人精品1314www| 91网站视频在线观看| 6080亚洲精品一区二区| 美女诱惑一区二区| 欧美日韩国产小视频| 亚洲国产精品精华液ab| 久久影院电视剧免费观看| 久久久91精品国产一区二区三区| 日韩免费看网站| 天天色图综合网| 盗摄精品av一区二区三区| 777a∨成人精品桃花网| 久久久久久久久久久久久女国产乱 | 一二三四区精品视频| 4hu四虎永久在线影院成人| 99久久99久久精品免费观看 | 麻豆国产欧美一区二区三区| 日韩精品专区在线影院重磅| 国产91精品入口| 不卡的看片网站| 国产一区二区在线视频| 亚洲电影一区二区| 日日摸夜夜添夜夜添国产精品| 日韩毛片高清在线播放| 久久丝袜美腿综合| 美女视频黄 久久| 福利一区二区在线观看| 精品亚洲国产成人av制服丝袜| 一二三四社区欧美黄| 日韩精品电影在线观看| 洋洋av久久久久久久一区| 国产精品国产自产拍高清av王其| 国产精品美女视频| 日韩一级二级三级| 欧美一级片在线看| 99久久免费视频.com| a在线欧美一区| 国产精品77777竹菊影视小说| 国模冰冰炮一区二区| 六月丁香婷婷色狠狠久久| 性欧美疯狂xxxxbbbb| 久久精品人人做人人综合| 亚洲va韩国va欧美va精品| 亚洲制服丝袜在线| 一个色在线综合| 免费精品视频在线| 青青草国产精品亚洲专区无| 性感美女久久精品| 久久婷婷成人综合色| 亚洲不卡在线观看| 日韩专区一卡二卡| 午夜影视日本亚洲欧洲精品| 国产成人99久久亚洲综合精品| 粉嫩13p一区二区三区| 成人做爰69片免费看网站| 欧美tk—视频vk| 国产日韩影视精品| 亚洲色图.com| 国产日韩欧美亚洲| 偷拍日韩校园综合在线| 亚洲成a人片在线观看中文| 老司机精品视频在线| 国内精品久久久久影院色| 欧美视频日韩视频| 日韩视频免费观看高清完整版| 欧美α欧美αv大片| 蜜臀久久99精品久久久久久9| 国产福利一区二区| 91在线看国产| 国产精品久久看| 亚洲va天堂va国产va久| 激情欧美一区二区三区在线观看| 欧美丝袜丝nylons| 国产欧美精品区一区二区三区 | 久久亚洲一区二区三区四区| 日本美女视频一区二区| 欧美精品一区二区蜜臀亚洲| 国产午夜精品一区二区| 一区二区在线观看av| 91国内精品野花午夜精品| 中文字幕视频一区二区三区久| www.欧美日韩国产在线| 国产精品久久久久桃色tv| 93久久精品日日躁夜夜躁欧美| 亚洲天堂av一区| 欧洲亚洲国产日韩| 六月婷婷色综合| 久久久久高清精品| 9色porny自拍视频一区二区| 亚洲女人****多毛耸耸8| 91国模大尺度私拍在线视频| 日韩专区中文字幕一区二区| 日韩精品影音先锋| 国产成人免费高清| 国产精品婷婷午夜在线观看| 91精彩视频在线观看| 麻豆久久久久久久| 国产欧美一区二区精品婷婷| 欧美性感一区二区三区| 美腿丝袜在线亚洲一区| 国产精品你懂的| 欧美日高清视频| 国产成人免费视| 亚洲精品乱码久久久久久黑人 | www.日韩av| 一区二区三区.www| 欧美xxxx在线观看| 在线视频观看一区| 日本视频一区二区三区| 欧美国产欧美综合| 欧美久久一区二区| 成人精品亚洲人成在线| 日韩经典中文字幕一区| 国产精品久久久久久户外露出| 日本乱码高清不卡字幕| 国产在线日韩欧美| 国产精品国产三级国产有无不卡| 91精品免费在线观看| 一本色道a无线码一区v| 国产不卡在线一区| 麻豆久久一区二区| 一区二区免费在线| 亚洲国产精品成人综合色在线婷婷 | 久久久久久99精品| 欧美男同性恋视频网站| 97久久精品人人爽人人爽蜜臀| 久久精品噜噜噜成人av农村| 一区二区三区高清不卡| 国产精品美女久久久久av爽李琼| 日韩亚洲欧美成人一区| 在线观看日韩高清av| 成人av中文字幕| 久久精品国产成人一区二区三区| 亚洲午夜一二三区视频| 亚洲欧美日韩国产综合| 国产欧美日韩中文久久| 久久久亚洲高清| 欧美一区二区三区啪啪| 欧美日韩中文国产| 色妞www精品视频| 成人网男人的天堂| 国产一区二区不卡| 国产一区二区三区四| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲高清不卡在线观看| 亚洲欧美日韩国产一区二区三区 | 国产视频911| 精品91自产拍在线观看一区| 日韩亚洲欧美综合| 日韩欧美中文字幕精品| 欧美探花视频资源| 欧美日韩精品免费| 欧美绝品在线观看成人午夜影视| 日本久久一区二区三区| 在线中文字幕一区| 精品视频在线免费| 欧美男人的天堂一二区| 欧美精品日韩一本| 欧美一卡二卡在线| 欧美mv和日韩mv的网站| 久久只精品国产| 成人欧美一区二区三区| 国产精品久久久久四虎| 亚洲免费av高清| 午夜精品久久久久久久99水蜜桃| 五月婷婷综合激情| 麻豆国产欧美日韩综合精品二区 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 精品播放一区二区| 欧美国产精品一区二区| 亚洲精品免费一二三区| 日韩激情视频在线观看|