-
Notifications
You must be signed in to change notification settings - Fork 5
Home
This repository contains base framework libraries which are used as mscorlib extensions.
- Activators
- Behaviors (Neptuo.Behaviors)
- Bootstrap (Neptuo.Bootstrap)
- Compilers
- Converters
- Exceptions
- FileSystems (Neptuo.FileSystems)
- Identifiers
- Localization
- Logging
- Migrations (Neptuo.Migrations)
- Models (Neptuo.Models)
- Models.Features (Neptuo.Models.Features)
- Observables (Neptuo.Observables)
- PresentationModels (Neptuo.PresentationModels)
- Reflection
- Services.Commands (Neptuo.Services.Commands)
- Services.Deleters (Neptuo.Services.Deleters)
- Services.Events (Neptuo.Services.Events)
- Services.Jobs (Neptuo.Services.Jobs)
- Services.Operations (Neptuo.Services.Operations)
- Services.Queries (Neptuo.Services.Queries)
- Services.Validators (Neptuo.Services.Validators)
- StateMachines
- Tokens
Neptuo
Main assembly used in all projects is Neptuo.dll. This assembly is designed common extensions to mscrolib 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 dependecies 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 inNeptuo.Activators.Unity
. -
Commands contracts are places inside
Neptuo.Services.Commands
with 'default' and dependency (container) implementations, but HTTP based implementations are placed insideNeptuo.Services.Commands.Http
.
Compilation to javascript
Most of the projects are also compiled to javascript using SharpKit. This compilation is modified by SharpKit.Exugin and Neptuo.build.targets
.
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.
Javascript files will be released in separate nuget package with suffix javascript, for e.g.: Neptuo.Services.Validators.javascript
.
Neptuo.build.targets
Extends project by exporting assemblies, pds, xmldoc, javascripts and nuget packages to folder artifacts
in repository root. Also be defining 'compilation constant' named 'Javascript' enables exporting library to javascript.