Built on top of this is an object model,
where applications sit in an event loop,
responding to messages to call methods or read properties of virtual objects,
in the object oriented sense.

Application frameworks often build on top of this to provide proxy objects,
so that you can effectively refer to objects in different processes.

By providing a well known name where a D-Bus object may be found,
you can have local services provide an API for performing operations,
and local applications instruct these services to perform operations.

A more detailed description of what D-Bus is and its concepts,
can be found here.
The article is about sd-bus, but the "What is D-Bus again?" and
"Introduction to D-Bus Concepts" sections are relevant to understanding D-Bus.