近日,《上海市卫生健康“信息技术应用创新”白皮书》(以下简称《白皮书》)正式发布,介绍了“医疗信创核心应用适配方法、公立医院信息系统及全民健康信息平台信创设计思路”, 其中发现了一个错误的认知,C#/.NET 被认定为A 组件, 具体详见下图:

C#/.NET 平台需要被区分为两个阶段:.NET Core 1.0 对应的 C# 版本是 C# 7.0 为界线,我们来看下C# 的发展历程:

  1. C# 1.0(2002年1月):作为与 Visual Studio .NET 2002 一起发布的版本,C# 1.0 在设计上受到了 Java 的影响。它的主要功能包括类、结构、接口、事件、属性、委托、运算符和表达式、语句以及特性,运行平台.NET Framework 1.0/Mono 1.0。

  2. C# 2.0(2005年11月):此版本引入了泛型、匿名方法和迭代器等特性,大幅提高了语言的灵活性和性能,运行平台.NET Framework 2.0/Mono 2.0。

  3. C# 3.0(2007年11月):这个版本伴随着 .NET 3.5 的发布,引入了LINQ、匿名类型、隐式类型的局部变量、对象和集合初始化器、扩展方法、查询表达式、Lambda 表达式等特性, 运行平台.NET Framework 3.5/Mono 2.0。

  4. C# 4.0(2010年4月):增加了动态绑定、命名和可选参数、泛型协变和逆变、嵌入的互操作类型等特性, 运行平台.NET Framework 4.0/Mono 2.0。

  5. C# 5.0(2012年8月):此版本引入了异步编程、调用方信息、协变返回类型和成员等特性, 运行平台.NET Framework 4.5/Mono 3.0。

  6. C# 6.0(2015年7月):引入了自动属性初始化器、表达式体成员、字符串内插、空合并运算符、异常过滤器等特性, 运行平台.NET Framework 4.8/Mono 4.4,在2014年成立了.NET基金会。

  7. C# 7.0(2017年3月):增加了 out 变量、元组、模式匹配、局部函数、ref 局部变量和返回、扩展异步返回类型等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET Core 1.0。

  8. C# 7.1 和 7.2:这两个小版本分别在 2017 年 8 月和 2017 年 11 月发布,引入了默认表达式、异步 Main 方法、推断元组名称、数字分隔符、ref 结构、in 参数等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET Core 2.0。

  9. C# 8.0(2019年9月):引入了可空引用类型、异步流、范围和索引、默认接口方法、只读成员、解构委托等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET Core 3.1。

  10. C# 9.0(2020年11月):随 .NET 5 一起发布,引入了记录、仅限 Init 的资源库、顶级语句、模式匹配增强、本机大小的整数、函数指针等特性 , 运行平台.NET Framework 4.8/Mono 6.12/.NET 5.0。

  11. C# 10(2021年11月):引入了记录结构、结构类型的改进、内插字符串处理程序、global using 指令、文件范围的命名空间声明、扩展属性模式、对 Lambda 表达式的改进、可使用 const 内插字符串、记录类型可密封 ToString()、改进型明确赋值、在同一析构中可同时进行赋值和声明、可在方法上使用 AsyncMethodBuilder 属性、CallerArgumentExpression 属性、增强的 #line pragma 等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET 6.0 。

  12. C# 11(2022年11月):增加了原始字符串字面量、泛型数学支持、泛型属性、UTF-8 字符串字面量、字符串内插表达式中的换行符、列表模式、文件本地类型、必需的成员、自动默认结构、常量 string 上的模式匹配 Span、扩展的 nameof 范围、数值 IntPtr、ref 字段和 scoped ref、改进了方法组向委托的转换、警告波 等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET 7.0 。

  13. C# 12(2023年11月):引入了主构造函数、集合表达式、内联数组、Lambda 表达式中的可选参数、ref readonly 参数、创建任何类型的别名、试验性属性、拦截器等特性, 运行平台.NET Framework 4.8/Mono 6.12/.NET 8.0.

我们从C# 的发展历程来看,他的运行平台一共有3个 Windows上的.NET Framework, 以及跨平台(Windows/Linux/Macos)运行的mono 和.NET Core/.NET , 从时间线上来看2014年成立.NET基金会是一个分水岭,2020 .NET 5的发布(2019年新冠疫情的爆发,统一的.NET时间变成了2020年),把.NET Framework/Mono/.NET Core 这三大平台开始统一为.NET,下面这张图来自我2019年参加华为云的一个演讲PPT《面向 .NET 和 .NET Core 开发人员的华为云》。

