说明 - things you'd like to care about around .NET :巧立名目 拉拢豪绅 交税捐款。

* ".NET Core is a cross-platform .NET implementation" 的含义?
阿,其实没有任何含义。语法 + 标准库 + 第三方包 + 包管理器 + 项目虚拟环境(包依赖关系、包下载位置)而已
静态语言 强类型语言 C# ,必然有自己的类型系统(变量类型:值类型 引用类型,实例的类:OOP 类库) 
第三方包 必然有依赖,依赖某操作系统 (WPF 就是依赖 Windows 操作系统,即使同样是 .NET Core runtime,它需要满足它的依赖 才能用)(WPF 算是笼统意义上的第三方包,非 BCL )

* ".NET Core is a cross-platform .NET implementation" 的含义,不是 .NET Core 可以重用 .NET Framework 4.8 的一部分 API, 而是 现在出现了一个 runtime + compiler + BCL + FCL
- 它的 runtime 是 .NET Core runtime 
- 它的 compiler 是 csc 
- 它的 BCL 是 .NET Standard ,它被视作一个标准库,开箱即用,有很多实用工具,不需要包管理器 (System.String, System.DateTime, 数组, 字典, 循环体, 方法体, HttpClient )
- 它有一些官方的第三方库(载入它们需要包管理器 nuget ),称为 FCL ,比如 EF Core、ASP.NET Core Blazor 、ASP.NET Core Razor Pages、ASP.NET Core MVC 
- 它支持第三方库(载入它们需要包管理器 nuget ),有自己的包管理器,命令行操作
- 它不支持非此 runtime 的东西,比如 ADO.NET, ASP.NET 
- 它这个 runtime 里的东西,有自己的文档,和 其他 runtime 分开的 (runtime 都不一样,怎么会文档一样呢)

https://stackoverflow.com/questions/807880/bcl-base-class-library-vs-fcl-framework-class-library#

计算机的力量 借 C# 发挥(由 C# 语言编写,在 C# runtime 上执行 跑起来):实用工具 
https://docs.microsoft.com/zh-cn/dotnet/standard/framework-libraries#utility-apis

实用工具 in OOP 
https://docs.microsoft.com/zh-cn/dotnet/standard/class-libraries

比如 System.Web.Routing 组件 ,这个要先看 是在哪个 runtime 之下跑的,如果是在 .NET Framework runtime 里跑的,而你又用的是 .NET Core runtime ,那么 1 你是在浪费时间 2 它对你的项目没用 即使你学会了它 3 如果是在两个 runtime 里都能跑的 (比如 System.Drawing.Common 和 Windows Compatibility Pack ) 那么 反而要十分警惕 (因为它的更新 需要去适配两个 runtime 这是很傻的行为:必有猫腻 这个API很可能在未来发生大变动 或者 .NET Standard 的设计失误) 4 C# fundamentals (仅介绍了 OOP 概念,没介绍 SDK API) 除外。

上例中,如果想知道 路由的用法,直接搜 core razor route convention 即可。看准 “System.Web.Routing 组件” 这种看似很NB的技术是在哪个 runtime 上运行的,是否有学习的必要,他人的话是否有参考价值。

闭源 
ASP.NET
.NET Framework 4.8

开源 
ASP.NET Core
.NET Core

.NET Core runtime 和 .NET Framework runtime 各支持哪些软件的开发?
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/choose-aspnet-framework 
闭源 
ASP.NET
https://docs.microsoft.com/en-us/aspnet/#pivot=aspnet
开源 
ASP.NET Core
https://docs.microsoft.com/en-us/aspnet/#pivot=core

起点
https://docs.microsoft.com/en-us/aspnet/
https://docs.microsoft.com/en-us/ef/
https://docs.microsoft.com/en-us/dotnet/standard/
https://docs.microsoft.com/en-us/dotnet/csharp/

choosing - Choose between ASP.NET 4.x and ASP.NET Core
===========================================
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/choose-aspnet-framework 

Choosing between .NET Core and .NET Framework for server apps
============================================
https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server

choosing - Compare EF Core & EF6
===========================================
https://docs.microsoft.com/en-us/ef/efcore-and-ef6/choosing
.NET Core runtime 和 .NET Framework runtime 各支持哪些软件的开发?
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/choose-aspnet-framework 
.NET Core runtime 和 .NET Framework runtime 各支持哪些软件的伺服?
https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server#a-need-to-use-net-technologies-not-available-for-net-core

