a "Component Discovery" - Framework which supports the dynamically load of assemblies and types (like providers etc.) including a multi dimensional, classification- / clearance-based mandatory access control for components


Keywords
ComponentDiscovery, Clearance, Classification, based, Component, Discovery, AssemblyIndexer, TypeIndexer, MAC, Assemblies
License
GPL-3.0-only
Install
Install-Package ComponentDiscovery -Version 4.9.0.817

Documentation

ComponentDiscovery

...describes the problem domain which relates to the use case of loading plugins & extensions into a 'Composite Application' (like a 'Shell') which are provided decentralized. One common way is the registration of several sources/locations into a centralized list, may be within a file or the windows registry. Another way is to crawl some certain file system directories in order to find libraries to load.

This framework will do the last approach in a high efficient way an provides easy-to-use artifacts for each level of consume. And it was tested / is already used in some enterprise-environment!

  • You can just use it to extend the .NET out-of-the-box type resolving (alias 'Fusion') to do lookups on additional directories.

  • You can use our 'AssemblyIndexer' to subscribe a callback for every new loaded assembly.

  • You can use our 'ClassificationBasedAssemblyIndxer' which works like a Mandatory access control using 'Clearances' to control, which plug ins should be loaded, based on certain assembly meta-data or namespace-patterns. (may be to load different Product-Portfolios for specific Licenses or different customizings for specific tenants)

  • You can use our 'ExtensionMethodIndexer' to enumerate 'extension methods' for a type via reflection (as easy as real implemented methods of that type). This allows you to build framework technology, which also supports 'extension methods' with a semantics of a 'decentralized member' (like 'Calculated Fields' on a Entity) in order not to stand in the way of the settlement of this in its correct problem domain.

  • You can use our 'TypeIndexer' to subscribe a callback for every type which has a given attribute, inherits from a given base or implements a given interface.

  • You can use our generic 'ProviderRepository' which will automatically initialize and dispose instances of providers (of a given type) for you.

  • You can use our 'InstanceDiscovery'-Framework which comes as a additional, high level layer above the 'ComponentDiscovery' and represents a lightweight and smart DI framework - also with the focus on decentralized supply of service-instances (Singletons) and/or service-factories. See the 'InstanceDiscoveryContext'.

You can install this Lib via NuGet