.NET之后,再无大创新

回想起来,2001年发布的.NET已经是距离最近的一次软件开发技术的整体创新了,后续的新技术就没有在各个端都这么成功的了。.NET是Windows平台下软件开发技术的巨大变革。在此之前,有VB、C++(MFC)、JSP,在此之后,都整合到.NET。甚至.NET还不能完全算整体创新,因为.NET是全面模仿Java体系的。所以,软件开发技术的整体创新,真的是太久没有了。

.NET基础是CLI标准,定义了中间语言和虚拟机的规范,在此之上,.NET提供了编程语言(C#、VB.NET、C++等)、基础库和框架(FCL)和运行时(CLR)。FCL包含WinForms、ASP.NETADO.NET、Enterprise Service等,分别支持C/S架构、B/S架构和Web service、数据访问、事务处理等企业级特性。

标准:微软在2000年.NET推出之前就向ECMA提交了CLI标准,包括类型系统(Common Type System,CTS)、程序元数据、语言规范(Common Language Specification (CLS),为CTS的子集)、虚拟机(Virtual Execution System,VES)和标准库。VES定义了一门中间语言MSIL。2003年微软又提交了ISO标准。

语言:.NET定义了中间语言MSIL标准,支持单继承、方法重写、垃圾收集、异常处理、多线程、attribute(类似Java annotation)等现代化语言特性。通过标准的中间语言,不同语言的程序可以实现高度的互操作,如子类和父类可以用不同语言。支持CIL的语言最主要的是微软为.NET全新设计的C#,然后是为了原有开发者群体的VB.NET和C++扩展。微软也设计了JScript,即基于CLR的JavaScript,但很不成功。几年后微软又推出了函数式语言F#。

.NET最初的愿景中很重视Web service,为此制定了WSDL、UDDI、SOAP等一系列标准协议,ASP.NET也在原ASP的基础上增加了对开发Web service的支持。

.NET的发展大致可以从C#的使用率看。根据TOBIE统计,.NET发布后C#语言的使用率在2012年之前一路增长,在2012年初达到近9%的使用率,排名第3。同期Java的使用率一路下滑。当前全球约有600万.NET开发者。

在.NET发布的2002年,Java的使用率高达25%,C/S架构技术Swing 1997年发布,B/S及企业级架构技术Servlet、J2EE、JSP于1999年之前也已经发布,现在最流行的Spring也即将在2003年发布。.NET能够在Java体系中突围获得不错的市场份额,整体而言算是比较成功的。

成功的原因:

  • 微软有非常好操作系统和开发者的基础。在2002年左右,Windows在桌面市场绝对领先,在服务器市场也处于优势地位,在VB、C++、ASP和Visual Studio上也处于优势地位,有很好的开发者基础。对于在Windows平台做应用的开发者来说,.NET是官方主推的技术,不得不学,类似于苹果可以强推Swift。

  • 产品技术能力全面、强大。.NET一发布提供的库和框架就非常完整,在支持Web service上比Java更好,企业级功能比EJB的设计更好。在Windows平台上的性能远超Java。支持attribute比Java annotation早。

  • 在早期就制定了ECMA和ISO国际标准。不过因为Java没有制定标准而是采用JCP社区组织来形成事实标准,所以标准也不是必须的。

但.NET整体还是相对Java处于守势,未能获得更大成功的原因:

  • 绑定Windows(虽然也有开源社区做的Mono,但一直不成熟),受到Windows在Server端失势影响。

  • 虽然制定了标准,但没有引入有影响力的别的厂商来做企业级和应用服务器生态,缺乏Java系的WebShpere、WebLogic和JBoss,特别是巨头IBM的WebShpere。

  • 没有做好开源,没有像Java那样培育出Spring、Struts、Hibernate、MyBatics、MySQL、Tomcat等开源生态。

今天要做软件开发技术的创新,要先研究清楚Java和.NET的成功失败经验。

相关推荐
de之梦-御风2 小时前
【进阶编程】MVVM框架的每层对应那些业务
.net·个人开发·mvvm
Zhen (Evan) Wang3 小时前
利用.NET Upgrade Assitant对项目进行升级
.net
界面开发小八哥3 小时前
DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(二)
ui·.net·wpf·界面控件·devexpress·ui开发
大G哥4 小时前
深入理解.NET内存回收机制
jvm·.net
小码编匠6 小时前
WPF 星空效果:创建逼真的宇宙背景
后端·c#·.net
一只小灿灿1 天前
VB.NET在 Excel 二次开发中的全面应用
.net·excel
码农君莫笑1 天前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
liyongqiangcc1 天前
了解 ASP.NET Core 中的中间件
.net
Kiros_Jiang1 天前
开源低代码平台-Microi吾码 打印引擎使用
javascript·开源·json·.net·pip