C# 从他的诞生之日就是标准的ECMA 334/335 标准,JavaScript 最初由 Netscape 开发,现在由 ECMA 标准化的 ECMAScript 版本广泛应用于网页开发。这些语言的标准化工作有助于确保不同平台和环境之间的兼容性和互操作性。

从标准化角度来说,把C#归类为A组件是完全错误的,从开源项目和版权归属来说C# 在2014年成为开源项目,并且所有的版权和专利都归属社区中立的.NET 基金会。Java 语言由 Sun Microsystems 开发,后来成为 Oracle 的一部分。Java的版权都归属Oracle,因此C#应当归类为浅蓝色的开源组件。

.NET 平台现在是指从(.NET 5.0开始的) 统一的C# 运行平台, 他的知识产权归属方是.NET基金会,使用最宽松的MIT和Apache 2开源协议,文档协议遵循CC-BY。这将允许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示,后者协议将会除了为用户提供版权许可之外,还有专利许可,并且授权是免费,无排他性的(任何个人和企业都能获得授权)并且永久不可撤销。早在2022年微软就已经特别公告过 .NET 不受 美国出口管理条例(EAR) 的约束。微软已经在出口软件页面https://www.microsoft.com/en-us/exporting/exporting-information.aspx 明确了.NET的所有版本(除了老的.NET Framework)不遵守美国出口管理条例EAR: https://www.bis.doc.gov/ ,因此我们完全不需要担心存在“断供”问题。

中国信通院在2022 | OSCAR开源产业大会 大会上发布的 全球开源生态研究报告里 首次提出 开源社区成熟度度量模型,.NET 是法律合规表现出色,组件许可证兼容性较高。.NET开源生态是基于MIT 和 Apache 2.0 协议基础上构建的,对于商业是友好的。

大家也可以下载信通院的《全球开源生态研究报告(2022年)》:http://www.caict.ac.cn/kxyj/qwfb/bps/202209/P020220916644891972234.pdf

在国内,同样有这么一支在龙芯旗下的.NET编译器团队,他们在参与dotnet的核心开发,当然还有很多社区同学也在参与dotnet 的开源协作。龙芯.NET 团队已经发布了.NET Core 3.1和 .NET 6、.NET 7和.NET 8 , 他们也正在准备着发布.NET 9。具体可以关注他们的产品官网 http://www.loongnix.cn/zh/api/dotnet/

中科院软件所还有一个团队在移植 RISC-V的工作。

OpenEuler 社区对.NET 的支持也是完整的。 OpenEuler 社区的李洋 在2023年12月份 中国 .NET 开发者峰会2023 上大家分享《openEuler社区对.NET的兼容支持介绍》,资料和视频参见

.NET 中文社区的网站


上海市卫生健康“信息技术应用创新”白皮书,这样的内容作为白皮书向全社会发布,需要遵守公平、公正的原则。 这里呼吁相关白皮书的发布单位及时纠正其中的错误。

