equadrat.Framework.Core.Interfaces 6.4.4

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package equadrat.Framework.Core.Interfaces --version 6.4.4
NuGet\Install-Package equadrat.Framework.Core.Interfaces -Version 6.4.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="equadrat.Framework.Core.Interfaces" Version="6.4.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add equadrat.Framework.Core.Interfaces --version 6.4.4
#r "nuget: equadrat.Framework.Core.Interfaces, 6.4.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install equadrat.Framework.Core.Interfaces as a Cake Addin
#addin nuget:?package=equadrat.Framework.Core.Interfaces&version=6.4.4

// Install equadrat.Framework.Core.Interfaces as a Cake Tool
#tool nuget:?package=equadrat.Framework.Core.Interfaces&version=6.4.4

equadrat Framework Core

The idea of the equadrat Framework is to provide APIs to build applications with an architecture of highly decoupled components. Every single component, aspect or pattern is represented by interfaces. The framework provides a standard implementation for these but each type can be replaced by a custom implementation.

The framework is not about reimplementing components, but making them available using common interfaces.

Getting started

You can use most of the components by simply instantiating them. This is maybe the easiest way to evaluate the framework.

If you're using an IOC/DI container such as Microsoft Extensions DependencyInjection or if you want to use the built-in IOC framework, you can use the bootstrapper and bootstrapper modules to register the framework to the IOC.

Usage

Have a look at the example applications on my website: www.equadrat.net

Interesting components

This is a list of some (not all) components of the framework which might be interesting for you.

Architecture

  • ICoreCommandFactory
  • ICoreEventFactory
  • ICoreEventHandlerInterruptRegistry
  • ICoreInstancePoolFactory
  • ICoreOwnerTokenFactory
  • ICorePropertyObserverFactory
  • ICoreSequenceDependencyTrackerFactory
  • ICoreSuspendableRelayFactory
  • ICoreSystemTimeProvider

Collections & Data

  • ICoreBinaryOperationsHelper
  • ICoreCollectionHelper
  • ICoreCollectionFactory
    • ICoreArrayList
    • ICoreBinaryHeap
    • ICoreList
    • ICoreListSegment
    • ICoreObservableCollection
    • ICorePrioritizedQueue
    • ICorePrioritizedStack
    • ICorePolymorphList
    • ICoreQueue
    • ICoreReadOnlyList
    • ICoreReadOnlyListSegment
    • ICoreReadOnlyListWithExclusion
    • ICoreReadOnlyObservableCollection
    • ICoreStack
  • ICoreCollectionObserverFactory
    • ICoreCollectionMerger
    • ICoreCollectionObserver
    • ICoreCollectionSorter
    • ICoreCollectionSplitter
  • ICoreEmbeddedResourceAccessor
  • ICoreHashProcessor
  • ICoreHashProcessorProvider
  • ICoreRandomDataProvider
  • ICoreStringPatternPredicateFactory
  • ICoreValueConverterFactory
  • ICoreVarIntHelper

IOC

  • ICoreBootstrapper
  • ICoreBootstrapperModule
  • ICoreBootstrapperHostProvider
  • ICoreIOCFactory
  • ICoreIOCInstanceFactory
  • ICoreIOCInstanceProvider
  • ICoreIOCRegistry
    • CoreIOCRegistry
    • CoreServiceCollectionWrapper & CoreServiceProviderWrapper

Reflection

  • ICoreExpressionHelper
  • ICoreReflectionHelper

Logging

  • ICoreLoggingContext
  • ICoreLoggingEvent
  • ICoreLoggingProduct
  • ICoreLoggingTarget
    • CoreAppInsightsLoggingTarget
    • CoreLoggingConsoleLogTarget
    • CoreLoggingTextFileTarget
    • CoreLoggingTraceLogTarget
    • CoreNLogTarget
    • CoreSerilogTarget

Serialization

  • ICoreSerializer
  • ICoreSerializerFormat
    • CoreBsonNewtonsoftFormat
    • CoreJsonDataContractFormat
    • CoreJsonNewtonsoftFormat
    • CoreProtobufFormat
    • CoreXmlClassicFormat
    • CoreXmlDataContractFormat
  • ICoreSerializerProvider

