微软如何让我对C 和.NET 重拾旧爱

"为什么你会想要使用ASP.NET,还活90年代?",几年前,当我提出考虑要在一个项目中使用ASP.NET时候,我的一位老同事的回应。当时我很大程度上认同他的看法。微软雇佣了一个伟大的程序员,开发了一个伟大的语言,创建了一个伟大的Web框架和IDE工具,但人们仍然不太满意。那次我们最终没有为该项目使用ASP.NET的主要原因是因为语言和框架的封闭模式。使用ASP.NET意味着为我们的服务器必须支付Windows服务器许可证费用,或者为了让我们的C#应用程序跑在Linux上,我们就必须的使用Mono,一个漏洞百出,需要填很多的坑的不成熟的玩具。

但从那以后,很多事情都发生了变化,微软真真切切的改变了游戏规则,并将ASP.NET从被迫使用的东西变成适宜的选择,因为即使是最铁杆时髦开发者,你的雇主也需要使用它来满足需求,.net core 变成了满足需求的称手工具。

当很多年前第一次学习C#时,我认为它是有史以来最好的编程语言。但是我的兴奋并没有持续很长时间,很快我就发现发现他有很多的缺点。我很早就开始学习ASP.NET Core,几乎在第刚开始公开发布的时候就已经关注它了。当微软微软宣布要实现ASP.NET Core跨平台时候,我对ASP.NET Core和C#的兴趣就再次被提了起来。

所以,微软当时的体系的问题并不在于他们技术、性能或其他大多数指标。问题在于它被限定在Windows这个专有的平台,你不得不使用专有的需要付费微软技术,比如Windows Server和IIS来部署你的应用程序。这意味着与大多数其他技术体系相比,你服务的运行成本要高得多,甚至是C#的最大竞争对手Java。就算这成本对于每年产生很多收入的大型企业而言,与支付的开发人员工资而言算不得什么。但对于早期初创企业或试图用其搞点副业的的开发人员来说,这还是有点贵。

与微软的体系相关的另一个糟糕的问题是,他们的技术太陈旧,有很多陈旧的、丑陋的和不一致的API,这使得整个体系看起来很臃肿。

随着.NET Core,ASP.NET Core和C#的更新版本的推出,微软确实改变了游戏规则。 C#已经是行业内使用的顶级语言之一,但微软采取的顺应潮流的做法确实使他们的位置得到了保留,并帮助其被大量运用。如果你对这比较生疏,让我来先来解释下:.NET Core是微软几年前发布的一个新框架,在此之前它解决了所有缺点。它是跨平台,高性能,精致,并且最重要的是他还开源。以前没有人想过微软会发布任何可以在Windows以外的平台上运行的东西,没想过微软整个开发平台可以在Linux或者苹果的Mac OS X上运行。

微软.net core开发体系

微软体系结构有点庞乱,下面概要介绍下其中的主角:

C# 语言

这是微软开发的通用编程语言的名称,是ECMA(欧洲计算机制造联合会)批准的标准语言(ECMA 334),也是ISO标准语言(ISO/IEC 23271:2006)。本文章主要以C# V7为例,其他相关信息,参考微软的C#网站。

说到ECMA我们说给话外主题,大家常说Javascript的实际上是个惯例叫法,但是这个叫法是有问题的。js的真正名字是ECMAScript(ECMA262),早期js还是归网景公司的时候,为了蹭java语言的热点,所以叫了Javascript,但是这个名字是被SUN注册商标的,但是SUN还是个很地道的公司,也没有究其法律责任,所以叫法就延续下来了。直到网景公司将他捐给了ECMA,才真正叫了ECMAScript,Javascript但是叫顺了也被延续下来了。但是后来SUN被Oracle收购了,包括Java、mysql和Javascript都是Oracle的商标,所以现在如果公司在某些商业场合时候不注意用Javascript时候会有版权纠纷的。毕竟Oracle已经把谷歌告了,还要求赔几十亿刀,也有js开发者的应用使用Javascript这个名字收到Oracle的律师信,所以作为一个话外题给大家提个醒。

.NET 框架

这是一个通用应用程序程序开发框架。它可以用于创建从桌面应用程序、移动应用程序到Web应用程序的所有应用。但只能在Microsoft的Windows平台上运行。

.NET Core

这是跨平台.NET的新版本,适用于大多数主要平台等非微软Windows平台。这应该是下一代.NET框架

ASP.NET Core

这是一个基于.NET Core框架构建的Web应用程序框架。这是之前ASP.NET的后继者。ASP.NET只支持在windows IIS下运行。

看完主角简介,让我们更深入了解下微软基于.NET Core的新技术体系,就是这些技术体系让我喜欢上C#和.NET Core的。

特性

从外部看,整个新的.NET Core生态系统可能看起来像是一只披着喜羊羊皮的灰太狼,对那些没有做过多少研究的人来说,很容易认为它只是旧版.NET Framework旧人换新婚纱的版本。但事实并非如此,微软近年内一直在努力推动开源战略。微软宣称,.NET Core与其前任不同之处在于新增的功能。最大的特点是新的技术体系是跨平台的。跨平台实施并不像我们过去看到过的其他一些语言那样简单,他们基于跨平台的思想重新构建了整个体系架构。这也使得能够使用最新的应用包装系统,例如容器和的Docker。他们还开发了一些合宜的工具,可以让你基于.NET Core进行跨平台开发,这是微软以前从未做过的事情。

