Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
This repository contains various framework/reusable libraries. From mscorlib extensions through file system abstractions, logging and localization to facades for validation, command and query handling.
The list below shows most of them, those with name in parenthesis are placed in separate projects, the others are in the project
Neptuo (the name in the parentheses means nuget/assembly name).
- Behaviors (Neptuo.Behaviors)
- Bootstrap (Neptuo.Bootstrap)
- Commands (Neptuo.Commands)
- Events (Neptuo.Events)
- EventSourcing (Neptuo.EventSourcing)
- Exceptions (Neptuo.Exceptions)
- FileSystems (Neptuo.FileSystems)
- Formatters (Neptuo.Formatters)
- Jobs (Neptuo.Jobs)
- Migrations (Neptuo.Migrations)
- Models (Neptuo.Models)
- Models.Deleters (Neptuo.Models.Deleters)
- Models.Features (Neptuo.Models.Features)
- Observables (Neptuo.Observables)
- Operations (Neptuo.Operations)
- PresentationModels (Neptuo.PresentationModels)
- Queries (Neptuo.Queries)
- Validators (Neptuo.Validators)
And some proposals for the future.
- Data.Sql (Neptuo.Data.Sql)
Main assembly used in all projects is Neptuo.dll. This assembly is designed as common extensions to mscorlib and contains reusable multi-purpose contracts and implementations. The only reference is to System.Core and never any other reference will be added. So adding this assembly to a project doesn't trigger adding any other dependencies.
When feature library is designed, contracts and 'default' implementations, those that doesn't required any other dependencies than System.Core and dependencies required by the contracts, are always places inside main assembly. Any other implementations are placed into 'implementation specific' libraries. For e.g.:
IDependencyProvider contract is placed inside
Neptuo, but Unity implementation, which required Unity nuget package, is placed in
Commands contracts are places inside
Neptuo.Commandswith 'default' and dependency (container) implementations, but HTTP based implementations are placed inside
This way, we can shared most utils between server and client development. Non of the projects references SharpKit libraries, so only smooth integration is done. Compilation is realized by
Exugin XML configuration placed in project root.