呼吁 《上海市卫生健康“信息技术应用创新白皮书》改正 C# 被认定为A 组件是错误认知的更多相关文章

  1. .NET 是信息技术应用创新产业重要参与者

    今天是国庆节,也是中秋节,月满中秋,举国欢庆,在这里祝各位开发者中秋国庆快乐. 放假在家就想把这几年对于.NET发展相关生态做个梳理,写一篇文章来总结一下这两年从腾讯出来自己创业,推动.NET在国内的 ...

  2. OneAPM 获得“2018中国 IT 服务创新奖”,彰显技术创新实力

    6月30日,主题为“智能服务 数字中国”的中国 IT 服务创新大会在京召开.作为第22届中国国际软件博览会的重头戏,本次大会由工业和信息化部.北京市人民政府共同主办,中国电子工业标准化技术协会信息技术 ...

  3. 9102 IT人保持记忆力及健康的方法

    做技术时间久了,我们会发现有的时候我们会感觉记忆力衰减太快,前脚刚忙完的事或者刚做完计划任务没多久就遗忘了,或者是以前轻车熟入的方法死活都记不起来了,亦或者之前学习一门技术很快就掌握真谛,现在即便花N ...

  4. IT行业的创新的读后感

    一.什么是创新 创新是以新思维.新发明和新描述为特征的一种概念化过程.它原意有三层含义,第一,更新:第二,创造新的东西:第三,改变.创新是人类特有的认识能力和实践能力,是人类主观能动性的高级表现形式, ...

  5. IT行业创新的读后感

    一.什么是创新 创新是以新思维.新发明和新描述为特征的一种概念化过程.它原意有三层含义,第一,更新:第二,创造新的东西:第三,改变.创新是人类特有的认识能力和实践能力,是人类主观能动性的高级表现形式, ...

  6. 2017人工智能元年,AI在喧嚣和质疑中一路走来

    前百度首席科学家吴恩达说:就像100年前的电力.20年前的互联网一样,AI也会改变每一个产业! 有人说,现在就像1995年,那一年,第一家互联网公司--网景上市,一天之内大涨208%,互联网正式登上历 ...

  7. 一文解读AIoT (转)

    AIoT即AI+IoT,指的是人工智能技术与物联网在实际应用中的落地融合.目前,越来越多的行业及应用将AI与IoT结合到了一起,AIoT已经成为各大传统行业智能化升级的最佳通道,也是未来物联网发展的重 ...

  8. .NET 在信创常用软件适配清单之中?

    2020年8月份写了一篇文章<.NET Core也是国产化信息系统开发的重要选项>, 这又过去了大半年了,在信创领域发生了很大的变化,今天写这篇文章主要是想从信创常用软件适配清单 看一看. ...

  9. AIoT开放平台及应用

    AIoT开放平台及应用 阿里AIoT开放平台,是阿里云IoT面向开发者的能力接入渠道,开发者可以在这里完成能力的申请.开通.部署.配置和集成开发等一些列工作.这些能力并不的独立交付,而是通过关联到行业 ...

  10. You Only Live Once

    从做 PreAngel 以来,每年我都会抽空去美国一两次,主要是在硅谷(湾区)一带见见当地的朋友,他们主要有 VC.创业者.斯坦福和伯克利的学生创业组织负责人.无线科技领域的各种组织机构负责人等,我一 ...

随机推荐

  1. Fiddler 将插件放在独立子文件夹

    我的 Fiddler 安装了许多插件,有一些插件存在 DLL 名冲突问题,比如多个不同的插件都存在名为 PluginCore.dll 但实际实现逻辑完全不相同的程序集.这就导致了多个插件的安装之间,如 ...

  2. 不只有 Spring,这四款 Java 基础开发框架同样值得关注! 审核中

    Java 开发不只有 Spring ,今天给大家推荐几个同样优秀的 Java 基础开发框架,为日常项目开发提供更多的选择.答应我,请不要再叫我 Spring 小子了,​好吗? 项目概览: Guice: ...

  3. linux 下jq的使用

    安装: yum install jq -y 文档: https://stedolan.github.io/jq/manual/ 更多: https://blog.csdn.net/Cheat11730 ...

  4. 网络拓扑—DNS服务搭建

    目录 DNS服务搭建 网络拓扑 配置网络 DNS PC 安装DNS服务 配置DNS服务 创建正向查找区域 创建反向查找区域 创建子域名 PC机DNS域名解析 DNS服务搭建 网络拓扑 为了节省我的U盘 ...

  5. C#语言:散修笔记

    文章目录 前言 数组的几种定义方法 out 和 ref 的区别 可变参数params 静态方法与非静态方法 >❀什么时候使用静态和非静态 构造函数 >❀类中方法的重载 >❀在类中输出 ...

  6. PageOffice调用本地office实现多人在线同时编辑Word文档

    说明:多人同时在线编辑文件大多数会出现文档相互覆盖的问题,后保存的文档会覆盖先保存的文档.pageoffice的这个功能可以用程序控制不同用户打开文件后,编辑Word文档中属于自己的区域,并且不会互相 ...

  7. linux time测试命令的运行时间

    在linux中,time命令是用来测试命令的运行时间的,命令的运行时间有三种: ​ real:实际使用时间,该时间包括进程执行时实际使用的 CPU 时间,进程耗费在阻塞上的时间(如等待完成 I/O 操 ...

  8. go强大的垃圾回收机制。

    一.C语言中返回函数中局部变量值和指针(1) 在C语言中,一个函数可以直接返回函数中定义的局部变量,其实在函数返回后,局部变量是被系统自动回收的,因为局部变量是分配在栈空间,那为什么还可以返回局部变量 ...

  9. SpringBoot自定义拦截器(多个拦截器)

    在 Spring Boot 中要实现自定义拦截器需要实现 HandlerInterceptor 接口,并重写 preHandle.postHandle 和 afterCompletion 方法: im ...

  10. 011. jenkins 备份

    Jenkins目录介绍 1. 主配置文件: /etc/sysconfig/jenkins 2. Jenkins主目录: /var/lib/jenkins/ [root@node1 plugins]# ...