Threading

  • ICoreDispatcher
    • CoreAvaloniaDispatcher
    • CoreMauiDispatcher
    • CoreThreadDispatcher
    • CoreWebAssemblyDispatcher
    • CoreWpfDispatcher
    • CoreXamarinFormsDispatcher
  • ICoreLockFactory
  • ICoreTaskFactory
  • ICoreTaskQueue
  • ICoreTaskScheduler
  • ICoreThreadFactory
  • ICoreThreadPool

Cryptography

  • ICoreCryptographyAsymmetricCipherGenerator
  • ICoreCryptographyAsymmetricCipherOperator
  • ICoreCryptographyAsymmetricCipherOperatorProvider
  • ICoreCryptographySigner
  • ICoreCryptographySignerProvider

Licensing

  • ICoreLicenseFactory
  • ICoreLicenseOperator
  • ICoreLicenseValidator

Native code & marshalling

  • ICoreNativeLibraryLoader

Compatibility

The plan is to keep the equadrat Framework compatible to these .net versions as long as possible.

.net version min max
Core 3.1 ≥ 8.x
Standard 2.0 ≥ 2.1
Framework 4.6.2 ≥ 4.8.x

Version scheme and breaking changes

Version change Scope
Major Overhaul of the project
Minor Some types have changed
Revision Fully backward compatible
Build Set in preview versions only

Additional documentation

You can find some guides regarding specific features on my website: www.equadrat.net

Feedback

You can contact me on my website: www.equadrat.net

License

Please respect the license and check equadrat.Framework.Core.License.md before using the package.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (52)

Showing the top 5 NuGet packages that depend on equadrat.Framework.Core.Interfaces:

Package Downloads
equadrat.Framework.Core The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

A framework to extend the Microsoft .net framework with extra core functionality.

equadrat.Framework.Mvvm.Interfaces The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

A framework to extend the Microsoft .net framework with extra mvvm functionality.

equadrat.Framework.Core.Microsoft.Extensions.DependencyInjection The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

A framework to extend the Microsoft .net framework with extra core functionality.

equadrat.Framework.Mvvm The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

A framework to extend the Microsoft .net framework with extra mvvm functionality.

equadrat.Framework.Data.Interfaces The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

A framework to extend the Microsoft .net framework with extra data functionality.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
7.1.0 1,454 4/20/2024
7.0.1 1,442 4/6/2024
7.0.0 1,367 4/1/2024
6.4.4 1,175 3/16/2024
6.4.3 1,072 3/9/2024
6.4.2 1,357 3/3/2024
6.4.1 943 2/10/2024
6.4.0 1,889 12/30/2023
6.3.5 815 12/25/2023
6.3.4 1,245 12/5/2023
6.3.3 1,892 11/15/2023
6.3.2 1,415 10/21/2023
6.3.1 1,334 10/7/2023
6.3.0 1,622 10/1/2023
6.2.0 2,373 8/19/2023
6.1.2 1,339 8/15/2023
6.1.1 1,241 8/13/2023
6.1.0 1,832 8/12/2023
6.0.9 1,301 8/4/2023
6.0.8 1,954 7/22/2023
6.0.7 2,471 6/25/2023
6.0.6 1,397 6/3/2023
6.0.5 1,485 5/28/2023
6.0.4 1,498 5/23/2023
6.0.3 2,603 5/21/2023
6.0.1 2,156 5/19/2023
6.0.0 2,779 5/6/2023

