C# 标准库

把跨 runtime 的玩意直接作对比 (ASP.NET MVC on .NET Framework runtime VS ASP.NET Core Razor Pages on .NET Core runtime ) 是没有意义的

先学 JavaSE 再学 JavaEE 
https://www.zhihu.com/question/31455874/answer/62609703

聊一聊 2个 runtime 通用的 BCL 是很好的,现在就是不想去管 2个 runtime 的差异 (更不用去管 OpenJDK 提供的某个特殊的类,Oracle JDK 提供的某个特殊的类) 

这就是 C# 标准库阿(对标 JavaSE),不需要聊 哪个 runtime (就像 不需要聊是 OpenJDK 还是 Oracle JDK) 

各种 ASP.NET MVC 是对标 JavaEE 

用类库,先看 它的 runtime 。如果是通用的 runtime ,那么 它就是 JavaSE (对标 .NET Standard 2.0)
位于 BCL 上层的应用特定的库(例如 ASP.NET)并不能在所有 .NET 实现中使用:OpenJDK 提供的某个函数 不并在 Oracle JDK 里使用。
https://docs.microsoft.com/zh-cn/dotnet/standard/framework-libraries

标准库

第三方库

  • 各种 Java 第三方库
  • JavaEE
  • C# FCL
  • 各种 python 第三方库

编程语言的执行

https://docs.microsoft.com/zh-cn/dotnet/csharp/getting-started/introduction-to-the-csharp-language-and-the-net-framework

标准库里的好玩的:

  • packages 1
  • 实用工具 API 1
  • 数据结构 容器类 1
  • 文本处理
  • IO
  • 下载 122
  • 排序
  • 正则表达式
  • 常识 类库的组织1、 IDisposable 接口1 2
C# 标准库在2个runtime上通用 
C# 标准库是 OOP 的形势,有很多类,也叫做类库
C# 标准库也就是通用性很大的类库
用 “适配了几个 runtime ” 来判断一个组件是 BCL 还是 FCL ,是错误的。有一些 FCL 仅仅是 已经适配完成了而已,它不会因 适配完成 而 从 FCL 变成 BCL 。

一般人先学的应该是 BCL ,然后是 已经适配了几个 runtime 的 FCL (通用性强的 FCL),最后是 某一个 runtime 的 FCL (通用性弱的 FCL)

有的 FCL 会适配几个 runtime ,比如:
Microsoft.Extensions.DependencyInjection 组件

有的 FCL 永远不会适配几个 runtime ,比如:
System.Web.Routing 组件
是典型的 通用性弱的 FCL 

System.Web.Routing 组件 这就是仅仅适用于 .NET Framework runtime 的类库。

一些 C# 库在某些方面,无法抹杀2个runtime的差异,比如 FCL

一些 C# 库在某些方面,无法抹杀2个runtime的差异,比如 BCL

这样的说法是可以的:C# 标准库抹杀了2个runtime的差异的方面,也叫做 BCL 基础类库。System.Web.Routing 就是 FCL ,它仅能在 .NET Framework runtime 上使用,无法在 .NET Core runtime 上使用的。ASP.NET Core 它仅能在 .NET Core runtime 上使用的,无法在 .NET Framework 上使用。或者 WPF (作为一个 FCL) 能在 .NET Framework runtime 上使用、能在 .NET Core runtime on Windows 上使用,不能在 .NET Core runtime on linux 上使用

注意:
1 FCL 即使已在2个runtime上通用,它也是 FCL ,然后,这样的 FCL 在使用上,给人的感受,wow 就是 BCL 阿!
2 FCL 即使已被适配的 runtime 再多,它也是 FCL ,因为如果微软新出了一个 runtime ,FCL 被实现的优先级肯定是在 BCL 之后的。
3 其他编程语言的 “标准库” 应该是对标 C# BCL ,并不包括(通用性强或弱的) FCL 
4 把跨 runtime 的玩意直接作对比 (ASP.NET MVC on .NET Framework runtime VS ASP.NET Core Razor Pages on .NET Core runtime ) 是没有意义的 ... 

典型的 FCL
System.Web.Routing 
WPF, WinForms
ADO.NET
ASP.NET
ASP.NET Core 
EF
EF Core

参考 
https://www.cnblogs.com/makesense/p/6237939.html
https://stackoverflow.com/questions/807880/bcl-base-class-library-vs-fcl-framework-class-library

At Microsoft, I believe the CLR team (of responsiblity of different runtime) owns the BCL, while many teams (of responsiblity of different runtime) own different parts of the FCL.
https://stackoverflow.com/questions/807880/bcl-base-class-library-vs-fcl-framework-class-library

changsj
211 声望11 粉丝

changsj.


« 上一篇
无名之路1
下一篇 »
无名之路3

引用和评论

1 篇内容引用
0 条评论