首页 > 编程语言 >呼吁 《上海市卫生健康信息技术应用创新白皮书》改正 C# 被认定为A 组件 的 错误认知

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

时间:2024-06-24 09:01:59浏览次数:21  
标签:C# Mono 平台 白皮书 Framework 开源 组件 NET

近日,《上海市卫生健康“信息技术应用创新”白皮书》(以下简称《白皮书》)正式发布,介绍了“医疗信创核心应用适配方法、公立医院信息系统及全民健康信息平台信创设计思路”, 其中发现了一个错误的认知,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 开发人员的华为云》。

image

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 协议基础上构建的,对于商业是友好的。

image

大家也可以下载信通院的《全球开源生态研究报告(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 中文社区的网站

image

 

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

标签:C#,Mono,平台,白皮书,Framework,开源,组件,NET
From: https://www.cnblogs.com/shanyou/p/18264292

相关文章

  • What is the difference between OpenAI and ChatOpenAI in LangChain?
    题意:在LangChain中,OpenAI 和 ChatOpenAI 的主要区别是什么?问题背景:IreadtheLangChainQuickstart.Thereisademoinside:        里面有一个演示:fromlangchain.llmsimportOpenAIfromlangchain.chat_modelsimportChatOpenAIllm=OpenAI()chat......
  • 简单的聊天程序(二):配置Vue-cli以加速开发
            上一章--简单的聊天程序(一):HTML+CSS实现响应式界面已经实现了响应式的界面,接下来我们要实现一些简单的交互操作。        预期结果     在左边切换不同的对话人物,并显示与其聊天记录;在输入框输入文字后按下发送按钮就会显示在上方的聊天记......
  • LLM troubleshooting for ping lost between containers.
    问题使用dockercompose启动的容器组,容器间不能通信。 LLM问答解决使用docker-compose启动的一组应用,但是容器间网络ping不通,为啥?答当使用docker-compose启动的一组应用出现容器间网络ping不通的情况时,可能的原因和解决方法可以归纳如下:   网络配置错误:       ......
  • 【仿真建模-anylogic】Path代码解析
    Author:赵志乾Date:2024-06-24Declaration:AllRightReserved!!!1.类图2.代码解析//**************************核心字段**************************//Path起点privateNodesource;//Path终点privateNodetarget;//Path各段描述privatefinalCircularCurvecirc......
  • OpenCL中的子缓冲区例子
    子缓冲区可以把一组数据拆分成多个部分,然后每个部分送到不同的设备上运行。这里将给出一个例子,代码的运行环境是VS2015、OpenCL3,显卡是AMDA4处理器的核芯显卡和另一个AMD的入门级独立显卡。CPP文件如下:stringkernelStr=u8R"(kernelvoidadd(globalconstint*input,......
  • 第6篇:深入解析LangChain库的数据输入模块
    在自然语言处理(NLP)项目中,数据输入是整个流程的第一步,也是至关重要的一步。LangChain库的数据输入模块为开发者提供了一种高效、灵活的方式,从各种数据源读取数据。本篇博客将详细介绍LangChain库的数据输入模块,讲解如何从各种数据源读取数据,并通过具体代码示例展示其实现过程......
  • flask cbv加装饰器
    cbv加装饰器fromflaskimportFlaskfromflask.viewsimportMethodViewapp=Flask(__name__)app.debug=True###登录认证--->不能公用--》要么只能给fbv用,要么只能给cbv用defauth(func):definner(*args,**kwargs):print(args)#cbv,会有第一个参......
  • 【Gradio】Chatbot | 如何使用 Gradio Blocks 创建自定义聊天机器人
    简介重要提示:如果您刚开始接触,我们建议使用 gr.ChatInterface 来创建聊天机器人——它是一个高级抽象,使得可以快速创建漂亮的聊天机器人应用程序,往往只需一行代码。在这里了解更多信息。本教程将展示如何使用Gradio的低级BlocksAPI从头开始制作聊天机器人UI。这将使......
  • 创新实训 (九)CodeForces 数据和微调数据处理
    Codeforces数据获取Codeforces的题目中存在一些数学公式,所以处理的时候需要比较小心的对其进行处理。首先是题面数据,在CF当中标识一道题目的方式是problemSet与problemId。其中problemSet是一个数字,而problemId是一个字母。另外需要注意的是CF题面中存在许多数学......
  • EasyExcel 无法读取图片?用poi写了一个工具类
    在平时的开发中,经常要开发Excel的导入导出功能。一般使用poi或者EasyExcel开发,使用poi做excel比较复杂,大部分开发都会使用EasyExcel因为一行代码就能实现导入和导出的功能。但是EasyExcel不支持图片的读的操作,本文操作如何实现图片的读和写的功能。在EasyExcel......