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数据库 ...
随机推荐
- Python 字典 Print 格式化
__author__ = 'dell' ab = {'Swaroop': 'swaroopch@byteofpython.info', 'Larry': 'larry@wall.org', 'Mats ...
- Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- SharePoint 2013 WebTemplates
SharePoint 2013 WebTemplates You are here: Home / SharePoint 2013 WebTemplates January 24, 2013 Ta ...
- [置顶] 技术人血泪史:七种IT失误让你直接走人
IT人士的真实故事:搞出大麻烦,旋即遭解雇 如今想找一份理想的IT工作并不容易,但丢掉一份工作却非常简单. 导致自己被炒鱿鱼的原因很多,无论是没能尽到保护雇主数字资产的义务.或者是滥用手中的权限以达到 ...
- java根据本地Ip获取mac地址
import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; impo ...
- OLAP 大表和小表并行hash join
一个表50MB 一个表10GB 50M表做驱动表,放在PGA里 这时候慢在对对 10g 的全表扫描 对10个G扫描块 需要开并行 我有这样一个算法 一个进程 读 50mb 8进程 来 扫描 10gb ...
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...
- 图论(floyd算法):NOI2007 社交网络
[NOI2007] 社交网络 ★★ 输入文件:network1.in 输出文件:network1.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 在社交网络( ...
- cache的工作原理
http://www.360doc.com/content/11/0307/21/3791508_99049437.shtml TLB(Translation Lookaside Buffer,也称快 ...
- Piggy-Bank(完全背包)
/* http://acm.hdu.edu.cn/showproblem.php?pid=1114 完全背包问题 再判断背包能否装满 题意: 给出存空钱罐的重量以及装满时的重量 给出每种硬币的面值以及 ...