Core (and dependencies)

[Overhaul / refactor in progress as of Oct 2017]

A core set of infrastructure and mini-frameworks to support the LionFire.Core Framework’s information architecture strategy.

To use:
  • Via nuget, reference the metapackage ‘LionFire.Standard’ (TODO)

DLLs from lower levels to higher:

LionFire.Base

  • Augmentations to the .NET Base Class Library
  • (FUTURE: Consider making these single .cs file nuget includes)
  • LionFire.Execution.AutoRetry

LionFire.Structures

  • Various collection classes that are used frequently and useful on their own.
  • (FUTURE: Consider merging with LionFire.Base)
  • IComposable * Standardized interface for composition: adding and accessing children
  • IKeyed * Allows keys for dictionaries to be extracted from within an object

LionFire.Referencing.Abstractions

References to objects! References can change, so references can be synced. Since things can get out of sync, there can be version control and automatic and manual merge conflict resolution.

  • Handles * IReadHandle<T> - lazily loadable reference to an object * IHandle<T> - combination of IReadHandle<T> and IWriteHandle<T> * Idea for prefixes:

    • RSomething - readonly handle
    • HSomething - readwrite handle.
    • WSomething - writeonly handle.
  • References

  • Lit (version control)

LionFire.Referencing

  • ReferenceFactory * IReference ToReference(this string uri);
  • TODO - HandleResolver

LionFire.Core(.Abstractions)

TODO: Figure out how much of this to spin out into separate DLLs.

Core frameworks that provide cohesion points among LionFire Libraries: * Ambience

  • Context-oriented programming: * Simple apps: use statics * Complex apps: use ThreadStatic data * Example uses: InjectionContext, PersistenceContext, LogContext
  • Events: PubSub/Logging/Alerting/Notifying

  • Dependency Injection / service location * Defaults * Singleton

  • MultiTyping

  • Type Resolution

  • Validation

  • Structures - Singletons

    • Singleton<T>
    • ManualSingleton<T>
  • MessageBus - MBus.Publish(“Hello”) - IObserver<T> sub = MBus.Subscribe<T>();

  • DependencyInjection - Defaults class: Get/Set methods

LionFire.Environment

  • Commonly used variables used for environment, similar to System.Environment but with some helpers and additions commonly used in LionFire applications.

LionFire.Annotations.Compilation

  • Attributes used at compile time, for use with weavers such as Fody

1st-Gen

1st-Gen LionFire.Utility.dll

A large assortment of things I have found useful. I plan to refactor this into smaller executables.

  • Application/Shell framework - facilitates UI/application separation. (Separate shell implementations for WPF and console apps exist.)
  • Serialization
  • Logging
  • ...

Planned

LionFire.Core.Abstractions

This will be a small collection of common abstractions:

  • Logging abstraction
  • IOC abstraction (TinyIOC)
  • EventAggregation abstraction

LionFire.Core

Default implementations for the abstractions in LionFire.Core.Abstractions

LionFire.Typing

Support for multi-type objects.