想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework.Net Framework1.0于2002年发布。从那开始,每隔两年就会有一个主版本推出。伴随着Visual Studio 2013我们发布了C#5.0.Net Framework4.5.Net Framework4.5是巨大的,拥有超过20000余个类。

如此巨大的.Net Framework会从存在什么问题呢?.Net Core又是怎样解决的呢?
作为一名初学者,想要入门庞大的.Net Framework并不是一件容易的事情。许多对以前的应用很重要的但是对于新的应用程序并不是很重要的东西仍然存在。对于有经验的开发者,决定该采用哪种技术是是很困难的。进行web开发时,不得不在ASP.NET Web FormsASP.NET MVC中作出选择,在进行桌面程序开发时,不得不决定该使用Windows Forms 还是 WPF,在进行获取数据的时候,不得不在Entity Framework LINQ to SQL中作出选择... ...对于一部分有经验的开发者而言,该如何作出选择是显而易见的。但对于大多数开发者来说并不容易。甚至对于一部分开发者而言,开始使用.Net都很困难。

.Net Core是基于更细粒度的NuGet包的。例如编写控制台程序只需要控制台应用程序,而使用.Net Framework,控制台应用程序却依赖于被各个.Net 程序集引用的mscorlib程序集。采用.Net Core,你可以明确地决定要使用System.Console NuGet包。否则控制台程序将不会工作。更细粒度的包允许你更加轻松地解除对Framework的依赖。如果你需要旧版本的类,也可以通过NuGetSystem.Collection.NonGeneric来获取。对于新的程序,你可以通过定义包列表来使用System.Collection.NonGeneric。目前,开发环境更新很快。许多产品,用户几乎每隔2年就会收到新版本。用户会在一些更新中获取到一些小的特性,但是更新的频率却在加快。.Net Framework每隔两年就会推出新版本,这在目前来看已经不算快了。一些技术,例如Entity Framework,已经通过在NuGet上提供一些独立于.Net Framework的包来规避一些问题。小步伐更新并且快速快速创新。由许多小型的NuGet包组成的.Net Core可以更容易地被改变,.Net CoreASP.NET现在都是开源的。你可以通过http://www.github.com/dotnet找到.Net Core的源代码,通过http://www.github.com/aspnet找到ASP.NET的源代码。

.Net发布时,Windows在客户端和服务器端都拥有了巨大的市场。现在的体系是碎片化的,因为各个公司都对运行在服务器端的ASP.NET持反对态度,因为它不能运行在Linux上。但是ASP.Net Core 1.0会运行在Linux。目前.Net Core 是跨平台的,可以运行在Windows、LinuxMac系统上。对于移动端应用程序,可以使用.Net Xamarin开发运行在iPhoneAndroid上的应用程序。

在开发过程中,安装在目标机器上的.Net运行时环境需要和.Net Framework版本一致, 许多客户端开发都被.Net版本所限制。这不仅仅是客户端开发的问题,服务器端开发也存在这个问题。我不得不切换到旧版本的.Net运行时因为提供给我的并不支持新版本。但是使用.Net Core,运行时是和应用程序一起发布的。

ASP.NET建立以后,兼容以前的由JavaScriptVBScript代码技术就显得比较重要了。但就目前来说,这并不需要了。 开发者创建ASP.NET
Web Forms程序并不需要了解任何JavaScriptHTML,任何事情都可以被服务器端代码处理。但是现在由于巨大数量的JavaScript框架和增强的HTML,对于JavaScriptHTML来说,需要更多的控制。对于新版本的ASP.NET,在.Net Framework体系中是一个重要的角色。通过细粒度的控制,你可以决定哪些特性是你所需要的。为了获取更大的改善影响力,.Net Core可以被编译成本机代码。这不仅会在Windows上实现,也会在LinuxMac系统上实现。通过这个特性会提高性能尤其体现在程序启动时间和占用内存等方面。对于遗留的应用程序有个问题,大多数程序不能轻松地切换到.Net Core ,只运行于Windows的.Net Framework也在进行演化。但是并没有像.Net Core进行巨大的演化,但是它是一个成熟的框架。当我在撰写本书时,.Net4.6.1已经发布了,较上一个版本更新了小部分。Windows Forms 或者 ASP.NET Web Forms编写的应用程序仍然使用完整的Framework,但是他们可以使用增强的.Net 4.6.1,使用.Net 4.6.1可以使用NuGet包建立.Net Core。许多新的NuGet包以便携的方式被创建。对于 ASP.NET MVC5 应用程序你可以决定使用运行于.Net Core1.0ASP.NET MVC6ASP.NET Core 1.0既允许使用.Net Core 也允许使用.Net 4.6,这使得在.Net Core和.Net 4.6之间切换很容易。然而,对于运行在LinuxASP.NET MVC,你需要使用.Net Core 对项目进行迁移,但是在Linux上运行不会像之前的那么好。

