在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C#发展至今,已经从最初的1.0到了4.0版本,不如来回顾一下各个版本都带来了什么:
可以看到,C#从诞生至今,经历2次CLR的升级,以及1次语法层面的扩展,其作为一个语言已经非常便利、强大。但是随着时代的发展,C#依旧在不断前进,而下一代C# vNext又即将诞生。每一代的C#都会在小的语法调整之外,带来一个震撼性的特性。从2.0的泛型、3.0的查询到4.0的动态,每一个版本的C#都有着一个主导的思想,而其他细节的改进和调整则是围绕着这个最基本的思想给予支持。 在这样一路明确的有且只有一个主导思想的升级路线上,下一代的C# vNext的核心思想又是什么呢?纵观当下的软件工程界,最热门的话题莫过于并行计算,为此C#早在4.0版本中就已经引入了Parallel Linq扩展,简化并行的开发。但是这远远不够,即便Parallel Linq已经提供了极大的便利,但其执行-回调模型依旧打破了编码人员以往对代码就是一行一行顺序执行的习惯思维。因此,C# vNext的主导思想是在这之上再给予更多的进化,即C# vNext将着眼于: 异步 C# vNext为了将异步变得更为简单,引入了2个关键字,async和await,下面简单介绍下这2个关键字给我们的编程带来怎么样的改变。 以一个标准的逻辑为例:下载一个远程URI,并将内容输出在界面上,假设我们已经有了显示内容的方法:
如果用标准的同步式写法,这代码相当之容易:
当然这不是我们讨论的重点,同步方式会造成线程的阻塞,必须选择 所以我们又有了异步的方案,.NET中最早的异常编程模式是Begin/End模式,不过
看看,好好的事情一变成异步,就变得麻烦无比。一个很明确逻辑的方法活生生拆成2个来处理,虽然可以用Lambda或者delegate来使代码上进行简化,但依旧无可避免一段逻辑被拆成两段的痛苦。当更多的异步操作交叉在一起的时候,无论是代码的组织还是逻辑的梳理都会变得更加麻烦。 正因为如此,C# vNext引入了关键了,从语法上对此进行了改进,当使用async和await时,我们的代码会变成这样:
悄悄地告诉你,我写上面这段代码的时候,是直接把同步方案的代码复制过来再稍微发了几个字符的……由此可见,在语言级别给予支持后,代码的编写将会是如何地顺畅和简便。这段代码看上去就是一段典型的同步逻辑,创建-下载-显示按部就班,唯一不同地就是在方法声明中加入了async关键字,在 虽然高手们总是说不要关心语言,不要在意语言,真正重要的是思想。但是看着这样的代码,真的还能认为语言的优秀与否对生产效率没有影响吗? 至于如何实现这个效果,本篇并不想做太多的说明,因为本文的目的仅仅是向大家介绍一下下一代C#的一个特性。实现机制方面,相信大家都想得到,编译器会将方法体在await关键字前后打断,编译为Begin/End模式的异步模型。这并不是什么难事,但是能想到并付诸于实施却并不容易。至少JAVA7虽然强化了异步编程,但却没有让语言达到这样的程度。请不要不屑于语法糖,正如高手们所说,无论什么语言都不见得能改变设计的代价,那么实现过程的效率,就决定了项目本身的生产效率。 说回来,这个思想和老赵的[Jscex](http://blog.zhaojie.me/tag/Jscex/ 老赵点滴 - 追求编程之美)非常类似,都是试图通过一步编译,将异步的编程模型统一为同步模型,简化开发复杂度,提升生产效率。时至如今,还想说中国的程序员搞不出创造性的东西吗? PS1:怎么去体验下C# vNext。
关于具体的实践和原理,可以看一看[C# 5.0 vNext - New Asynchronous Pattern](http://www.codeproject.com/KB/cs/async.aspx CodeProject)一文。 PS:最后说说为什么我要写这一篇。原本我是不想写关于.NET的内容的,毕竟已经有不短的时间游走在.NET社区的边缘,没有深入地研究,并不适合来发表一些自己的论点。但是看到近段时间博客园首页上依旧遍历着诸如“C#最新特性”这样的文章时,真的觉得很不舒服。C# 4.0已经出来多久了,C# 5.0都离我们只有多少距离了,我相信关于Async CTP的内容有不少喜欢逛国外博客的园友是接触过的,但是却没有一个人愿意将这些最前沿的消息分享过来…… 当然我也并不认为这个社区的每一员都有义务将自己所知道的内容分享出来,但是现在国内的.NET社区确实存在着这样的现状:大家分享的多数是已经被嚼得稀巴烂的骨头,什么“C#的可变参数”,什么“自己写一个AJAX实现”,这些或许对你个人的学习有着历史性的意义,但是这样已经存在、流传已久,几乎家喻户晓的概念,在博客园首页这样的位置传播,真的有其意义所在吗?而这些最前沿的变化、那些更加深入的探究,或者是没人接触,或者就是接触了但不愿意分享。这并不是我所希望的社区状态,如今的互联网,无论是SNS还是微博,大家都在注重着消息的传播这一环节,为什么在.NET社区里,却是死气沉沉的状态,把旧菜炒了又炒,满眼都见不到一丝亮点?
原文地址:http://www.cnblogs.com/GrayZhang/archive/2011/09/07/csharp-vnext.html 网站建设,网店建设,软件开发立即联系QQ:442518843 [email protected] 我的各种联系方式: 物流配货网 跑运输搞活经济 淘宝小店 我的腾讯微博 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论