“为什么你还想用ASP.NET,难道你还活在90年代吗?”这正是我的一位老同事在几年前我们即将开始的项目中我提出考虑使用ASP.NET时所说的话。当时我很大程度上认同他的看法,微软已经开发了伟大的开发语言,伟大的web框架以及围绕它的伟大的工具,但是人们依然不太满意。我们最终 没有使用ASP.NET的原因是其语言和框架的封闭性。使用ASP.NET意味着我们需要为我们的服务器支付windows服务许可证,或者为了让我们的应用程序能够部署在Linux上,就必须去填像Mono这样无数的“坑”。但是从那以后很多事情发生了变化,微软真的加快了游戏的的步伐,把ASP.NET从被迫使用的东西(因为你的雇主在使用它)变成了最“时髦”的开发者都想要用的东西。

五年前当我第一次学习C#时,我认为它是有史以来最好的编程语言,但我当时的兴奋之情并没有持续多久,因为我开始发现他们的产品有太多的缺点。当ASP.NET CORE第一次公开发布的时候我就开始使用了。而当微软宣布它是跨平台的时候,我对ASP.NET CORE和C#的兴趣再次增长。可以看出,对于开发人员来说,微软当时的问题并不是因为技术能力,性能或者其他一些指标,问题是它非常封闭,你不得不专门为微软技术付费像Windows server 和IIS去部署你的应用程序,这意味着它运行服务要比其他技术栈高很多,甚至Java-C#最大的竞争对手。尽管这点支出对于一个大企业相比于每年的收入根本不算什么,但对于一个初创企业或一个想要开发自己程序的程序员来说是非常重要的。另一个微软糟糕的地方是,他们的技术太陈旧,而且有很多旧的,废弃的和不一致的API,让整个体系看起来臃肿不堪。

根据微软对于.NET Core,ASP.NET Core以及新版本的C#的介绍,微软真的改变了游戏规则。C#已经是行业中的顶级语言之一,但是微软的这个新方向确实决定了它的地位,帮助其被大量采用。假如你对.NET完全不知,.NET CORE是微软几年前发布的新框架,它修复了之前所有的缺点。它跨平台,高性能,精益,而且最重要的是还开源。以前没有人想过微软能发布在windows之外的平台上运行的东西,更别提让整个开发平台运行在Linux和Apple OS上了。

微软使用的组件术语可能有点令人困惑,所以让我先简单地解释一下:

C#:

这是微软开发的通用编程语言的名称,是被ECMA批准的,最新的版本是7.0,但是你可以在微软的官方网站C#模块找到所有历史版本。

.NET FrameWork:

这是一个通用的应用程序框架,主要使用C#编写,它可以用于创建任何东西,从桌面应用程序到移动应用程序到web应用程序,但它只支持微软的Windows和Windows Mobile平台。

.NET Core Framework

这是.NET的新版本,它是跨平台的,可以在大对数主流平台上使用,尽管这是下一代的.NET框架,微软仍然保留着旧的框架。

.NET Standard

这是通用核心API名称,是微软提供通过.net framework和.NET CORE统一食物,使库在不同的.NET系统中互相兼容。

ASP.NET Core

这是一个构建在.NET核心框架之上的web应用程序框架,是ASP的继承者。

回归正题,让我们看看让我喜欢.NET CORE和C#的新技术:

性能

另一个使用.NET CORE的重大原因是其性能的提升,当谈到流行的通用编程语言的性能时,微软再次处于领先地位。在开发社区中,性能是一个敏感的话题,因为技术栈和工具只能在应用程序获得性能优化,其余的都交给开发人员来实现。但是开发栈能够做的是鼓励并强执行的实施最好的性能实践,并且优化常见的使用场景,以便在更大范围内实现性能最优化,这正是微软在做的。

C#本身就是一门令人惊叹的语言,它拥有许多内置的特性可以让您更好的调整应用程序的性能,但是.NET CORE团队一直在努力优化在API中构建的大量特性,以获得最佳性能。即使是ASP.NET CORE的早期版本,它的性能在echEmpower Benchmarks也有了很高的评价。有很多公司利用.NET Core优化了其性能,比如Raygun,它实现了效率的最大化。微软最近发布了最新的有巨大性能改进的.NET CORE 2.1.自从新框架发布以来,开发团队一直在推动性能优化的更新。

多功能性

我再次选择微软的最大原因是其多功能性,现在它是开源并且跨平台的,我几乎可以用一个技术栈构建所有东西。你可以用UWP构建桌面应用程序,用Xamarin(现在是微软的一部分)构建移动应用程序,用ASP.NET CORE构建web应用程序,用SignalR构建实时应用程序等等。奇怪,如果你是一个游戏开发者,你可以用unity,尽管这不是微软的。我的遵旨是用对的工具做对的事,通过这种方式,我仍然可以使用我最熟悉并且热爱的语言,工具和API。最棒的是这一切都是免费的。

工具  

我从来没有想过我会这么说,因为在早期的版本中有bug,但是目前工具是.net生态系统最好的东西之一.您可以在多个平台中进行多种方式的开发。如果您喜欢使用IDE,那么Microsoft的主要IDE Visual Studio是首屈一指的。对于那些喜欢对他们的工具进行更多控制,并且不需要IDE提供的帮助的人来说,有Visual Studio Code,这是他们的代码编辑器和命令行工具,允许您构建、测试和开发应用程序,而不需要IDE上的大量代码。VS Code也有大量的第三方扩展,可以帮助您有更好的开发体验。

