A projection takes a stream of Events that were recorded against a given Aggregates (Aggregate roots) and uses them to create a view of the state of the object that the aggregate represents as at a given point in time.

A projection can only apply to one aggregation identifier.

A projection must have an unique name.

A projection can filter which events it does or does not process - events which have no impact on the state of the projection can be ignored.

These are identified by a mark the class as being a projection "(IProjection)" and also one or more strongly-typed interfaces to indicate the events that the projection processes "(IHandleEvent(Of TEvent))"

Naming convention
The projection name is a word to describe the type of projection like "Summary", "Current" , "Detail" and give an indication as to what data it returns. For example "CurrentBalance" and "ProfitAndLossDetail"

Last edited Jun 13, 2015 at 10:31 AM by Merrion, version 2