.NET Core应用类型(Portable apps & Self-contained apps)

问说网 · 发布于 2017-04-11 · 字数11458 · 浏览 859 · 评论 0

介绍

有许多种方式可以用来考虑构建应用的类型,通常类型用来描述一个特定的执行模型或者基于此的应用。举例说:控制台应用(Console Application)、Web应用(Web Application)等等。所有这些类型的应用都可以用.NET Core来创建。.NET Core本身就是一个通用的开发平台。但是要赋予.NET Core跨平台的特性,.NET Core仍要需要一个角来发掘应用的类型,这被称为:应用的可移植性(application’s portablility)。可移植性本质上意味着哪里可以运行你的应用程序以及要在某个特定的机器上运行需要满足哪些先决条件。下面我们要描述两种主要的.NET Core具有的可移植类型。

Portable applications

可移植应用是.NET Core的默认的应用类型。这需要.NET Core被事先安装到运行程序的目标机器上。这就意味着你作为开发人员,在不同的.NET Core装置之间你的程序是可移植的。这种类型的应用只需要携带、部署自身的代码和依赖即可(.NET Core库之外的)。为了创建一个可移植的应用程序,所有你需要做的就是在project.json里面设置目前.NET Core的类库,然后把frameworks改成如下所示:

1
2
3
4
5
6
7
8
9
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
}
},
"frameworks": {
"netcoreapp1.0": {}
}

【Microsoft.NETCore.App】是一个“元数据包”,它向你表明你的目标.NET Core类库。依赖里的【type:platform】属性意味着当发布时,发布工具将省略发布这些依赖的.NET Core类库文件,因为这些依赖类库文件已经随着.NET Core安装到目标服务器上了。

使用原生依赖的可以移植应用

使用原生依赖的可以移植应用是上面可移植应用的子集。这些可以移植的应用拥有一些在依赖链上特定地方指定的原生依赖,这样这些原生依赖项可以直接运行的目标平台,我们的可以移植程序也同样可以直接运行在这些平台上。最典型的例子就是我们的Kestrel服务器(ASP.NET 跨平台 Web 服务器),它的构建是基于libuv(原生依赖)。当你发布一个具有原生依赖的可移植应用时,所有的发布输出都和上述一致,至于原生依赖,发布输出则会为每一个RID(Runtime Identifier)生成一个文件夹。下面的project.json文件展示了一个可移植应用使用原生依赖:

1
2
3
4
5
6
7
8
9
10
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*"
},
"frameworks": {
"netcoreapp1.0": {}
}

Self-contained applications

和可移植的应用不同,独立的应用不依赖任何分享的组件在你准备部署程序的目标机器上。和它名字的暗示一样,它意味着整个依赖是闭环的,运行时将会和整个程序一起发布。这会使整个发布包变更大一些,但是这也使得程序可以使用正确的原生依赖运行在任何一个.NET Core支持的平台上(而不用管.NET Core是否已事先被安装到目标服务器上)。这使得更加容易去部署你的应用程序到目标服务器上。因为现在应用程序的发布会自身携带运行时,所以必须事先明确指定哪些平台你的程序将会运行。比如,如果你想发布一个独立的程序到Windows 10,但不准备运行到macOS和Linux,这样你在开发时必须新增或删除一些平台(platforms)。完成一个独立的程序会经历很多步骤,但第一步需要删除任何 “type”: “platform”

属性。第二步是保留对Microsoft.NETCore.App的依赖,它会拉入一些我们需要的剩余的事情。最后,我们需要在project.json中添加一个运行时(runtimes)节点,以此来表明我们的程序将会在哪些平台上运行。

1
2
3
4
5
6
7
8
9
10
"dependencies": {
"Microsoft.NETCore.App": "1.0.0"
},
"frameworks": {
"netcoreapp1.0": {}
},
"runtimes": {
"win10-x64": {},
"osx.10.11-x64": {}
}

当我们restore项目时,如果project.json中包含runtimes节点,NuGet将会restore所有指定的运行时。接下来,当需要为给定的平台发布应用程序时,我们使用如下的命令行:

dotnet publish –runtime <RID>

RID必须是project.json中指定的RID,如:win10-x64或者osx.10.11-x64,否则会报错。如果你将要发布到的操作系统是你当前的.NET Core正在运行的操作系统,则直接使用如下命令即可:

dotnet publish

但是你仍然需要在project.json中指定对应的RID。

但需要注意的是:在.NET Core Tools Preview 2 的时间期限内,独立的应用是从本机NuGet缓存中发布的,这就意味着应用所有的依赖包括.NET Core运行时和类库并不是运行优化的。因此,独立的应用比可移植的应用整体上性能要低,原因在于可移植应用所依赖的.NET Core运行时和类库都是随时可以运行(ready-to-run)的。

本文系作者 问说网 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2016-10-03Blogify简约扁平化博客主题PSD模板
  • 2016-10-21多彩好看的淘宝销售标签箭头EPS素材
  • 2017-02-17问说网站长分享提升WordPress访问速度优化
  • 2017-04-01Wordpress固定链接伪静态的设置方法
  • 2017-04-04java中的Runable和Thread
  • 2017-04-05解决mysql无法远程访问的问题
  • 2017-04-19ASP.NET MVC 4 中的JSON数据交互的方法
  • 发布评论

    为您推荐

    多彩好看的淘宝销售标签箭头EPS素材
    问说网 · 发布于 2016-10-21

    多彩好看的淘宝销售标签箭头EPS素材

    恒创主机2017跨年盛典 主机/云服务器/独立服务器买就送
    问说网 · 发布于 2016-12-26

    恒创主机2017跨年盛典 主机/云服务器/独立服务器买就送

    恒创这次跨年促销,活动力度大,活动产品多。国内/香港/韩国/美国所有节点,新购/续费多重福利,满390元送小米VR眼镜。还可以免费抽奖,蓝牙耳机,小米充电宝等。

    问说网 · 发布于 2017-02-17

    问说网站长分享提升WordPress访问速度优化

    问说网创建也有5年了,最开始并不是使用的WordPress,是使用国内的DedeCMS开源程序,中间被黑客入侵了就换成了WordPress一直用到现在,随着文章…

    问说网 · 发布于 2017-04-01

    WordPress固定链接伪静态的设置方法

    今天,想着在我机器上测试一下wordpress,虽然之前也有这个开源的程序,可是一直没有安装呢,再加上最近一直忙于其他的工作,也忽略了不少,突然想建立一个属于自…

    问说网 · 发布于 2017-04-04

    java中的Runable和Thread

    在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了T…

    问说网 · 发布于 2017-04-05

    解决mysql无法远程访问的问题

    问题描述 1.windows 2003 server 32bit+IIS+护卫神+安全狗+navicat 2.root@%已配置 3.干掉护卫神,安全狗,防火墙…

    问说网 · 发布于 2017-04-19

    ASP.NET MVC 4 中的JSON数据交互的方法

    前台Ajax请求很多时候需要从后台获取JSON格式数据,一般有以下方式: 拼接字符串 1 return Content("{\"id\":\"1\",\"nam…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    问说网

    问说网分享与设计有关的文章素材界面和作品,提供设计教程、素材分享、界面欣赏、编程设计、设计书籍、设计师导航等内容,你可以在这里阅读、学习、分享、交流。

    13130 文章
    493 评论
    1949 人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 1834

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 1762

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 1774

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1267

    高清图片

    关注 高清图片

    文章 26530 · 浏览 1470

    更多 推荐作者

    关注 秋天的孤寂

    文章 99 · 评论 0

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 怎麽继续

    文章 90 · 评论 2

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!