Definition of terms - MerrionComputing/CQRSAzure GitHub Wiki
The following terms are used within this project. Their definition may not exactly match all other CQRS references or systems so what follows is for clarification:
Aggregate
An aggregate is any business meaningful thing that is uniquely identifiable. (This is somewhat analogous to an Entity in a relational model.) An aggregate is something to which events can occur
Event
An event is any state changing occurrence registered for an instance of an aggregate. Events are stored in an append-only structure known as an Event Stream for the aggregate instance against which they occurred.
Identity Group
An identity group is a business meaningful collection of zero or more instances of an aggregate. Membership of such a group can be calculated at any given time by running a classifier over the event streams of the aggregate instances to see if they qualify as being in our out of the group. There are two default identity groups that are added to all aggregate types: All being the set of all known instances of the aggregate and Instance being a specifically selected instance of the aggregate.
Projection
A projection is a function that runs over an aggregate instance's event stream and for each event that it encounters, if the projection is set to handle that event type, updates its internal properties according to the existence or the properties of the given handled event. A projection can be run up until a given point in time or up to the most recent topmost event in the stream to give the "as of now" value.
Classifier
A classifier is a specialised form of projection that runs over an aggregate instance's event stream to derive whether that instance is in the related identity group as at a given point in time or not. Each identity group may only have one defined classifier.
Query
A query runs a given projection over a set of aggregate instances, identified by a given identity group, and when they complete performs an aggregation over that returned data set. This could be a single record that is a mathematical aggregation function or it could return one row for each returned projection record.
Command
A command executes some state changing operation over the given aggregates in the selected identity group against which it is to run. The additional properties from the command definition can be used in appending event(s) to their event streams.
Domain
A domain (or sometimes referred to as a bounded context) is an explicitly defined context within which we are using a common model. Entity names and event streams will be consistent within the domain. In the CQRS designer there is a one-to-one mapping between each domain and the Model