Skip to content

The Fusonic .NET Extensions project aggregates several thoughtfully designed, reusable class libraries, which can be used in modern .NET application development. Fusonic successfully uses these libraries in its own individual projects.

License

fusonic/dotnet-extensions

Repository files navigation

Fusonic Extensions

build nuget licence

The Fusonic Extensions project aggregates several thoughtfully designed, reusable class libraries, which can be used in modern .NET application development. Fusonic successfully uses these libraries in its own individual projects. Some packages are general purpose libs which can be used by any kind of .net project (console, web, rich client). Other packages may be best suited for ASP.NET Core development. Because we believe that they can be useful for the broader community, we open source it under a permissive license.

Currently primary development takes place at a private repository at Gitlab.com. The project on Github.com is updated on a daily basis, but does not include any issues managed at Gitlab. However, we are happily accepting issues and pull requests on Github as well! Feel free to open an issue or merge request. If we see broader community engagement in the future, we may consider switching our primary development to Github.

Fusonic Extensions follows the official yearly .NET release cycle. Latest Fusonic Extensions main branch targets .NET 8.0.

Packages

Fusonic Extensions consists of several thoughtfully designed class libraries which are split into logical areas. Documentation is provided per package. In order to increase versioning and deployment complexity, all packages share a common semantic versioning scheme.

NuGet Provides ASP.NET Core extensions (Middelwares, Utilities ...). See the documentation for more details.

NuGet Adds serval small helpers and common abstractions. See the documentation for more details.

NuGet Adds support for sending emails. See the documentation for more details.

NuGet Extensions for EF Core.

NuGet Provides Hangfire extensions, especially suited for CQRS developement. (Out of band processing). See the documentation for more details.

NuGet Provides services and extensions for hosting. See the documentation for more details.

NuGet Provides simple mediator implementation. See the documentation for more details.

NuGet Xunit-based testing base classes with support for dependency injection. Libraries supporting specific DI containers (SimpleInjector, ServiceProvider) are in separate packages. See the unit test documentation for more details.

NuGet Xunit-based testing base classes. Supports dependency injection with Microsofts Dependency Injection framework (ServiceProvider).. See the unit test documentation for more details.

NuGet Xunit-based testing base classes. Supports dependency injection with SimpleInjector.. See the unit test documentation for more details.

NuGet Adds database support using EF Core to the unit tests. See the unit test documentation for more details.

NuGet Adds support for database tests using EF Core with PostgreSQL. See the unit test documentation for more details.

NuGet Adds support for database tests using EF Core with Microsoft SQL Server. See the unit test documentation for more details.

Important information

Goals

  • Reusable class libraries with high quality and high reusability
  • Supports quality and velocity in fusonic projects
  • More quality because of strong testing focus
  • Stable

Non-Goals

  • We do not implement framework-code but focus on re-usable class libraries
  • No DI abstractions necessary (SimpleInjector or MediatR are committed core libraries used in Fusonic Extensions)

Naming

Fusonic.Extensions.* (Ex. Fusonic.Extensions.Abstractions)

"AspNetCore" specific extensions land in "AspNetCore" "namespace".

What code can be added to Fusonic Extensions?

  • Reusable abstract logic which is generally valid and meaningful.
  • Stability: Code should not be very volatile and, at best, tested. It should change as little as possible to the public API.
  • Extensible: Logic should, if reasonably practicable, be extensible and flexible (eg virtual methods)

Standards (QA/Versioning, Unit-Tests)

Allowed base dependencies

If possible, only .NET BCL libraries should be referenced. Especially with abstract code. We try to reference as few dependencies as possible. However, we agree on the following core technologies, if absolutely necessary for the meaningfulness of the package:

  • SimpleInjector
  • MediatR
  • Entity FrameworkCore

Integration Workflow

  1. Create a proposal on Gitlab.com (fusonic developers) or Github.com (external developers)
  2. Detailed description of the use cases and API (also with MR request)
  3. Notify Fusonic Extensions "Design member board" (David Roth, Johannes Hartmann)
  4. Discussion in GL Issue or Mr Request or Design Meeting
  5. New APIs require the approval of at least one board member
  6. New APIs should be communicated (announcement)

About

The Fusonic .NET Extensions project aggregates several thoughtfully designed, reusable class libraries, which can be used in modern .NET application development. Fusonic successfully uses these libraries in its own individual projects.

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages