太棒了!

.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. mysql用户链接数

    show status like 'Threads_connected';  当前连接数 show variables like '%max_connections%'; 最大链接数 set GLOB ...

  2. Python模拟登陆万能法-微博|知乎

    Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

  3. java中位运算

    1byte(字节)=8bit(比特) 1 0 0 0 0 0 0 0 1   2进制的1的原码 反码 补码 0 0 0 0 0 0 0 0   2进制的0的原码 反码 补码 -1 1 0 0 0 0 ...

  4. python生产环境部署

    Python部署web开发程序的几种方法 fastcgi ,通过flup模块来支持,在nginx里对应的配置指令是 fastcgi_pass http,nginx使用proxy_pass转发,这个要求 ...

  5. 安卓---RedioButton(单选按钮)、CheckBox(复选按钮)

    <RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content ...

  6. compare.go

    package clientv3 import (     pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) type C ...

  7. nginx + tomcat 反向代理

    简单的配置:# my test java+nginx project server { listen ; server_name localhost; root /home/user/Desktop/ ...

  8. 第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)

    本章共两部分,这是第二部分: 第十四章--循环神经网络(Recurrent Neural Networks)(第一部分) 第十四章--循环神经网络(Recurrent Neural Networks) ...

  9. java自动化-数据驱动juint演示,上篇

    本文旨在帮助读者介绍,一般的全自动化代码接口,并简单介绍如何使用数据驱动来实现简单的自动化 在经过上述几个博客介绍后,相信读者对自动启动执行一个java编译过的class有了一定了解,也完全有能力去执 ...

  10. ASP.NET中的Cookie对象

    1.Cookie对象 Cookie对象一般用于在客户端保存一些针对某个用户的信息. Cookie本质上只是一小段文本字符串,改字符串一般保存在用户计算机特定文件夹下的某个文件中,每个Cookie都保存 ...