C# 跨平台基础知识以及必知的关键术语
跨平台程序就是可运行在多个操作系统上的程序,这里的操作系统可以是Microsoft Windows、Android、macOS和Linux等。创建跨平台程序的目标是,只编写程序一次,然后在支持的操作系统上编译,部署该程序后,代码在每个目标操作系统上以相同的方式执行,并表现出一致的行为。在过去,即使使用了开源库(如Mono或Java)也很难实现这个目标,而且如前所述,如果使用完整的.NETFrameworic,并不能真正地创建跨平台的程序。面临的许多复杂问题源于跨平台代码在使用操作系统服务(如磁盘I/O、安全协议和网络访问)时,对不同操作系统的服务之间存在的细微差别进行处理的方式。
随着程序员开始将更多注意力放在编写能够轻松跨平台运行的C#代码上,考虑这些为数众多的“必知”概念和术语,有助于打下坚实基础。下表列举并描述了这些关键术语。
关键术语 | 描述 |
硬件平台 | x86、64位、Itanium、ARM 等 |
软件平台 | 操作系统:Windows、Linux、Android、macOS、iOS 等 |
跨平台 | 编写代码一次,当针对目标平台编译代码后,就能在任何支持的硬件和软件平台上运行代码 |
生态系统 | 社区资源、开发工具和运行时软件的总称 |
堆找(stack) | 在一起使用的硬件、软件和生态系统,用来构建和运行程序,如Windows堆栈、Linux堆找等 |
API | 应用程序编程接口(Application Programming Interface, API)公开了类、委托、枚举、接口和结构,供其他 程序使用 |
程序集 | —个.dll文件,公开了 API,供其他程序集或可执行文件使用 |
标准 | API的正式规范或协定 |
关键术语 | 描述 |
垂直模型(Verticals) | Windows Forms、ASP.NET、WPF、UWP等:常称为应用程序模型 |
框架/库 | API的丰富集合,用于创建专注于特定垂直模型的程序,以程序集的形式出现 |
开源 | 由软件开发人员的开放社区编写和支持的框架和代码库。可根据特定开源库的许可使用对应的库 |
GitHub | 一个在线的开源代码存储库,用于分享和更新公共可用的和社区支持的代码,以及创建这种代码的分支 |
分支(forking) | 也称为branch,但暗含着开发社区的一种分歧。分支就是用现有的源代码存储库的副本,进行新的独立 开发。例如,.NET Core就是.NET Framework的一个分支 |
版本 | 框架的每个版本包含新的或改进的API,还可能包含对bug的修复 |
语义版本 | 此概念采用以下格式来描述修改的规模和类型:[MAJOR].[MINOR].[PATCH]8如果MAJOR数字发生变 化,则该版本的影响比MINOR发生变化时更大 |
目标框架 | 程序依赖的 API 集合,如 dotnet-sdk-2.0.4-winl0-x64 |
TFM | 目标框架名对象(Target Framework Moniker» TFM)是目标框架的精简版本,如netstandard2.0或 netcoreapp2.0。TFM常用于让程序面向特定的框架版本 |
依赖 | 编译程序或完成某个任务必须用到的一组特定程序集 |
元数据 | 提供了关于其他数据的信息的数据,如创建日期、创建者和文件大小 |
包 | —组程序集和元数据 |
元包 | —组相互依赖的包,但没有自己的库或程序集 |
NuGet | —个用于.NET的包管理器,可帮助开发人员创建和使用包 |
BCL | 基类库(Base Class Library, BCL)是常用类、接口和值类型的一个集合。例如,System.*指令中的类、接口、方法和值类型 |
PCL | 可移植类库(Portable Class Library, PCL)是一个类库,不必重新编译就可以运行在多个.NET垂直模型中 |
运行库 | 公共语言运行库(Common Language Runtime,CLR)。CLR管理内存分配(垃圾回收)、编译和执行 |
CoreCLR | 与CLR相同,但可跨平台运行。这是.NET Core的公共语言运行库引擎 |
CoreFX | .NET Core System.*名称空间,严重依赖于运行库 |
CoreRT | 类似于CoreCLR运行库,但没有JIT编译器。程序将预先编译(参见.NET Native),在这个过程中,将移除所有多余的代码和元数据 |
.NET Native | 创建的本机代码将被预先编译,常用于UWP开发 |
点击加载更多评论>>