关于.NET Core的一些问题和疑惑
1 为什么会出现.NET
Core这个东西?即它为了解决什么问题。
.NET
Core是NET的ECMA标准的一种新的实现。目前.NET已有Framework,Mono,Unity等实现。
原先所有的.NET程序(Mono不在范围内)仅在windows平台环境下运行,这严重限制了.NET的生态扩展,所以.NET
Core解决了.NET跨平台可移植的问题,可以在Windows,
Linux,MacOS下开发并部署运行。
2 具有哪些特点?
跨平台:
可以在 Windows、macOS
和
Linux 操作系统上运行。
跨平台 ASP.NET Web 应用、跨平台控制台应用、跨平台库和框架、UWP
应用。跨体系结构保持一致:
在多个体系结构(包括 x64、x86
和
ARM)上以相同的行为运行代码。命令行工具:
包括可用于本地开发和持续集成方案中的易于使用的命令行工具。部署灵活:
可以包含在应用或已安装的并行用户或计算机范围中。
可搭配 Docker
容器使用。兼容性:.NET
Core 通过
.NET
Standard与
.NET Framework、Xamarin
和
Mono 兼容。开放源代码:.NET
Core 平台是开放源代码,使用
MIT 和
Apache 2 许可证。
.NET Core 是一个
.NET
Foundation 项目。由
Microsoft 支持:.NET
Core 由
Microsoft 依据
.NET
Core 支持提供支持。
3 .NET Core在.NET中处与什么位置?与原有的.NET
Freamwork有什么关系和不同?
.NET Core是.NET技术的一种新的实现,而不是.NET
Framework的子集。.NET
Core的代码和Framework的代码可以共存在一个解决方案中。
.NET Core 和
.NET Framework 上均实现了
.NET API(虽然有时底层的实现不同)。同时,.NET
Core 和
.NET Framework 均有对方不具备的
API 和功能。例如,.NET
Framework 有多个
.NET Core 不具备的
GUI 框架和特定于
Windows 的
API。同样地,.NET
Core 有
.NET Framework 缺少的跨平台功能和
API。
.NET Core 不支持所有
.NET Framework 应用模型。
具体而言,它不支持 ASP.NET Web
窗体和
ASP.NET MVC,但支持
ASP.NET Core MVC(已宣布 .NET
Core 3将支持
WPF 和
Windows 窗体)。

