Interface definition language: specifies the general structure of communication via modules, object interfaces, enums, exceptions. There are no constructors or destructors (they are just normal functions you hope do what you want.) There are no callbacks (those are just object interfaces you implement yourself.) CORBA systems must consume IDL definitions and produce code which communicates with systems of those types.
Proxies and skeletons: IDL compiler produces code that looks like you are interacting with objects, but actually it is just an object that turns requests in to packets and deals with dispatch and return on its
Intermediate Object Representation: basically a precise name for a particular object inside the giant ball of mud of a CORBA system.
Naming service: associates human readable names to less human readable “IORs.”
Dumb historical cruft in places; object names are based on vectors of name/extension string pairs.
Objects and Servants: objects exist conceptually in CORBA space, servants are particular implementations of those objects ex. As a Java class in a discrete runtime somewhere.
Portable Object Adapters: strategies for mapping object identifiers of objects in CORBA space and discrete implementations on machines. Can deal with generic handlers that pull from databases each request, caches that keep some objects alive in memory for a time, spooling up new instances of discrete objects to serve requests…
Implementation Repository: a bizzare name for a CORBA service who has the job of managing a physical process, and facilitating access to it. For example a “permanent” object may have a name and port tied to the IMR which in turn finds the server that presently owns it and returns a “transient” reference to where it actually is right now.
Naming service maps a name→IOR while the implementation repository (IMR) maps an IOR→IOR.
No versioning system. Have to jank it with version numbers in objects or putting all of the interface for a version in a single module which is switched during upgrades.
Portable interceptors: “IOR Interceptors” allow for optional support of features in CORBA servers. When objects are created an interceptor can be attached to an object like a decorator in modern languages.