.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的成功失败经验。

相关推荐
WineMonk1 小时前
.NET WPF CommunityToolkit.Mvvm框架
.net·wpf·mvvm
界面开发小八哥1 小时前
界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
.net·wpf·界面控件·devexpress·ui开发
九鼎科技-Leo12 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
九鼎科技-Leo14 小时前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
.net开发14 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
九鼎科技-Leo18 小时前
在 C# 中,ICollection 和 IList 接口有什么区别?
windows·c#·.net
时光追逐者19 小时前
C#/.NET/.NET Core学习路线集合,学习不迷路!
开发语言·学习·c#·asp.net·.net·.netcore·微软技术
Crazy Struggle1 天前
.NET 全功能流媒体管理控制接口平台
.net·开源项目·流媒体
.net开发1 天前
WPF使用prism框架发布订阅实现消息提示
c#·.net·wpf