太棒了!

.NET Core 2.0正式发布至今已经过去了大半年,这大半年说长不长说短不短,这段时间里,我是充分地体会到了微软的诚意,那就是认认真真打造一个优秀的开源平台。这大半年的时间里,微软一直在为.NET Core发布新的更新,每次都进步一点,日积月累至今,终于发布了.NET Core 2.1,这是一个重大的改进版本。
 
.NET Core 2.1的发布时间是2018年5月30日,但考虑到和西雅图的14个小时的时差,我们这边的时间应该是5月31日了,而我是得到这个消息后就直奔下载,阅读更新日志,并把这个最新的框架,应用于目前的项目中,一切非常顺利,中间仅仅遇到了点小问题,但很轻松就解决了。跟之前的修修补补相比,这个2.1版本是实实在在给我带来了一些惊喜:
  1. 编译性能大幅度提升,编译并发布代码确确实实地快了,这次真没有吹牛;
  2. ASP.NET Core的响应速度有了显著提升,打开网页速度“刷刷刷”,程序在我的Macbook上也“健步如飞”;
  3. 之前编译的时候会出现一些警告和错误信息,(在官方论坛上确定是编译器的bug)现在都没有了,修正了;
  4. ASP.NET Core提供了一些新的Tag及帮助方法,很有用;
当然了,改变绝对不止我提到的这几点,这几点仅仅是我能直接感受到的,其它的更新信息请参考:https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/
 
微软宣称性能有了很大提升,我点我还没去实证,但从ASP.NET Core的响应速度提升来看,应该是真的。
 
在确定踩平了可能的“坑”之后,我很快将这个新的框架应用于公司的生产环境中了,一切顺滑,而距离正式发布都没超过20个小时,于是我在同事中吹牛说:我们用的技术是最新的!
 
要使用这个新的开发平台,只需要下载最新的.NET Core SDK 2.1.300并安装,其实.NET Core SDK 2.1.x早就有了,但有点误导人的是,这些2.1.x SDK一直没办法将Target Framework设置为.NET Core 2.1,只能设置为2.0,直到2.1.300才可以。这个下载地址上也能看出来,为什么这样安排我也不懂:https://www.microsoft.com/net/download/all
 
装好后命令行敲>dotnet --version,确保显示的是2.1.300,大功告成。
 
理论上只要有SDK就可以开干了,你甚至只用vim或记事本都可以做项目,然而现实中我们还是得借助强大的Visual Studio 2017,为此,VS2017也要升级一下,升级方法如下图,打开Notifications面板,然后就不需要我说了(注:需要的版本为15.7.x):
 
在你的项目配置中,将Target Framework设置为.NET Core 2.1,完成!
 
 

一些感触

2014年初,我离开我的工作单位和朋友一起搞了一个互联网项目,当时在技术选型的时候我就考虑到底是用什么?纠结了好一阵子。最后选择Java,原因是:Java编译型强类型语言,成熟可靠社区力量大,关键跨平台,用起来非常习惯,且Android开发用的也是Java,到时候不用搞两套人马。然而,别忘了,那时候.NET Core还在娘胎中,甚至还不叫.NET Core这个名字,.NET有一个叫Mono的开源项目,可并没有得到微软官方的支持,如今回头看这个事情,我100%会选择.NET Core而不是Java,且我当时的观点还有些不正确——即便Android用的是Java语言,服务器端开发与Android端开发还是需要两套人马。
 
关于.NET与Java之争,其实十几年来一直没间断过,当然高手们对此非常不屑,其实我一般也不怎么提起这个事情,但要是谁说起,我也不回避谈谈,技术这个东西有时候“吵吵才热闹”,有好些东西在和别人“交流”前,自己根本就没听说过。现在的公司,也曾经考虑过将.NET换成Java,当时我也和别人争论过,我是持反对意见的,原因就是公司主要力量在.NET上,虽然Java与.NET很像,但又确确实实有很多不同,切换过去是一大工程,我们的开发人员要重新熟悉环境,且Java语言是相对C#难用的,C#的语法特性简直堪称完美,我们应该继续留在.NET体系,我进一步说:“Java能做的,.NET都有对应的实现。”我的反对者则很不屑:“.NET有什么好的开源报表库么?”我确实有点愣住了,从这点看,我的对手确实将了我一军,但这并不妨碍我们继续使用.NET,我后来不断完善和改进我们的“武器库”, 使得我们的框架日趋完善,适应公司的业务需求。而我坚持使用.NET还有另一个原因,就是.NET Core那时候已经处于整装待发的状态了!那时候RC版已经出来,我当然马上抢先体验了一把,甚至尝试把一个小程序移植过去,但我很快发现这个版本确确实实有些欠缺,导致移植并不怎么顺利,我想,根据微软一贯的风格,1.0通常是个很不完善的版本,2.0则基本完善,2.0后续的小版本则趋于成熟,.NET Core也是一个道理,所以我没有立即做全面迁移,但一直关注着.NET Core的发展,直到去年8月2.0正式发布,这真振奋人心。
 
