Fork me on GitHubEpicdominant domains

The Epic.NET code base consists of many different libraries that can work together in various combination, thanks to carefully designed responsibilities that lead to high cohesion and low coupling.

This is the reference documentation of such libraries (whose objectives has been described in the second part of the manual). There's no convention between DLL's names and namespaces, so that for example you will not find an Epic.Prelude namespace: while each library's name maps its usage pattern, namespaces express the logical organization of the modelled concepts.
The Epic namespace contains fundamental concepts that all Domain Driven applications built with the Epic's modeling patterns in mind will require.

Epic.Prelude defines here IVisitable interface and the composite visitor pattern. Epic.Core defines the Enterprise entry point to the domain model.

The Epic.Collections namespace contains useful models of collections for DDD.
It's defined in Epic.Prelude.

Epic.Environment contains base implementations of IEnvironment.
It's defined in Epic.Core.

The Epic.Events namespace contains common use EventArgs for domain models.
It's defined in Epic.Core.


The Epic.Math namespace contains common mathematical abstractions such as Mappings, generic groups, abelian groups and rings.
It is defined in Epic.Prelude.

The Epic.Organization namespace contains base classes for the organization of the enterprise using the domain model.
It's defined in Epic.Core.

Epic.Query contains common tools used by all the query models available (Epic.Query.Object and Epic.Query.Linq).
It is defined in Epic.Query.

The Epic.Query.Linq contains the interface and the base class of Linq based repositories.
It's defined in Epic.Query.Linq.

The Epic.Query.Linq.Expressions.Normalization namespace contains visitor that "normalize" an ExpressionTree.
It's defined in Epic.Query.Linq.

The Epic.Query.Object namespace provide a simplified alternative to Linq repositories based on a slightly modified QueryObject pattern. It allows entity lookups by specifications, sorting and slicing, but can be easily extended to produce custom projections and aggregations.
It's defined in Epic.Query.Object.

The Epic.Query.Object.Expressions contains the visitable expressions representing a query.
It is defined in Epic.Query.Object.

The Epic.Query.Relational namespaces defines a tree of relational algebra expressions with bag semantics. It's used as an intermediate step from Epic.Query.Linq and Epic.Query.Object to any relational backend (read each specific SQL dialect).
It's defined in Epic.Query.

Epic.Query.Relational.Operations expresses relational operations (and some bag one, like sorting and grouping).
It's defined in Epic.Query.

Epic.Query.Relational.Predicates express common relational predicates.
It's defined in Epic.Query.

The Epic.Specifications namespace contains a general purpose framework for specifications. It provides a closure of operations over basic logical operators (conjunction, disjunction and negation) with some well designed extensions for handling inhteritance.
It's defined in Epic.Prelude.


The Epic.Visitors namespace contains a set of general purpose visitors.
It's defined in Epic.Prelude.

blog comments powered by Disqus