另一个主要功能是删除对IIS的依赖,这是微软自家的Web服务器。微软创建了一个新的没有依赖的嵌入式Web服务器Kestrel,它不仅没有任何的依赖,而且还支持开发人员将它嵌入到应用程序中去,无需另外再安装运行环境,从而为部署增加了更多的灵活性。然而,这些还不是的.NET Core所带来的全部功能。更多功能,可以参考,微软官方的Microsoft .NET Core Guide系列。

体系架构的新鲜血液注入不仅限于.NET Core,C#也一直在持续更新,并增加了许多有用的功能。值得提及的有tuples,Async/await,local 函数等,C#的开发也更加便捷高效。

性能

开始使用.NET Core的另一个重要原因就是性能的极大改进。当涉及流行的通用编程语言之间的性能对比项目是,微软再次成为了吸人眼球的焦点。性能是开发社区中一个敏感的主题,因为体系和工具只有在优化应用程序的性能时才能带你到达目的地,剩下的事由码农来搞定就行。但是,开发体系可以做的是鼓励并强化性能的最佳实践,并优化常用的使用场景,以便在更大的范围内最大限度地提高性能,而这正是微软所最擅长的。

C#本身就是一种令人惊叹的语言,并且内置许多功能,可以让你调整应用程序的性能,但.NET Core团队一直在努力优化大量内置API以实现最佳性能。即使早期版本的ASP.NET Core在TechEmpower Benchmarks的性能都已经夺人眼球。有大量的企业利用.NET Core中可用的性能优化以最大限度地提高效率的例子。微软最近发布了最新版本的.NET Core 2.1以及带来的巨大地性能改进。

多功能性

让我再次拾起微软体系的最大原因是多功能性。由于他是开源、跨平台的,我几乎可以用一个技术栈不出体系就能构建一切,做全栈开发。你可以使用UWP构建桌面应用程序,使用Xamarin(现为Microsoft的一部分)开发跨平台移动应用程序,使用ASP.NET Core做Web开发,使用SignalR发布实时应用程序等。我的开发哲学是“用正确的工作,做正确的任务”,而.net core让我仍然可以使用我熟悉和喜爱的语言,高效的工具和API的高效率的完成开发,而且最重要的是所有这一切都是免费的。

工具

我最后要说的是工具。工具链是当前.NET生态系统做的最好的事情之一。你有很多种在多个平台上开发的方式。如果你喜欢使用IDE,Microsoft的主IDE,Visual Studio是首屈一指的。对于那些喜欢对其工具进行更多设置改装的,并且比较讨厌使用现成IDE提供的工具的用户,可以选择微软开源的Visual Studio Code,这是微软一个免费开源的代码编辑器和命令行工具,它们允许你构建,测试和开发应用程序,也算是一个完整的IDE。 VS Code支持大量的第三方扩展,可以帮助你更好地开发,提升你的开发体验。

微软也推出了 Mac版的Visual Studio,与Windows版本不同,但它是一个完整的软件包,可让你在Mac OS上的Microsoft全新开发体系下进行开发。如果你在Linux上,或者只是想使用非微软家产品的IDE,可以选用Jetbrains的产品,他们已经发布了一个名为Rider的IDE,非常棒,是我在Mac上开发的主力开发工具。

Rider支持Windows、Linux和Mac OS三大要平台。我的主要开发机器是MacBook,我非常喜欢Jetbrains Rider或VSCode的工作流程。微软的Intellisense自动完成系统是我在现有的开发体系中找到的最佳地解决方案,而且通过添加诸如Jetbrains ReSharper等工具,可以实现一个完美高效的开发平台,应该找不到比这更好的其他工具组合了。

微软一直在开发工具上长期投入时间和工程设计,他们拥有稳定的开发体系,经验丰富且知识渊博的工程团队以及多年积累的信任。新的.NET Core开辟了一个更大的市场,同时展示了一家大型公司可以做什么以及他们能够怎么快速转型。在现任CEO Satya Nadella被任命后,他开始推动公司的工程和开发方面,从而进行所有这些重大变革,依托其工程背景,改革目前看来很成功。 

C#和.NET Core可能是微软在开发领域长期以来所做最好的事情,也是献给开源界的一份大礼。当然我在此还要提到这体系外用来替代JS的一个最流行的免费开源编程语言Typescript。也是伟大程序员安德斯·海尔斯伯格发明有又一干货(Delphi,.net,J++ ,C#,F#)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 准备篇&福冈篇戳这里:日本自由行|准备篇&福冈篇 长崎篇戳这里:日本自由行|长崎篇 4.京都 京都奈良一共停留了3...
    小马君_Ellie阅读 909评论 2 9
  • 梦对于你的定义是如何解说,看过一句话:有一天梦里能到达的地方,脚步也能到达。我是那样痴痴的坚信着,心中有梦,人生也...
    抬头有泪阅读 479评论 4 2
  • 昨天,我们刚刚得知张靓颖终于和与自己爱情长跑十三年的男友冯轲一同宣布婚讯:将于11月9日在意大利完婚。我们还没有来...
    趣逛达人阅读 1,034评论 11 13
  • 今天早上儿子醒的很早,我调整心情,笑着对儿子说:“儿子早上好!周六的时候妈妈去听了武校长的家校合育报告会,很受启发...
    wzy知足常乐阅读 214评论 0 2