使用.NET Core的还有另一个重大理由——Visual Studio,坊间把它称作宇宙第一的IDE(集成开发环境),反对的人不多。我用过许多IDE,如Eclipse,IDEA,Android Studio,XCode,NetBeans,以及很古老的VC++6等,最强大和好用的还是Visual Studio。如果你觉得VS慢,通常是因为你的电脑太旧,你得配备一台强悍的电脑,花点钱弄上去,或者说服老板给你配台新机,这才是最省时省力的姿势,强大的CPU(所以一般我不推荐笔记本电脑),16G以上的内存,固态硬盘是必须的(考虑使用最新的Optane SSD吧),这些才是真正的生产力工具,要知道,IDE功能越强大,运行越缓慢,君不见,IDEA的用户也成天哭慢?相信我,后面对你生产力的提高肯定对得起你对硬件的这点投入。Visual Studio如今已经十分强大,甚至之前一些不属于“微软系”的技术也开始被支持了,如直接支持Python、Node.js、Linux C++、Android(基于Xamarin)等开发技术,即便你之前认为反对微软是技术的政治正确,现在尝试下Visual Studio,我相信你一定不会后悔。
 
我不知道还要说什么,零零碎碎的一点感触吧。希望.NET Core发展越来越好吧。
 

.NET Core 2.1来了!的更多相关文章

  1. ASP.NET Core 之 Identity 入门(一)

    前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...

  2. .NET Core中的认证管理解析

    .NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...

  3. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  4. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

  5. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  6. EntityFramework Core Raw SQL

    前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

  7. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  8. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

  9. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  10. ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...

随机推荐

  1. sql server 高可用故障转移(4)

    二台sql服务器配置ISCSI虚拟磁盘 在上篇我们利用ISCSI Target软件在DC-ISCSCI上创建了三个ISCSI虚拟磁盘,在下面我们将为大家介绍SQL-CL01(hsr1 50)和SQL- ...

  2. thymeleaf 专题

    Thymeleaf 之 内置对象.定义变量.URL参数及标签自定义属性 如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义变量.获取URL的参数 ...

  3. safari浏览器模拟ipone,ipad以及其他浏览器版本

    1.打开safari浏览器中的偏好设置 2.在偏好设置中,选择高级,勾选在菜单栏中显示开发菜单 3.打开开发,进入响应式设计模式 4.可以选择iphone 或ipad.浏览器等不同模式,进行模拟 5. ...

  4. c# 编程语言tag

    ['JavaScript','Objective-C','C++','C#','Basic','PHP','Python','Perl', 'Transact-SQL','ruby','CSS3',' ...

  5. Python中使用MongoEngine1

    pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会让应用的代码耦合性太强,而且不利于代码的优化管理 一般应用都是使用MVC框架来设计的,为了更好地维持MVC结构 ...

  6. 关于Kafka日志留存策略的讨论

    关于Kafka日志留存(log retention)策略的介绍,网上已有很多文章.不过目前其策略已然发生了一些变化,故本文针对较新版本的Kafka做一次统一的讨论.如果没有显式说明,本文一律以Kafk ...

  7. Windows 下python 环境安装

    1.先在官网上下载安装包,官网地址:  https://www.python.org   2. 选择自己需要的版本进行安装,最好选择新版本下载,   3. 下载完成后,双击运行安装,一直next,直至 ...

  8. 数据保存策略(Retention Policies)

    数据保存策略(Retention Policies) InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies.主要用于指定数据的保留时间:当数据超过了指定 ...

  9. bzoj1547 周末晚会

    我们要求方案数,还是旋转同构的,想burnside,如果我们能计算出转i位不变的满足条件的数量,那么这道题我们就解决了. 考虑转i位时,设tmp=gcd(i,n),那么就共有tmp个循环节. 当tmp ...

  10. centos-7 yum装docker-ce后启动失败

    相关版本: centos-7:   CentOS Linux release 7.0.1406 (Core) docker-ce: Docker version 18.03.0-ce, build 0 ...