什么是.Net?-程序员宅基地

技术标签: 认识.Net  ASP.Net  .net  

.NET 是一个开发平台,或者叫开发者平台。使用 .NET 你可以创建不同类型的应用程序,使用多种开发语言、编辑器和工具库创建网页、手机、桌面以及游戏等应用。其核心特点是:免费、开源和跨平台。

1.语言和平台

我们先来理解一下什么是 .NET 开发平台。

简单说,开发平台就是为应用软件开发提供的一个工作平台。.NET 开发平台主要包括公共语言运行时(CLR)和框架类库(FCL)。其中 FCL 包含基础类库(BCL)和 ASP.NET (Core)、ADO.NET、WPF、WinForm 等框架类库。

经常会听到有人拿 .NET 与 Java 对应。严格来说是不对的,与 Java 对应的是 C#,与 JVM 对应的是 CLR,与 JDK 对应的是 .NET Framework/.NET Core/.NET 5+ SDK。JVM 上有多种语言,CLR 上也有多种语言。比如 JVM 上有 Java、Scala、JPython 等,CLR 上有 C#、F#、IronPython 等。

当然,平时我们不必刻意去区分对应关系。当我们听到有人把 .NET 与 Java 对应时,也完全不必较真。因为 C# 语言在 .NET 平台的市场上占据了绝对主导的地位,所以人们默认就把 .NET 与 C# 绑在了一块儿。比如人们习惯了说 .NET 生态和 Java 生态,而很少听说 C# 生态。

还有人把 .NET 等同于 .NET Framework 或 .NET Core。准确的来说也是不对的,.NET 是开发平台,.NET Framework 是在 .NET 平台上针对 Windows 系统实现的开发框架,.NET Core/.NET 5+ 是在 .NET 平台上实现的支持多操作系统的跨平台开发框架。

2.主要特点

前面说到了 .NET 的核心特点是免费、开源和跨平台。即,它的开源协议是最开放的 MIT 协议,允许在任何商业环境中使用。它的跨平台特性使得它可以它可以运行于任何环境,如 Windows、Linux、macOS、iOS、watchOS 和 Docker 等。

.NET 的另一个我最喜欢的特点是:大生态。来看一张来自官网的图:

3.多语言支持

你可以使用多种语言来编写 .NET 应用程序,主流的语言有:C#, F# 和 Visual Basic。

  • C# 是一种简单、现代、面向对象和类型安全的编程语言,其名字的意义源于 C++,并受到了五线谱中的升号 # 的启发。它在 C++ 的基础上再 ++ ,就是 4 个 +,即 #,恰好和五线谱中的 #(sharp) 一样。所以 C# 读作 [si:'ʃɑrp],不要读成 C 井哦。
  • F# 是一种跨平台的、开源的函数式编程语言。它还包括面向对象和命令式(Imperative)编程。它为那些熟悉函数式编程语言的人转换到 .NET 平台提供了便利。函数式编程在某些场景下比面向对象编程更方便高效,有其自身特点,是对 .NET 平台的一个有益补充。
  • Visual Basic,简称 VB,是一种接近人类语言的语言。它的语法简单,易学,一般用于建立基于事件驱动的视窗应用程序。很多传统企业和小公司还在用。现在很多人学 VB 语言主要是为了 VBA 编程,使用 Excel 自动化办公。

当年也出现了像 IronPython、IronRuby、IronScheme 等,不过这些项目已经死掉了。

4.多开发工具支持

你可以使用多种工具来进行 .NET 编程,有强大的 Visual Studio、轻小的 Visual Studio Code 和 JetBrains 出品的 Rider 等。

  • Visual Studio:Windows 上功能齐全的集成开发环境(IDE),用于构建各种类型的 .NET 应用程序。还有专为 MacOS 打造的兄弟款:Visual Studio for Mac。
  • Visual Studio Code:可在 Linux、macOS 或 Windows 上开发,建立跨平台网站和服务,需安装 C# 扩展。
  • JetBrains Rider:JetBrains 出品,体验也不错,它使用的是 IntelliJ 和 ReSharper 技术构建的跨平台 .NET IDE。
  • OmniSharp: 它使 Atom、Sublime Text、Emacs 和 Vim 等编辑器支持跨平台 .NET 开发。

5.人们的误解

至今我还偶尔会看到网上的一些评论说,.NET 是闭源的、收费的、只能在 Windows 上跑等言论。这些都是误解,早在2016年之后.Net已经完全开源了,对于这些人的评论,我只能一笑而过。。。

还有人认为 .NET 的性能低,这也是老旧观念了。从 .NET Core 成熟后,其性能和 Go 旗鼓相当。在 Web 综合性能方面,其性能高出 Node.js 的 7 倍多(.NET 5 高出 10 倍多)。

还有很多人认为 .NET 是由微软自己开发和维护的,其实不完全是。自 .NET 开源以来,参与建设 .NET 平台的有微软自己的团队,也有来自世界各地的 6 万多名开发者和 3700 多家公司。另外,早在 2014 年,微软就成立了 .NET 基金会,有微软、Google、三星等大厂扶持,用来推进 .NET 平台的发展。

.NET 热情拥抱了开源和跨平台,开发市场也在热情地拥抱 .NET,越来越多的开发人员和公司参与到了 .NET 的大家庭中。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Sx_Oracle/article/details/118516196

智能推荐

Irrlicht学习笔记(7.1)--Collision_irrlicht 拾取-程序员宅基地

文章浏览阅读1.3k次。1.说明:这个例子介绍:碰撞检测在高低的3D世界移动.需要做的事包括:获得能碰撞的三角形集合,创建一个用于碰撞检测的特殊动画,设置相关参数绑定到摄像机节点上碰撞检测在原来的基础上进行修改,实现在地图中漫游,且有碰撞检测.2.2.1场景节点声明为:scene::IMeshSceneNode* q3node =0;以使用相关方_irrlicht 拾取

