CAN/CSA-ISO/IEC 13868-04:2004 信息技术 — 通用语言基础设施 (CLI) — 第4部分:类库

加拿大采纳的国际标准,定义.NET平台可移植的通用语言基础类库要求

一、标准概况与适用范围

CAN/CSA-ISO/IEC 13868-04:2004 是加拿大标准协会(CSA)采纳的国际标准,等同采用 ISO/IEC 13868-4:2004,属于信息技术领域通用语言基础设施(Common Language Infrastructure, CLI)标准的第四部分,专门规定 CLI 类库的规范。该标准对应的原始国际规范为 ECMA-335 第4分区,但在此被正式采纳为加拿大国家性技术标准。

本标准的适用范围包括:

  • 定义 CLI 实现必须提供的核心类库集合,包括类型、方法及属性;
  • 规定类库的分层结构(Base Class Library, Standard Class Library 等);
  • 要求类库在不同平台上的行为与接口保持一致,以实现跨平台互操作性;
  • 为开发人员、测试工具和运行时实现者提供统一的类库参考。
标准实施的益处: 遵循 CAN/CSA-ISO/IEC 13868-04:2004 可确保 .NET(基于 CLI)应用程序在 Windows、Linux、macOS 等不同操作系统上的行为一致性,降低平台迁移成本,提升代码复用率。

二、主要技术内容与要求

2.1 类库的整体架构

标准将类库划分为若干分区,每个分区由一组命名空间和类型组成。下表列出主要分区及其用途:

分区名称典型命名空间示例主要功能
基础类库(BCL)Base Class LibrarySystem, System.IO, System.Text提供基本数据类型、输入输出、字符串处理、集合等核心功能
标准类库(SCL)Standard Class LibrarySystem.Runtime.Remoting, System.Threading扩展核心功能,支持远程处理、多线程、网络等
可扩展类库(ECL)Extended Class LibrarySystem.EnterpriseServices, System.DirectoryServices提供对企业级服务和目录访问的支持

2.2 类型系统与成员规范

标准要求类库中的每个类型必须明确其基类、实现的接口以及继承关系。对于方法成员,需定义签名、访问修饰符和异常抛出规范。所有类库类型必须符合 CLI 的类型安全规则,且不能依赖特定平台的实现细节。

实用提示: 在开发自定义类库时,应参考本标准定义的公共接口模式,特别是命名规范与异常设计,以确保与 CLI 生态系统的兼容性。

2.3 可移植性要求

标准强制规定:CLI 实现必须完整提供基础类库中的所有类型,标准类库中的类型应至少实现为 CLI 运行时的一部分。任何扩展类库的类型可以独立发布,但必须声明对核心分区的最小依赖。

三、实施/应用要点

3.1 合规工具与测试

要验证一个运行时或类库是否符合 CAN/CSA-ISO/IEC 13868-04:2004,开发团队应使用以下方法:

  • 使用标准提供的抽象测试套件(如 CLI 测试元数据);
  • 检查类型成员签名是否与标准定义完全一致;
  • 确保程序集引用关系满足分区依赖要求。

3.2 平台迁移注意事项

重要注意事项: 不同 CLI 实现(如 Mono, .NET Core, .NET Framework)在扩展类库层面可能存在差异。若应用程序仅依赖基础类库和标准类库,则跨平台兼容性最高;若使用扩展类库,建议使用条件编译或适配层。

3.3 版本与兼容性

本标准基于 ECMA-335 第2版(2002年)演变而来,后续由 ISO/IEC 23271:2006 替代,但许多动态链接库仍沿用本标准定义的类库接口。在2026年,多数 .NET 5+ 实现仍然保持对标准定义的向后兼容。

安全关键要求: 任何 CLI 运行时在实现基础类库的 System.Security.Permissions 命名空间时,必须严格执行 CAS(代码访问安全性)规则,否则会导致安全漏洞。该条款为强制性要求。

四、与其他标准的关系

CAN/CSA-ISO/IEC 13868-04:2004 并不是孤立的标准,它属于一套相互关联的技术规范体系:

  • ECMA-335 — 原始规范,本标准为 ECMA-335 第4分区的直接采纳。
  • ISO/IEC 23271 — 后续综合标准,合并了 CLI 全部五部分,本标准的类库规范纳入其中。
  • ISO/IEC 23270(C# 语言规范)— C# 语法和语义依赖于本标准中的类库类型。
  • ANSI/INCITS 454 — 美国国家采纳的等效标准,内容与加拿大版几乎一致。

此外,与 CAN/CSA-ISO/IEC 13868-01(CLI 架构部分)和 CAN/CSA-ISO/IEC 13868-02(元数据部分)共同构成完整的 CLI 规范体系,缺少任一部位都将导致互操作性的损失。

常见问题(FAQ)

问:CAN/CSA-ISO/IEC 13868-04:2004 是否适用于 .NET Core 或 .NET 5+ 平台?
答: 虽然这些新平台采用了更新的标准(如 .NET Standard 2.1),但其中大量基础类型和接口设计仍可直接追溯到本标准的原始定义。理解本标准有助于理解现代 .NET 的类库演化背景。
问:标准中提到的“基础类库”与“标准类库”在实现时有何区别?
答: 基础类库(BCL)是每个 CLI 实现必须完整提供的;标准类库(SCL)则要求支持所有类型,但运行时可以将其按需加载。扩展类库则是可选的。在合规测试中,BCL 的缺失将直接判为不达标。
问:如何获取该标准的最新版本或加拿大版的正式文本?
答: 可通过加拿大标准协会(CSA Group)的在线商店购买。由于 ISO/IEC 23271 已取代大部分内容,建议同时参考该标准以获得全面的 CLI 规范。本文基于2026年可获得的公开信息撰写。

本文中涉及的版权信息为2026年,技术内容以 ISO/IEC 13868-4:2004 / CAN/CSA-ISO/IEC 13868-04:2004 正式出版物为准。

📥 标准文件下载

🔒
请等待 10 秒,广告加载完成后将自动显示下载链接

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注