Chapter 8. Interlude: Enabling Component Integration with Metadata

We’ve now met all of the major actors in the CLI component model . Types, which are programmers’ specifications about component structure and behavior, are the core around which the CLI is built. Transforming these types into processor-specific values and weaving these values into the native instruction stream is the runtime task of the CLI’s execution engine , and is done using a combination of loaders, runtime services, and the JIT compiler.

In the data-driven world of the CLI, the representation of types constantly unfolds during the process of loading and execution. There is an incremental, but constant, build-up of data associated with types. This build-up is caused by the collaboration between the facilities of the execution engine as type metadata is poked, prodded, transformed, augmented, and annotated. While the CLI lays out data and creates code, and ushers types and their instances through their lifecycles, the execution engine not only consumes metadata, but also produces large volumes of it.

Altering Metadata Representation

Consider the process of moving type information into and out of assemblies. If you carefully examine the code that makes up the metadata implementation, you will discover that there are two completely different codepaths: one for creating and modifying editable metadata, and another for mapping read-only metadata into memory. Programmers know that the existence of two implementations ...

Get Shared Source CLI Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.