代码重构实践之背景_重构背景-程序员宅基地

文章浏览阅读410次。从事代码重构已经很多年,特别是目前手头维护的几个软件,在开始接手时,面临着没有交接、代码基本没有注释、代码风格各种各样,接手该软件的人员也是已经换了2,3波了。总体来看,代码是没有开发经验的人员写的,虽然是用C++编写的代码,但是风格还是C风格。基本没有Class,更加没有面向对象的思想在具体代码中的应用。整个代码逻辑是面向过程的,99%都是结构体的数据结构。维护的人员,可能没有弄懂代码逻辑,..._重构背景

Socket请求_JAVA实现TCP通信_java如何组json包,请实现tcp通讯?-程序员宅基地

文章浏览阅读795次。1、服务器端socket创建ServerSocket对象,绑定监听端口。通过accept()方法监听客户端请求。连接建立后,通过输入流读取客户端发送的请求信息。通过输出流向客户端发送响应信息。关闭响应的资源。2、客户端socket创建Socket对象,指明需要连接的服务器的地址和端口号。连接建立后,通过输出流向服务器发送请求信息。通过输入流获取服务器响应的信息。关闭相应资源。..._java如何组json包,请实现tcp通讯?

关于VMware安装后没有虚拟网卡VMnet8的解决办法_vmnet8更新-程序员宅基地

文章浏览阅读9.6k次,点赞10次,收藏27次。vmware安装后没有虚拟网卡,这个问题的实质是因为上一次卸载虚拟机没有清理掉原有的注册表导致的。解决办法很简单,这里需要说明的是,每个人的情况不尽相同,或许还有别的原因导致没有虚拟网卡。下载注册表清理工具ccleaner下载地址为:http://www.ccleaner.com/ccleaner/download使用该工具将检测到的无效注册表清理掉,需要注意的是如果担心有风险,工具..._vmnet8更新

树莓派4B安装pyqt5_树莓派安装pyqt5的依赖项-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏24次。前提我在网上看到好多博客都说pyqt5直接apt安装即可,但是每次我运行sudo apt install python3-pyqt他都显示已是zui'xin_树莓派安装pyqt5的依赖项

SQL:我为什么慢你心里没数吗?-程序员宅基地

文章浏览阅读87次。SQL 语句执行慢的原因是面试中经常会被问到的,对于服务端开发来说也是必须要关注的问题。在生产环境中,SQL 执行慢是很严重的事件。那么如何定位慢 SQL、慢的原因及如何防患于未然。接下来带着这些问题让我们开启本期之旅!- 思维导图 -写操作作为后端开发,日常操作数据库最常用的是写操作和读操作。读操作我们下边会讲,这个分类里我们主要来看看写操作时为什么会导致 SQL 变慢。刷脏页脏页的定义是这样的..._sql:我为什么慢

随便推点

android默认壁纸的历史,Android 默认壁纸 简单分析-程序员宅基地

文章浏览阅读393次。Android的背景墙纸功能的实现主要由散布在下面几个文件中的类来完成:(1)frameworks/base/core/java/android/app/WallpaperManager.java提供了API类,类WallpaperManager的各种函数接口为应用开发者所使用。(2)frameworks/base/services/java/com/android/server/Wallpape..._android 10 默认壁纸 在什么位置

docker-compose部署Nextcloud_nextcloud docker-compose-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏3次。配置安装docker docker-compose 到部署nextcloud_nextcloud docker-compose

telnetd的小问题_telnetd和telnet-程序员宅基地

文章浏览阅读1.2k次。把/etc/inetd.conf文件中的Telnet项中在最后的telnetd改成telnetd -k180 -K5 -N3。意思为该telnet 连接在闲置180秒后,每隔5秒钟发一次在线查询信号给终端,如发三次后,每次均无应答,则断开此telnet 连接,并删除相对应的进程。这样即使不正常关机 也不会留下多余的进程。_telnetd和telnet

QChart 使用appened添加数据点画图,数据量较大时画图慢、卡顿的解决方法_qt绘制曲线卡顿-程序员宅基地

文章浏览阅读6.9k次,点赞6次,收藏39次。对于QChart,一个稍微能缓解卡顿的方案就是:series->setUseOpenGL(true);OpenGL画图快,是牺牲了一些其他性能的,具体参考Qt文档。目前我画1.5万个点,可以说是秒出,还是挺快的。经过测试:不使用openGL时,单条曲线3000个点左右就卡的不行了,界面中的其他按钮几乎卡的点不了,chart图形也更新不动了。使用openGL之后,我测试采集了4万多个点,显示依然正常,用鼠标移动图像时,略有卡顿,但卡顿很轻可以接受,用鼠标框选放大也没问题,界面中的其他按钮响应很快_qt绘制曲线卡顿

在CentOS7系统上安装nginx配置ssl证书和二级域名解析_centos 二级域名 ssl服务-程序员宅基地

文章浏览阅读524次。在CentOS7系统上安装nginx配置ssl证书和二级域名解析通过yum安装nginx安装rpm包rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装nginxyum install -y nginx查看nginx版本nginx ..._centos 二级域名 ssl服务

vs2019的安全检查、万能头文件问题_vs2019导入万能头文件-程序员宅基地

文章浏览阅读338次。①在我的电脑中检索newc++file.cpp,然后打开后加入下面这句话,再ctrl+s保存,这样每次新建一个项目开头都会自动加上这句#define _CRT_SECURE_NO_WARNINGS 1②这个方法最简便https://www.cnblogs.com/pgzhang/p/9072217.html..._vs2019导入万能头文件

推荐文章

热门文章

相关标签