DNX概述

1. 什麼是.NET執行環境 ?web

.NET Execution Environment(DNX) 是一個SDK 和運行時環境,它包含全部的你須要建立和運行.net應用程序的組件。它提供一個主機進程,CLR宿主邏輯和管理入口點。DNX是爲執行跨平臺的asp.net的Web應用程序而建立的。可是它也能執行其它類型的.net應用程序,如控制檯應用程序。json

2. 爲何建立DNX ?安全

DNX提供一個在不一樣平臺開發和執行的環境。你能夠用DNX在一種平臺上面開發,而後部署到另外一個平臺上面去。併發

DNX簡化了開發跨平臺的應用程序, 它負責的給CLR宿主,處理依賴和啓動你的應用程序。你能夠經過輕量級的json配置文件定義你的應用程序,創建你的工具併發布它。框架

包的管理徹底地改變了如今應用的開發,DNX使其很容易地建立和應用包。DNX提供工具安裝、建立、管理NuGet包。DNX工程簡化了利用交叉編譯爲不一樣的構架生成不一樣的NuGet包。你能夠直接引用NuGet包和還有依賴。你也能夠建立和安全開發工具asp.net

DNX使其很容易與開源的工程一塊兒工做,經過DNX你能夠很容易地用源代碼替換掉一個已經存在的依賴。讓DNX在運行時編譯,而後你能夠Debug源代碼和修改它。ide

3. 工程函數

一個DNX的工程是一個含有project.json的文件的目錄。文件夾的目錄名就是工程的名字。你能夠用DNX工程建立NuGet包。project.json文件定義了你的包的元數據,你的工具的依賴文件和哪些框架你須要使用的:工具

{post

  "version": "1.0.0-*",

  "description": "ClassLibrary1 Class Library",

   "authors" : ["daroth"],

   "tags": [ "" ],

   "projectUrl": "",

   "licenseUrl": "",

 

   "frameworks":{

       "net451": {},

       "dotnet5.4":{

            "dependencies":{

                  "Microsoft.CSharp": "4.0.1-beta-23516",

                   "System.Collections": "4.0.11-beta-23516",

                   "System.Linq": "4.0.1-beta-23516",

                   "System.Runtime":"4.0.21-beta-23516",

             }

         }

    }

  }

}

在"frameworks"屬性下面你能夠聲明你須要哪一個構架來構建你的應用。 DNX能夠交叉編譯每個構架建立相應的lib目錄。

你能夠利用 .NET Development Utility(DNU)來建立,打包和發佈DNX工程, 生成二進制文件。打包能夠生成NuGet package,而後上傳到package feed. 發佈是把全部相關的組件打包到一個獨立的文件當中以便發佈當前應用。

4. 依賴

依賴在DNX由名字和版本號組成。版本號應該遵循語義版本(主版號-次版本號-補丁). 典型的依賴參考安裝的NuGet包或者另外一個DNX工程。工程的引用在當前目錄引用或者用global.json在解決方案一級:

{

  "projects": ["src", "test"],

  "sdk": {

      "version":"1.0.0-rc1-final"

   }

}

global.json文件也定義了最小的DNX版本以用來建立當前的工程。

依賴是能夠傳遞的,你能夠只在最頂級申明你的依賴。DNX能夠下載整個依賴圖用安裝的NuGet包。工程依賴生成在運行時在生成工程的時候,這樣可使你靈活地用二進制工做或者源文件部署你的DNX應用。

5. 包和摘要

對包的引用你首先要安裝你的包,你能夠用DNU去去安裝下載新的包到目前的或者從新恢復全部的依賴。下面的命令是下載和安裝全部的在project.json裏申明的全部包:

dnu restore

包被重置利用配置的包文件。能夠配置包的摘要用NuGet.config

6. 命令

一個命令是一個命名的.net運行的入口。你能夠在project.json文件中定義命令:

"commands":{

  "web":"Microsoft.AspNet.Server.Kestrel",

  "ef":"EntityFramework.Commands"

},

你能夠像下面這樣來用DNX執行你的命令:

dnx web

命令能夠作爲NuGet包的形式被建立和發佈, 你能夠用DNU去安裝全局的命令:

dnu commands install MyCommand

7. 應用宿主

DNX應用程序宿主是被DNX第一個調用的管理入口,負責處理依賴,解釋project.json, 提供其它的服務和調用應用程序的入口。

另外,你能夠用直接DNX調用你的應用程序入口。用DNX而不用DNX 應用宿主並非很常見。

DNX應用宿主提供一系統的應用程序依賴(如IServiceProvider, IApplicationEnvironment和ILoggerFactory).應用程序宿主服務能夠在你的主入口中被注入到構造函數當中。

8. 編譯模塊

編譯模塊是一個能夠擴展的點,可讓你參與 到DNX編譯的過程中。你能夠經過實現ICompileModule接口來實現你本身的編譯模塊,而後放到compiler/preprocess或者compiler/postprocess當中去。

9. DNX版本管理

你能夠安裝不一樣的DNX版本到你機器上去。你能夠用.NET Version Manager(DNVM)來管理不一樣的DNX版本。DNVM可讓你在你的機器上面列出不一樣的DNX版本, 安裝不一樣的版本轉換當前激活的版本。

相關文章
相關標籤/搜索