Mac上也有Visual Studio,它与Windows版本不同,但仍然是一个完整的软件包,允许您在Mac OS上开发微软的新栈。如果你在Linux上,或者只是想要一个不同于微软提供的IDE ,Jetbrains(Android Studio背后的公司)已经发布了一个名为Rider的IDE,它很棒,是我在Mac上开发的主要工具。Rider在三大主流平台都是可用的,微软的Intellisense自动完成系统是我在任何主要的开发栈中发现的最好的,加上Jetbrains ReSharper ,没有比这更高效的了。我的主要开发机器是一台MacBook,我喜欢用Jetbrains Rider或VSCode工作。

Visual Studio For Mac

长期以来,微软一直在他们的团队中投入时间和技术努力,这意味着他们拥有稳定的开发团队、经验丰富、知识丰富的工程团队以及多年积累的信任。新的.NET CORE打开了一个更大的市场,同时展示了一个大公司能做什么并且实现快速的转型。在现任首席执行官萨蒂亚•纳德拉(Satya Nadella)获得任命后,他开始推动公司的技术和开发工作,导致了所有这些重大变化,这是有道理的,因为他也是技术出身。c#和.net Core可能是微软长期以来在开发领域所发生的最好的事情,我很高兴他们正在做他们应该做的事情。

原文链接:https://kaushalsubedi.com/blog/2018/04/24/how-microsoft-made-me-love-net-core-and-c-again/

微软是如何让我再次爱上.Net Core和C#的的更多相关文章

  1. 在ubuntu16.04中再次体验.net core 2.0

    在上一篇文章中在ubuntu16.04中初次体验.net core 2.0 简单介绍了一下ubuntu中运行.net core 2.0.配置nginx反向代理以及安装supervisor守护进程……本 ...

  2. net core体系-3再次认识net core

    1 什么是ASP.NET Core ASP.NET Core 是一个全新的开源.跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things ...

  3. 微软产品开发文档:包括.net core .net vs等等

    Browse all https://docs.microsoft.com/en-us/learn/browse/?roles=developer&products=xamarin%2Cef- ...

  4. 微软公有云Windows Azure 2014-03-26 国内正式商用

    新浪科技讯 3月27日早间消息,微软国昨天下午宣布由世纪互联负责运营的Microsoft Azure公有云服务正式商用.这是国内首个正式商用的国际公有云服务平台.而开正式开放商用,意味着任何企业现在都 ...

  5. 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收

    目录 微软Github开源项目入口 微软开源项目受欢迎程度排名 Visual Studio Code TypeScript RxJS .NET Core 基础类库 CNTK Microsoft cal ...

  6. 大数据:从开源告诉你身边的IT故事

    最近我们Team利用Dream分布式计算平台,做了这样一件事情,将Github的大量数据通过爬虫抓取下来,通过分析后,我们抽取最近一年中部分的开发者和项目信息,得到了如下有趣的信息,故分享之,数据原汁 ...

  7. 初测WIN10

    WIN10已经发布,通过百度直通车把WIN7升级成了WIN10,改变较大,不太习惯,用着不是很顺手. 吐槽几个问题 1.微软的Visual Studio 2015 Community版本,宣布是免费的 ...

  8. Metasploit介绍

    Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估, 提供真正的安全风险情报.这些功能包括智能开发,密码审计 ...

  9. Azure China

    Azure China   Azure China (2) Azure China管理界面初探 摘要: <Windows Azure Platform 系列文章目录> 首先是Q&A ...

随机推荐

  1. RHEL 5.7 使用rpm安装XtraBackup问题总结

    在Red Hat Enterprise Linux Server release 5.7 (Tikanga)上使用RPM方式安装Percona Xtrabackup 2.4.6时遇到了一些问题,特意总 ...

  2. Java读取.properties配置文件

    一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourc ...

  3. 洗礼灵魂,修炼python(87)-- 知识拾遗篇 —— 线程(1)

    线程(上) 1.线程含义:一段指令集,也就是一个执行某个程序的代码.不管你执行的是什么,代码量少与多,都会重新翻译为一段指令集.可以理解为轻量级进程 比如,ipconfig,或者, python   ...

  4. c/c++ 标准库 map set 删除

    标准库 map set 删除 删除操作 有map如下: map<int, size_t> cnt{{2,22}, {3,33}, {1,11}, {4,44}; 删除方法: 删除操作种类 ...

  5. c/c++ 数组 数组的引用,指针数组的引用

    c/c++ 数组 知识点 1,数组的声明和初始化,对应代码里的test1和test2 2,char数组,对应代码里的test3 3,数组不可以拷贝和复制,对应代码里的test4 4,指针数组, 数组的 ...

  6. C# -- 交错数组的使用

    C# -- 交错数组的使用 交错数组是元素为数组的数组.交错数组元素的维度和大小可以不同.交错数组有时称为“数组的数组”. 1. 举例一:子数组是长度相同的一维数组 static void Main( ...

  7. Ubuntu16.04下iTop4412环境搭建+Android4.0.3编译

    系统:Ubuntu16.04.02(优麒麟) 安装库文件和JDK 使用cd 命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹,运行脚本文件 “install-sun-ja ...

  8. vue v-nav指令属性列表

    v-nav指令属性列表 属性名 属性描述 类型 必选 默认 title 导航栏标题 String No 空字符串 showBackButton 是否显示(左边的)返回按钮 Boolean No fal ...

  9. 轮播图插件swiper 的使用

    引入文件(注:目前版本号为Swiper3.x) <link rel="stylesheet" type="text/css" href="//s ...

  10. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...