以下是一些.Net Core的特性:

  • .Net Core是开源的;
  • 更细粒度的NuGet包利于快速创新;
  • .Net Core支持跨平台;
  • .Net Core可以编译成本机代码;
  • ASP.NET 可以运行于Windows和Linux系统;
  • 已存在的应用程序仍然可持续运行并且可扩展;

以上就是你所看见的.Net Core的特性,这项技术为.Net的改变作出了历史性的贡献。这是一个新的开始,从此我们将迈着快速的步伐继续我们的旅程!

以上文章翻译自《Professional C# 6.0 and .Net Core 1.0》,如有不妥请指正,谢谢。

作者:悠扬的牧笛

博客地址:http://www.cnblogs.com/xhb-bky-blog/p/7795856.html

声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

【翻译】.Net Core的意义的更多相关文章

  1. [翻译] .NET Core 2.1 Preview 1 发布

    [翻译] .NET Core 2.1 Preview 1 发布 原文: Announcing .NET Core 2.1 Preview 1 今天,我们宣布发布 .NET Core 2.1 Previ ...

  2. [翻译 EF Core in Action 1.11] 何时不应该使用EF Core

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  3. [翻译 EF Core in Action 2.4] 加载相关数据

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  4. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  5. [翻译 EF Core in Action 2.2] 创建应用程序的数据库上下文

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  6. [翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  7. [翻译 EF Core in Action 2.0] 查询数据库

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  8. [翻译 EF Core in Action 1.10] 应该在项目中使用EF Core吗?

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  9. [翻译 EF Core in Action 1.9] 掀开EF Core的引擎盖看看EF Core内部是如何工作的

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

随机推荐

  1. 【京东详情页】——原生js爬坑之放大镜

    一.引言 在商城的详情页中,放大镜的功能是很常见的.这里京东详情页就要做一个仿放大镜的效果,预览如下: 二.实现原理 实际上,放大镜的实现是单纯用几个div,鼠标移入其中一个小图div,触发事件显示另 ...

  2. 02.python基础知识_02

    数据类型 1.整型 2.布尔值 3.字符串 4.列表 5.字典 6.集合 1.int(整型) i = 2 print(type(i)) 输出:<class 'int'> 2.bool(布尔 ...

  3. 洗礼灵魂,修炼python(1)--python简介

    首先,本人也是刚接触python短短几个月,没有老鸟的经验和技能,大佬勿喷,以下所有皆是本人对python的理解 python,是一种解释型(高级)的,面向对象的,带有动态语义的高级程序设计的开源语言 ...

  4. pygame_polygon

    今天我们要在窗口上绘制简单的多边形 1.认识几个简单的常用的颜色: black=(0,0,0) while=(255,255,255) red=(255,0,0) green=(0,255,0) bl ...

  5. NOIP2017SummerTraining0710

    个人感受:这套题,题目泄露,没什么好打的,第一题刚开始题目理解错误,后来还行,第二道题,打了一个50还是60分的dp,第三道暴力过了小数据,拿了200分,排名15+. 问题 A: 七天使的通讯 时间限 ...

  6. Two Sum IV - Input is a BST

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  7. Android ListView getViewTypeCount 的返回值问题解决

    最近在学慕课网上的一个实战课程,期间有一个智能聊天机器人模块. 聊天界面通过 ListView 显示,用 Adapter 加载.一般来说,单对单的聊天,两者发出的话分别列在聊天页面的左右两边.所以,在 ...

  8. 23.Linux-块设备驱动(详解)

    通过上节的块设备驱动分析,本节便通过内存来模拟块设备驱动  参考内核自带的块设备驱动程序: drivers/block /xd.c drivers/block /z2ram.c 1.本节需要的结构体如 ...

  9. Github Page+Bmob实现简单动态功能

    Github Page基于jekyll能够实现简单的静态网站,但是没有提供后端服务.目前国内外也有很多提供后台服务,特别是云服务.譬如国外有AWS,记得好像是注册免费使用一年:再如Heroku,支持N ...

  10. Springmvc+Spring+Mybatis实现员工登录注册功能

    ssm实现用户注册以及登录功能..转载请标明出处  http://www.cnblogs.com/smfx1314/p/smfx1314.html 前端bootstrap 所使用的IDE是eclips ...