【Net Core】DNX概述
1. 什么是.NET执行环境 ?
.NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件。它提供一个主机进程,CLR宿主逻辑和管理入口点。DNX是为执行跨平台的asp.net的Web应用程序而创建的。但是它也能执行其它类型的.net应用程序,如控制台应用程序。
2. 为什么创建DNX ?
DNX提供一个在不同平台开发和执行的环境。你可以用DNX在一种平台上面开发,然后部署到另一个平台上面去。
DNX简化了开发跨平台的应用程序, 它负责的给CLR宿主,处理依赖和启动你的应用程序。你可以通过轻量级的json配置文件定义你的应用程序,建立你的工具并发布它。
包的管理完全地改变了现在应用的开发,DNX使其很容易地创建和应用包。DNX提供工具安装、创建、管理NuGet包。DNX工程简化了利用交叉编译为不同的构架生成不同的NuGet包。你可以直接引用NuGet包和还有依赖。你也可以创建和安全开发工具
DNX使其很容易与开源的工程一起工作,通过DNX你可以很容易地用源代码替换掉一个已经存在的依赖。让DNX在运行时编译,然后你可以Debug源代码和修改它。
3. 工程
一个DNX的工程是一个含有project.json的文件的目录。文件夹的目录名就是工程的名字。你可以用DNX工程创建NuGet包。project.json文件定义了你的包的元数据,你的工具的依赖文件和哪些框架你需要使用的:
{
"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版本, 安装不同的版本转换当前激活的版本。
【Net Core】DNX概述的更多相关文章
- 《驾驭Core Data》 第一章 Core Data概述
<驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...
- ios开发:Core Data概述
Core Data 概述 2005年的四月份,Apple 发布了 OS X 10.4,在这个版本中 Core Data 框架发布了.Core Data本身既不是数据库也不是数据库访问框架.相反,Cor ...
- ASP.NET Core MVC 概述
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-2.2 ASP.NET Core MVC 概述 20 ...
- ASP.NET Core模块概述
原文地址:ASP.NET Core Module overview By Tom Dykstra, Rick Strahl, and Chris Ross ASP.NET Core模块(ANCM)让你 ...
- Core Bluetooth 概述 【官方文档翻译】
Core Bluetooth 框架在Mac和iOS平台,为配备了低功耗蓝牙无线技术的设备提供了进行通信所需要的类.例如,您的应用程序可以发现,探索,和低功耗的外围设备进行交互,如心率监视器.数字温控器 ...
- Core Data 概述
Core Data是一个模型层的技术.Core Data帮助你建立代表程序状态的模型层.Core Data也是一种持久化技术,它能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core Data不 ...
- Core Text概述
本文是我翻译的苹果官方文档<Core Text Overview> Core Text框架是高级的底层文字布局和处理字体的技术.它在Mac OS X v10.5 and iOS 3.2开始 ...
- DNX概述
1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...
- ASP.NET Core原理概述
ASP.NET Core 是一个控制台应用程序,在其 main 方法中创建一个Web服务器,以下是program.cs中的代码: using Microsoft.AspNetCore; using M ...
随机推荐
- mongodb可视化工具 studio3t robo3T 下载安装使用介绍
mongodb可视化工具 studio3t robo3T 下载安装使用介绍 下载地址: https://studio3t.com/download robo3T
- Qt读取TXT文件时,GBK与UTF-8编码判断
读取txt文件时,很多时候无法获取文件的编码格式.如果直接进行使用,则有可能出现乱码.需要在使用前将其转为Unicode(Qt的默认编码格式). 虽然实际的编码格式种类非常多,但平常主要使用的有GBK ...
- webpack系统配置
简言之,webpack 是一个模块打包器 (module bundler),能够将任何资源如 JavaScript 文件.CSS 文件.图片等打包成一个或少数文件. 为什么要用Webpack? 首先, ...
- 教你如何修改CentOS系统上的时间
直接看命令:
- [转载]Oracle ltrim() 函数用法
前面有说到过LPAD和RPAD这两个函数用法的文章,今天发现与之相反意义的另外两个函数,那就是LTRIM() RTRIM(). 这次就挑LTRIM() 这一函数来讲讲: 具体的语法格式如下: LTRI ...
- echarts报错Can't get dom width or height
echarts图无法显示 一直报错Can't get dom width or height 原因:显示echarts图的div要设置宽高 报错前: <div class="left_ ...
- php 获取文件后缀
/** * 获取文件后缀 * $path 本地存储临时文件路径 * */ private function getFileType($path){ $fp=fopen($path,'r'); $bin ...
- docker 初步使用
CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 安装与启动 yum直接安装的docker版本较低,推荐这样安装: # 官方,可能网络连不 ...
- j2ee分布式缓存同步实现方案dlcache
现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...
- [WCF REST] 一个简单的REST服务实例
Get:http://www.cnblogs.com/artech/archive/2012/02/04/wcf-rest-sample.html [01] 一个简单的REST服务实例 [02] We ...