.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.NET、ADO.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开发者。

d4ef738d5010fd2e74ec48ddddb77d55.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端使用elementui开发后台管理系统的常用功能(持续更新)

前言:本次的文章完全是自己开发中遇到的一些问题,经过不断的修改终于完成的一些功能,当个快捷的查看手册吧~ elementui开发后台管理系统常用功能 高级筛选的封装elementui的表格elementui的表格实现跨页多选回显elementui的表单elementui的日…

[LeetCode周赛复盘] 第 112场双周赛20230903

[LeetCode周赛复盘] 第 112场双周赛20230903 一、本周周赛总结2839. 判断通过操作能否让字符串相等 I1. 题目描述2. 思路分析3. 代码实现 2840. 判断通过操作能否让字符串相等 II1. 题目描述2. 思路分析3. 代码实现 2841. 几乎唯一子数组的最大和1. 题目描述2. 思路分析3. 代码…

如何修复老照片?老照片修复翻新的方法

老旧照片,尤其是黑白照片,往往因为年代久远、保存方式不当等原因而出现褪色、污损、划痕等问题,会比较难以修复,就算是技术精湛的专业修复师,也是需要投入极大时间精力的,效果也是不可预料的。 修复老照片…

【JUC系列-04】精通Synchronized底层的实现原理

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

AlmaLinux 经济收益增加,红帽 RHEL 源码限制不成威胁

导读红帽在两个月前发布公告表示,将限制对 Red Hat Enterprise Linux (RHEL) 源代码的访问,未来 CentOS Stream 将成为公共 RHEL 相关源代码发布的唯一仓库。对于这一决策,AlmaLinux OS Foundation 主席 Benny Vasquez 则向 SiliconANGLE 表示…

IIS WebDAV配置,https绑定及asp设置

IIS支持标准CGI,因此可以用程序语言针对STDIN和STDOUT开发。 IIS CGI配置和CGI程序FreeBasic, VB6, VC 简单样例_Mongnewer的博客-CSDN博客 IIS支持脚本解释CGI,因此可以用脚本语言针对STDIN和STDOUT开发。 IIS perl python cbrother php脚本语言配置…

开始投简历了

歇了好长时间,也该开始找点事情折腾了。 第一周基本上是没有什么太多的消息,大部分情况就是收到回复的邮件说你很优秀,希望下次合作这种礼节性的拒绝邮件。 给人有点感觉都是在忽悠,有点感觉现在的公司一边到处拒绝,…

草图大师SketchUp Pro 2023 for Mac

SketchUp Pro 2023 for Mac(草图大师)是一款专业的三维建模软件,由Trimble Inc.开发。它可以用于创建、修改和分享3D模型,包括建筑、家具、景观等。 SketchUp Pro 2023 for Mac提供了简单易学的用户界面和强大的工具集&#xff0…

【Kubernetes理论篇】2023年最新CKA考题+解析

文章目录 第一题:RBAC授权访问控制第二题:Node节点维护第三题:K8S集群版本升级第四题:ETCD数据库备份恢复第五题:NetworkPolicy网络策略第六题:Service四层负载第七题:Ingress七层负载第八题&am…

【Redis】Redis 通用命令、键的过期策略

文章目录 一、基础命令SET 和 GET 二、全局命令KEYSEXISTSDELEXPIRE 和 TTL经典面试题:Redis 中 key 的过期策略是怎么实现的TYPE Redis 有许多种数据结构,但是这些数据结构的 key 的类型都是字符串类型的(所以说,Redis 不同的数据…

leetcode 1002. 查找共用字符

2023.9.6 个人感觉这题难度不止简单,考察到的东西还是挺多的。 首先理解题意,可以将题意转化为:求字符串数组中 各字符串共同出现的字符的最小值。 分为三步做: 构造一个哈希表hash,初始化第一个字符串的字母出现频率…

GIS:DataStore数据管理框架

1.架构设计 OGC 规范对空间矢量数据的框架进行了设计,GeoTools 对其进行了实现。其中的 DataStore 可以近似理解成关系数据库中的个数据库实例,FeatureSource 可以近似理解成关系数据库中的一张表。 DataAccess 接口主要对空间要素类型的相关信息的构建…

2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策

1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

OJ练习第164题——具有所有最深节点的最小子树

具有所有最深节点的最小子树 力扣链接:865. 具有所有最深节点的最小子树 力扣链接:1123. 最深叶节点的最近公共祖先 题目描述 给定一个根为 root 的二叉树,每个节点的深度是 该节点到根的最短距离 。 返回包含原始树中所有 最深节点 的…

【AI Agent】Agent的原理介绍与应用发展思考

文章目录 Agent是什么?最直观的公式Agent决策流程 Agent 大爆发人是如何做事的?如何让LLM替代人去做事?来自斯坦福的虚拟小镇架构记忆(Memory)反思(Reflection)计划(Plan) 类 LangC…

第6章 内核模块符号导出实验(iTOP-RK3568开发板驱动开发指南 )

在上一小节中,给大家讲解了驱动模块传参实验,使用insmod命令加载驱动时可以进行参数的传递,但是每一个内核模块之间是相互独立的,那模块间的符号传递要怎样进行呢,让我们带着疑问来进行本章节的学习吧! 6.…

uni-app 折叠自定义

uni-app的uni-collapse折叠组件样式修改 下面是修改后的样式 <uni-collapse accordion class"ze" v-model"isCollapse" click"toggleCollapse"><!-- 因为list默认带一条分隔线&#xff0c;所以使用 titleBorder"none" 取消…

反序列化漏洞复现(typecho)

文章目录 执行phpinfogetshell 执行phpinfo 将下面这段代码复制到一个php文件&#xff0c;命名为typecho_1.0-14.10.10_unserialize_phpinfo.php&#xff0c;代码中定义的类名与typecho中的类相同&#xff0c;是它能识别的类&#xff1a; <?php class Typecho_Feed{const…

day5 qt

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);timer_idthis->startTimer(100);//啓動一個定時器 每100ms發送一次信號ui->Edit1->setPlaceholderTex…

Python UI自动化 —— 关键字+excel表格数据驱动

步骤&#xff1a; 1. 对selenium进行二次封装&#xff0c;创建关键字的库 2. 准备一个表格文件来写入所有测试用例步骤 3. 对表格内容进行读取&#xff0c;使用映射关系来对用例进行调用执行 4. 执行用例 1. 对selenium进行二次封装&#xff0c;创建关键字的库 from time imp…