当前位置: 首页 > news >正文

.NET是什么

.NET这个名字起名的渊源年轻一点的开发者可能还真不了解。C#是语言相对好理解一些,但.net确实让不了解的人感觉抓不住重点。要摊开讲其实要加一点历史背景。

.NET是在2002年推出的,当时这是作为一个品牌商标推出的,在推出时,在.NET品牌旗下一并推出的,有好多个产品,而并不是特指某种特定产品。而发展到现在,.NET已经不再是一个品牌,而是退化成为表示.net Framework的运行时或SDK了。

先谈谈历史背景。在2000左右的时间, 互联网概念刚刚兴起,各大网站雨后春笋一般出现。在这个时代,一切技术都在向互联网靠拢。MS为了顺应这个潮流,准备搞新一代的开发环境和相应的技术解决方案,为了抓眼球提出了“新一代互联网”的概念。为了给概念一个实际的解决方案,微软决定推一个响当当当的品牌,然后围绕这个品牌推出一系列的产品,以形成一整套的解决方案。至于这个品牌的命名,当时有几种说法:

第一种说法:当时认为".com"为当代互联网的代表,因为一切都是给".com"的网站服务的,新生的互联网公司都把自己的网址作为自己最吸引人的标签,甚至从业人员都以把名片上印上例如http://abc.com之类的域名为荣。".com",俨然成为业界时髦。而根据域名后缀的分类,".com"代表的是corporation,还是传统意义的公司。而另一个著名的tld ".net",才是代表互联网的域名,所以微软就灵机一动推出一个新品牌".net"代表为新一代互联网服务的产品集合,以用来宣传当时的全套微软新产品。微软把旗下一揽子产品都用上了这个品牌。

第二种说法:当时微软的产品都以COM的方式提供接口,而新一代的API其实是把COM封装起来又构建了一层,COM+的名字当时已经作为了COM的新一代,总不能叫COM++,那就COM改NET了。

还有几种流传下来的说法是NET其实是某种缩写,实际上已经不可考了。

.NET的品牌推的时候其实是力度很大的,然而几年之后并没有被人彻底接受,也不知是名字的锅还是其他原因。这个品牌也就没有作为整体战略继续坚持,品牌名下不同产品在后来的岁月中有不同的表现和演化:

  • 最核心的运行库框架叫.Net Framework,它提供了新一代的面向互联网开发的API和相应SDK,终极目标是替换掉Win32 API,然而到现在也没替换掉。
  • 开发工具叫Visual Studio .Net(就2002和2003这2代VS带了这个后缀,随后的Visual Studio就把.NET去掉纯粹以年份命名)。
  • 一门全新的编程语言Visual Basic .Net。其全面沿袭了Visual Basic的语法,但是只能跑在.Net Framework这个运行时之上。愿意是吸引庞大的VB开发者,但是实际上是一个除了语法像VB但完全不兼容旧VB的新语言。这货虽然奇葩,但是确实起到了作用,至今http://VB.Net在TIOBE排行榜上仍然能占据第六名。
  • 用于互联网服务器端动态网页技术的叫http://ASP.NET,用来替换ASP这套玩意儿。这东西倒是发展到现在还没改名。最终发展到http://ASP.NET 5。 在很长一段时间内,它与PHP并列成为中小型动态网页项目的2大主流选择,当然后来被Java/JSP碾压而过。http://ASP.NET因为其优秀的开发环境和开发上手速度,至今仍跑在很多企业的内网服务器上,因为这部分客户精准但相对固定的需求,再加上企业的只要能用才不想做技术迭代的特点,让http://ASP.NET的使用者仍然众多。基本上,http://ASP.NET可以说是整个.net家族中实际应用最广泛的项目了。同时,万恶的web form也成为老一代开发者的噩梦。
  • 一套通用认证授权框架叫做.Net Passport。这套东西很超前,在非常早就提出了SSO的概念,它作为统一互联网入口的愿景也十分宏大,然而微软的互联网战略在那个年代被其它互联网公司吊打,这套认证产品的命运也最惨,光改名的次数就十分多。.Net Passport => Live ID => Windows Live ID => Microsoft Account。这里面的Live其实是微软后几年为互联网业务推的另外一个品牌,当然,也没有取得很大成功。这个 品牌下面的产品也像.NET一样也有很曲折的故事,例如MSN Messenger => Live Messenger => WLM => 并入Hotmail。说回.Net Passport,它现在唯一的存在感是在每次登录微软产品时闪过的http://login.live.com这个域名中。当然它的SSO的框架和理念已经早就在业界使用多年,只是没有作为微软的方式使用而已,微软自己的AAD其实也延续了这套东西,只是并非同一产品。