====
v6.4.4
====
- Compatibility release.
====
v6.4.3
====
- Added ICoreBootstrapperHostProvider which is used to keep the host which was used during start/init process.
- Improved CoreWebAssemblyDispatcher to use ICoreBootstrapperHostProvider to get the WebAssemblyHost.
- Improved CoreWebAssemblyDispatcher to provide more helpful information when throwing exceptions due to missing ASP.net Dispatcher.
====
v6.4.2
====
- Compatibility release.
====
v6.4.1
====
- Added CoreWebAssemblyDispatcher.
- Extended fluent API to setup bootstrapper module dependencies to support optional dependencies to not throw an exception if an optional module is missing.
- Specifying that a method of another bootstrapper module shall be skipped will no longer throw an exception if that module is missing.
- Refactored AutoDataTemplateSelector and RelayDataTemplate to match interfaces when using Avalonia.
- Refactored Core[Data|Property]ChangedEventArgsHelper to support 'null' as property name.
- Fixed documentation of CoreAvaloniaDispatcher.
====
v6.4.0
====
- Refactored equadrat's Microsoft.Extensions.AspNetCore.Mvc and Microsoft.Extensions.AspNetCore.OpenApi parts to be compatible with Microsoft.Extensions.DependencyInjection.
- Added bootstrapper module to Microsoft.Extensions.AspNetCore.Mvc to register and setup the required services.
- Added resolver modes for CoreReferenceException.
- Internal refacorings to use MaybeNullWhenAttribute when applicable.
====
v6.3.5
====
- Internal refacorings to use ConfigureAwait(false) when applicable.
- Added CoreStream as an extended version of Stream but with SecureDispose support.
====
v6.3.4
====
- Improved CoreVarIntHelper.
====
v6.3.3
====
- Added .net 8 support.
====
v6.3.2
====
- Added overloads for hash processors to support more data types.
- Added overloads for cryptographic signers to support more data types.
- Assigned EnumMemberAttribute to eCoreTriState fields to be compatible to (nullable) boolean.
====
v6.3.1
====
- Added overloads for cryptographic signers and operators to support more data types.
- Added more cryptographic signer algorithms to be registered by default.
- Added base interface and base class for ICoreSecureArray which is used by ICoreSecureString too.
- Added SkipDisposeOnFinalize method to ICoreSecureArray.
- Fixed issue in README file.
====
v6.3.0
====
- Implement separate project for cryptographic signing.
- Refactored Core.Licensing to use Core.Cryptography.
- Added ICoreLoggingTimeFormatterProperties to ICoreLoggingEntryFixedTextFormatter and ICoreLoggingEntryFloatingTextFormatter to make them configurable.
- Refactored ICoreSerializerLengthPrefixProcessor to support asynchronous read-/write-methods.
- Added ICoreVarIntHelper to read and write VarInt values.
- Added CoreSerializerLengthPrefixVarIntProcessor to use VarInt for serialization.
- Extended CoreStringWriter and refactored some serializers to use ArrayPool when writing data to the stream.
- Extended ICorePolymorphList to support a shared state used by multiple instances.
- Extended CorePolymorphList to support a custom convert callback for items.
- Extended ICoreCollectionFactory to support new options for ICorePolymorphList.
- Refactored ICoreSerializerLengthPrefixProcessorProvider to use CoreSerializerRepresentation instead of eCoreSerializerRepresentation.
- Made eCoreSerializerRepresentation obsolete.
- ICoreReflectionHelper.GetKnownTypes considers the first inheritance level of KnownTypeAttribute assignments on classes only.
====
v6.2.0
====
- Refactored CoreSharedWaitHandle to CoreWaitHandle.
- Extended ICoreLockFactory by adding a parameter to specify whether to use slim or regular wait handles.
- Extended ICoreLockFactory by adding a parameter to specify whether to use shared or dedicated wait handles.
- Extended ICoreLockFactory to create wrappers for WaitHandles.
====
v6.1.2
====
- Added virtual Core(Async|Hybrid)DisposableSlim.UseStrictDispose property which returns false by default. Strict dispose means that any other call to Dispose(Async) after the first call will throw an exception.
====
v6.1.1
====
- Fixed LockRecursionException in CoreLifetimeLockSlim implementation if an action was registered to its CancellationToken which accessed the lifetime lock again.
====
v6.1.0
====
- Added ICoreAsyncObserver and ICoreAsyncObservable.
- Added extension methods to wrap the core interfaces to the native interfaces.
- Added extension methods to easily forward CancellationToken cancellations to other CancellationTokenSources/CancellationTokens.
- Added CoreLifetimeLock to easily handle the lifetime of an instance while it is used.
- Extended CoreSharedWaitHandle by adding IDisposable implementation.
- Added ICoreDisposableSlim and ICoreDisposableSlim to have a base class without events.
- Added CoreHybridDisposableSlim as a base class which implements ICoreDisposable and ICoreAsyncDisposable.
- Changed base class of CoreSemaphoreSlim to CoreDisposableSlim.
- Refactored ICoreDisposable and ICoreAsyncDisposable to base on the slim versions.
- Made ICoreIOCInstance obsolete.
- Improved performance of CoreQueue.Enqueue(IEnumerable<T> items) if items is of type ICollection<T>.
- Added System.Buffers as package reference for .net Standard 2.0.
====
v6.0.9
====
- Fixed bug in CoreProtobufTypeModelBuilder of CoreProtobufSerializer to register implicitly linked known types to the type model.
- Added Freeze option to CoreProtobufSettings to not freeze the type model.
====
v6.0.8
====
- Added ICoreLoggingContext.Attach overload with predicate for ICoreLoggingEntry.
- Extended ICoreLoggingEventParametersOverride to support overriding custom event properties.
- Implemented ICoreAsyncQueue and ICoreAsyncPrioritizedQueue as implementations of IAsyncEnumerable.
- Extended ICoreCollectionFactory to create instances of ICoreAsyncQueue and ICoreAsyncPrioritizedQueue similar to ICoreQueue and ICorePrioritizedQueue.
- Added ICoreSerializerOptions to configure a serializer, i.e. specify a callback to convert a model before serialization.
- Extended ICoreSerializerProvider and ICoreSerializerFormat to support ICoreSerializerOptions.
- Fixed CoreFrameworkIocBootstrapperModule.InitIocHelper to check CoreIOCHelper.CanSetResolver first.
- Improved Core...Exceptions to provide more information.
- Extended CoreReadOnlyObservableCollection<> to support IList and IList<>.
- Upgraded Avalonia UI NuGet package references to v11.x.
- Upgraded Portable.BouncyCastle v1.x NuGet package references to BouncyCastle.Cryptography v2.x.
====
v6.0.7
====
- Enabled IL trimming.
- Added README.md file to the NuGet package.
====
v6.0.6
====
- Added overload of ICoreLoggingEvent.WithProperty(IEnumerable<ValueTuple>).
- Refactored ambiguous constructors of CoreLicense[...] classes by adding static factory methods instead.
====
v6.0.5
====
- Added overloads to register logging products and events using a single options parameter.
- Added support to specify custom properties for logging events on register or when logging.
- Added workaround for ambiguous reference when using CoreEnumerableExtensions.AsReadOnly with IDictionary and .net 7+.
====
v6.0.4
====
- Added base class for loggers.
====
v6.0.3
====
- Fixed bug in the Microsoft.Extensions.DependencyInjection wrappers when registering (singleton/scope) routes.
- Fixed bug in the Microsoft.Extensions.DependencyInjection wrappers when using an instance provider.
====
v6.0.2
====
- Fixed bug in the bootstrapper module initialization logic.
====
v6.0.1
====
- Added wrappers for Microsoft.Extensions.DependencyInjection to let IServiceCollection work as ICoreIOCRegistry and to let IServiceProvider work as ICoreIOCFactory.
- Added parameterless overload of ICoreBootstrapper.Startup to access a two-step fluent API to support DI-containers which use the builder pattern (i.e. Microsoft.Extensions.DependencyInjection).
- Renamed CoreFrameworkBootstrapperModulesSelector to CoreFrameworkBootstrapperModuleSelector.
- Added SessionId to ICoreLoggingContext and ICoreLoggingEntry to provide a unique identifier for the current (source) session of a logging entry.
- Added ICoreLoggingSessionIdProvider to generate session identifiers.
- Extended logging targets for Application Insights, NLog and Serilog to passthrough ICoreLoggingEntry.SessionId.
- The Application Insights logging target will use trace telemetry for logging entries without exception.
====
v6.0.0
====
- Initial Release