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

相关推荐
2601_962072554 小时前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos
步步为营DotNet1 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf
咸鱼翻身小阿橙1 天前
VS2008 + .NET3.5 环境、加热台TCP通讯场景
tcp/ip·php·.net
tonydf1 天前
DotNet项目接入Copilot SDK简单案例
后端·.net·github copilot
ABprogramming1 天前
Aspire入门指南
c#·.net
User_芊芊君子1 天前
鸿蒙PC适配:Pinta GTK 图像编辑器鸿蒙 PC ArkWeb 适配全记录:从 .NET_GTK4 桌面到 HarmonyOS PC HAP
编辑器·.net·harmonyos
ServBay2 天前
你跟高级 C# 工程师的区别,就是这8个开发技巧
后端·c#·.net
小满Autumn3 天前
log4net 日志框架 — 从配置到实战速查手册
笔记·c#·.net·wpf·上位机·log4net
ceclar1233 天前
C# 的任务并行库(TPL)
开发语言·c#·.net