不管发展如何,这一套东西大家习惯于统称.NET技术。.NET一族发展了近20年,.Net Framework从1.0都发到了4.7,旗下语言和框架也有不少迭代,但是从现在看来它实在是有些跟不上时代了。由于历史负担太重,微软干了一件好玩的事:把它推到重来

一般推倒重来这种事情,要么换名字,要么换版本号体系,总之要与之前产品尽可能分割才好。伟大的微软改名部从来都出人意料之外,新产品名字叫.Net Core,看起来像是.NET旗下的产品但是实际是一套重起炉灶的产品。它版本号又从1.0开始。标榜重新实现了.Net Framework。微软又为了避免已有开发者责难它抛弃老用户,决定继续保留.Net Framework以及http://ASP.NET产品,两条线并行发展。显而易见,这带来了史无前例的混乱。

折腾到现在,提到这些名字都要小心做区分:

  • 大家一般不加修饰的说.NET,已经不再指.NET这个品牌,而是退化成指.Net Framework这套运行时框架。如果提到.NETCore的话就一定要加上core的后缀避免混淆。当然也有人坚持.NET指.Net Framework和.Net Core的统称,这是小众看法。
  • http://VS.Net已经消失在历史长河中估计没人还记得了。
  • http://VB.Net用户量还很大但是持续萎缩中,恐怕也多数为开发传统.Net Framework上的老框架的产品。
  • http://ASP.NET原本为运行在.Net Framework之上的网页框架,但是由于新老两条线并行发展,在.Net Core上也出现了http://ASP.NET Core这个新的产品,导致开发者都搞不清楚其中的组合。这玩意讨厌人的地方是一度http://ASP.NET Core除了能跑在.Net Core上竟然还可以跑在.Net Framework上,从http://ASP.NET Core 3.0才跟.Net Framework彻底切割。所以根据版本不同,有n种奇葩运行时+框架的搭配方法。所以如果没有必要,别去纠结各种版本的区别,把自己陷进去不好玩。只专注于最新的http://ASP.NET Core就好。

现在,对于新手而言,专注于.Net Core就好,其它不要关心,只把它认为是一套运行时和SDK即可,而C#则是在这个运行时上的主要编程语言。就如同JVM/JDK和Java的关系即可。http://ASP.NET Core则可以认为是相当于JSP。

总体来说,.Net一系列产品确实是一套好东西。值得花精力去学习使用。新手建议直接上手.Net Core 3.1,C# 8.0,和http://ASP.NET Core 3.1。这是一个特性相对成熟,且LTS的版本。以看花边新闻的心态看所有老版本的产品,不带任何历史包袱。

未来(不远了就明年),.Net Framework和.Net Core将会再合体成为.NET 5.0(改名部的神奇操作你永远不懂)。到时候是终结一切混乱还是成为新的坑新手神器就请拭目以待。

相关文章:

  • PDFPlumber使用入门
  • OFD格式详解
  • IDA Pro 搜索中文字符串
  • C 标准库 - <stdio.h>
  • putc与stdin,stdout,stderr
  • C++ IO标准库 文件操作
  • 单点登录是什么
  • 认证与授权
  • Linux常用命令英文全称与中文解释
  • Linux相关概念
  • 指针与句柄的区别
  • 持续集成是什么
  • PaddlePaddle-飞桨
  • anaconda
  • CUDA详解
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • PAT A1120
  • PHP 小技巧
  • Travix是如何部署应用程序到Kubernetes上的
  • vue的全局变量和全局拦截请求器
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 计算机常识 - 收藏集 - 掘金
  • 区块链技术特点之去中心化特性
  • 如何学习JavaEE,项目又该如何做?
  • 实现菜单下拉伸展折叠效果demo
  • 数据可视化之 Sankey 桑基图的实现
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我的zsh配置, 2019最新方案
  • 与 ConTeXt MkIV 官方文档的接驳
  • # centos7下FFmpeg环境部署记录
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • ${factoryList }后面有空格不影响
  • (13):Silverlight 2 数据与通信之WebRequest
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (vue)页面文件上传获取:action地址
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三分钟)速览传统边缘检测算子
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET6实现破解Modbus poll点表配置文件
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [2023年]-hadoop面试真题(一)
  • [2023-年度总结]凡是过往,皆为序章
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C# 开发技巧]实现属于自己的截图工具
  • [C#基础]说说lock到底锁谁?