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版本, 安装不同的版本转换当前激活的版本。
DNX概述的更多相关文章
- 【Net Core】DNX概述
1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...
- ASP.NET 5 (vNext) 理解和概述
概述 ASP.NET 5 (又称为vNext) 是自ASP.NET产生15年以来一次革命性的更新, 我们可以从以下几点来理解其概貌和意义: ASP.NET 5是开源的 ASP.NET 5开发的WebA ...
- NET5实践:项目创建-结构概述-程序运行-发布部署
ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- RunLoop-b
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...
- CSS预处理器之SASS用法指南
CSS预处理器之SASS用法指南 一.什么是SASS Sass是是一种基于ruby编写的CSS预处理器,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 诞生于200 ...
- 利用多线程资源竞争技术上传shell
通过多线程资源竞争的手段同时上传两个头像,就可以在Apache+Rails环境下实现远程代码执行.这并不是天方夜谭,同时我相信许多文件上传系统都会有这个漏洞……这是一个非常有趣的安全实验,一起来看看吧 ...
- Help Me with the Game
Help Me with the GameCrawling in process... Crawling failed Description Your task is to read a pictu ...
- org.springframework.web.context.ContextLoaderListener
ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web ...
- hashCode() 和equals() 区别和作用
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键. 那么Java运行时环境是如何判断HashSet中相同对象.Ha ...
- windows7+iis7+php的配置
最近在找工作,人被逼了,所以没事就学习php了.以下是开发环境的搭建: 环境搭建 然后就是解析php脚本的两种配置方法: fastCgiModule与ISAPI方式 两种配置方法 本文为转载...
- fdisk磁盘分区
http://www.cr173.com/html/4336_1.html http://www.51cto.com/art/200602/20328.htm
- 图论(无向图的割顶):POJ 1144 Network
Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. ...
- Remove Duplicates from Sorted List II ——LeetCode
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...