4 .NET Core由哪些部分组成?
.NET Core 包括以下部分:
.NET
Core 运行时:提供类型系统、程序集加载、垃圾回收器、本机互操作和其他基本服务。
.NET
Core 框架库提供基元数据类型、应用编写类型和基本实用程序。ASP.NET
运行时:提供框架以生成基于新式云的
Internet 连接的应用程序,例如
Web 应用、IoT
应用以及移动后端。.NET
Core CLI 工具和语言编译器(Roslyn
和
F#):提供
.NET Core 开发人员体验。dotnet
工具:用于启动
.NET Core 应用和
CLI 工具。
它选择运行时并托管运行时,提供程序集加载策略并启动应用和工具。
这些组件采用以下方式分布:
.NET
Core 运行时-- 包括
.NET Core 运行时和框架库。ASP.NET
Core 运行时-- 包括
ASP.NET Core 和
.NET Core 运行时以及框架库。.NET
Core SDK -- 包括
.NET CLI 工具、ASP.NET
Core 运行时以及
.NET Core 运行时和框架。
5 与Mono比较
Mono 是原始的跨平台和
开放源 .NET 实现,于
2004 年首次发布。
可以把它看作是 .NET Framework 的社区克隆。
Mono 项目团队依赖于
Microsoft 发布的开放
.NET 标准(尤其是
ECMA 335),以便实现兼容性。
就这个角度来说,.NET
Core与Mono是一样的。
.NET Core 和
Mono 的主要差异在于:
应用模型
-- Mono 通过
Xamarin 产品支持
.NET Framework 应用模型(例如,Windows
Forms)和其他应用模型(例如,Xamarin.iOS)的子集。
而 .NET Core 不支持这些内容。API -- Mono
使用相同程序集名称和组成要素支持
.NET
Framework API 的
大型子集。平台
-- Mono 支持很多平台和
CPU。开放源
-- Mono 和
.NET Core 两者都使用
MIT 许可证,且都属于
.NET Foundation 项目。焦点
-- 最近几年,Mono
的主要焦点是移动平台,而
.NET Core 的焦点是云和桌面工作负载。
6 .NET Core能做些什么事情?
可以使用
C#、Visual
Basic 和
F# 语言编写适用于
.NET Core 的应用程序和库。

7 怎么安装?
8 操作入口和界面?
.NET
Core的项目工程使用CLI作为操作界面,它是一个命令行程序。常见的命令如下:
|
命令 |
说明 |
|
dotnet new |
使用 |
|
dotnet restore |
还原在指定项目的 |
|
dotnet build |
生成您的代码! |
|
dotnet test |
如果不支持运行测试,则不会出现适合的工具。此命令让您可以使用在 |
|
dotnet publish |
发布在目标计算机上运行的应用程序。 |
|
dotnet pack |
pack 命令会把您的项目打包成 |
|
dotnet run |
运行命令将编译并运行您的应用程序。您可以将其看作没有 |
9 如何部署?与原先的.NET程序的部署有什么不同?
10 前景和规划
从目前微软在.NET
Core上的更新速度以及开发计划上看,.NET
Core的发展前景非常好,且逐步完善并向.NET
Framework功能集合靠拢。比如.NET
Core 3.0预览版即将支持WinForm和WPF程序开发。
而Mono的发展逐步转移到移动开发上。
关于.NET Core的一些问题和疑惑的更多相关文章
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- ASP.NET Core 之 Identity 入门(二)
前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以及相对应的几个知识点,并且知道了Identity处在整个登入流程中的位置,本篇主要是在 .NET 整个认证系统中比较重要的一个环节,就 ...
- .net core快速上手
2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- [转]教你实践ASP.NET Core Authorization
本文转自:http://www.cnblogs.com/rohelm/p/Authorization.html 本文目录 Asp.net Core 对于授权的改动很友好,非常的灵活,本文以MVC为主, ...
- 教你实践ASP.NET Core Authorization
本文目录 Asp.net Core 对于授权的改动很友好,非常的灵活,本文以MVC为主,当然如果说webapi或者其他的分布式解决方案授权,也容易就可以实现单点登录都非常的简单,可以使用现成的Iden ...
- ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?
前言 事情不太多时,会时不时去看项目中同事写的代码可以作个参考或者学习,个人觉得只有这样才能走的更远,抱着一副老子天下第一的态度最终只能是井底之蛙.前两篇写到关于断点传续的文章,还有一篇还未写出,后续 ...
- [转]ASP.NET Core 之 Identity 入门(二)
本文转自:http://www.cnblogs.com/savorboard/p/aspnetcore-identity2.html 前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以 ...
随机推荐
- 模板 - Floyd
void Floyd(){ for(int k = 1; k <= n; ++k) { for(int i = 1; i <= n; ++i) { for(int j = 1; j < ...
- 一般软件开发流程和BBS表设计
项目开发流程 需求分析 架构师+产品经理+开发组组长 和客户公司谈需求之前 ,事先需要想一下这个项目要怎么做 里面的坑点提前想好比较简单的解决方案 在跟客户谈的时候有意识的引导客户朝你已经想好的方案上 ...
- 编程的智慧(王垠)(http://www.cocoachina.com/programmer/20151125/14410.html)
编程是一件创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称三天瘦二十斤的减肥药,它并不能代替你自己的勤奋.然而我希望它能给迷惑中的人们指出一些正确 ...
- editplus的使用技巧
数据库sql语句中的 in 后面需要 ('xx','bb')这样的结果,多的话修改起来就比较麻烦,这时候使用editplus 的替换功能就可以实现 ,顶部菜单的 搜索 - > 替换 或者 ctr ...
- Vue之指令和绑定
一.v-once指令 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&quo ...
- ubuntu上的疑难杂症(不定期更新……)
ubuntu系统英伟达显卡驱动怎么装 sudo apt-get purge nvidia* #如果之前安装过显卡驱动,就执行这一句来卸载 sudo apt-add-repository ppa:gra ...
- Cacti+nagios 整合监控部署文档
目录 Cacti+nagios监控部署步骤... 2 一.Cacti安装... 2 1需要安装的依赖软件包:... 2 2安装rrdtool 2 3启动数据库和httpd服务... 3 4将serve ...
- Maven Pom文件标签详解
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- tomcat的内存配置
WEB站点在跑安全测试时,跑一会儿就连接不上,考虑是否是tomcat内存溢出问题. Linux环境,修改Tomcat的内存配置: 修改bin/catalina.sh文件,在cygwin=false前面 ...
- js加密php解密(CryptoJS)碰到的坑
今天做了一个功能,需要js传密码到php文件,对js密码 进行判断,为想为这个传输过程进行解密,参考了网上的一个方法(这个方法我只是使用了,并没有太深了解0.0) 首先要引入3个js文件 (在网上可搜 ...