.NET Core runtime 不支持,但是 .NET Framework runtime 支持
ASP.NET Web Forms (C#)
ASP.NET Web Pages (C#)
ASP.NET Web Single Page App (C#)
ASP.NET Web MVC (C#)
ASP.NET Web Pages Razor (C#)
ASP.NET SignalR App (C#)
ADO.NET

ASP.NET Web Forms (VB )
ASP.NET Web Pages (VB)
ASP.NET Web Single Page App (VB)
ASP.NET Web MVC (VB)
ASP.NET Razor Pages (VB)
ASP.NET SignalR App (VB)

参考
https://docs.microsoft.com/en-us/aspnet/
https://channel9.msdn.com/Blogs/ASP-NET-Site-Videos/Making-Websites-with-ASPNET
https://channel9.msdn.com/Blogs/ASP-NET-Site-Videos/What-is-Web-Tools

.NET Framework runtime 不支持,但是 .NET Core runtime 支持
ASP.NET Core MVC (C#)
ASP.NET Core Razor Pages (C#)
ASP.NET Core Blazor (浏览器客户端技术) (C#)
ASP.NET Core SignalR App (C#)

参考
https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server#a-need-to-use-net-technologies-not-available-for-net-core
https://docs.microsoft.com/en-us/aspnet/
https://www.halvorsen.blog/documents/programming/web/asp_net.php

ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications. 
https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-3.1
闭源 
ASP.NET
.NET Framework 4.8
文档
ASP.NET
https://docs.microsoft.com/en-us/aspnet/
https://docs.microsoft.com/en-us/aspnet/#pivot=aspnet
https://docs.microsoft.com/en-us/aspnet/overview
ASP.NET
https://docs.microsoft.com/en-us/dotnet/framework/develop-web-apps-with-aspnet
.NET Framework documentation
https://docs.microsoft.com/en-us/dotnet/framework/
.NET Framework API reference
https://docs.microsoft.com/dotnet/api/?view=netframework-4.8
https://docs.microsoft.com/en-us/dotnet/api/?view=netframework-4.8

开源 
ASP.NET Core
.NET Core
文档
ASP.NET Core
https://docs.microsoft.com/en-us/aspnet/
https://docs.microsoft.com/en-us/aspnet/#pivot=core
https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-3.1
.NET Core API reference
https://docs.microsoft.com/dotnet/api/?view=netcore-3.1
额外说明1:
C#编译器 csc "Roslyn" 是在 2个 runtime 里都存在的 (在 System 命名空间,由 System.Runtime.dll 支持) 里,效果相同。它是 C# 语言标准库,自然有很多 bullet-in 的玩法。它提供了清晰的构建模块和公共接口,包含 I/O 操作、文本处理、图像、密码学、网络和分布式应用程序等,并支持许多标准化的文件格式和编解码协议。 

https://docs.microsoft.com/en-us/dotnet/api/system.datetime.now 
https://docs.microsoft.com/en-us/dotnet/api/system.array 
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to
https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.downloadfile 

(做个小小的批量下载软件/cmd爬虫 不成问题,
直接 > csc xxx.cs 就 OK 了)

直接用标准库(BCL)已经可以完成很多工作了,在 IBM 里

额外说明2:
.NET Framework 的硬伤:不支持 app 级别的 SDK 版本管理 
一个机子上 只能安装一个 SDK ,所有 app 都是相同的 SDK 支持

https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server#a-need-for-side-by-side-of-net-versions-per-application-level



https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server

也即:如果你需要 "side by side of .NET versions per application level",那么你只有选择 .NET Core (ASP.NET Core) 

说明 - 可以熟悉的事情 todo:

  1. 安装 卸载 ASP.NET SDK (dotnet, 而非 .NET Framewokr 4.8)
  2. 大规模部署 (chef) 在生产环境
  3. API 版本支持 1
  4. 在开发环境,考虑 操作系统、IDE 对选择 SDK 版本的影响 (IDE 与 SDK 的配套)
  5. 考虑 SDK 和 IDE 何时需要,是否有一起安装的必要
ASP.NET Tutorial - Hello World in 10 minutes
https://dotnet.microsoft.com/learn/aspnet/hello-world-tutorial/install
  1. 考虑 是否有 sudo 权限 对 SDK 的安装方式的影响
  2. 考虑多个 SDK 的切换(切换 保留 安装位置 硬盘空间 虚拟环境),类似 nvm
  3. 考虑 包管理器 (包下载位置、第三方包的版本管理)

changsj
211 声望11 粉丝

changsj.


下一篇 »
无名之路2

引用和评论

0 条评论