SystemLibrary.Common.Framework
8.5.0.2
dotnet add package SystemLibrary.Common.Framework --version 8.5.0.2
NuGet\Install-Package SystemLibrary.Common.Framework -Version 8.5.0.2
<PackageReference Include="SystemLibrary.Common.Framework" Version="8.5.0.2" />
<PackageVersion Include="SystemLibrary.Common.Framework" Version="8.5.0.2" />
<PackageReference Include="SystemLibrary.Common.Framework" />
paket add SystemLibrary.Common.Framework --version 8.5.0.2
#r "nuget: SystemLibrary.Common.Framework, 8.5.0.2"
#:package SystemLibrary.Common.Framework@8.5.0.2
#addin nuget:?package=SystemLibrary.Common.Framework&version=8.5.0.2
#tool nuget:?package=SystemLibrary.Common.Framework&version=8.5.0.2
SystemLibrary Common Framework
Description
Framework for every .NET application.
Requirements
>= .NET 8
Access & Contribute
To request access, email support@systemlibrary.com
with your GitHub username and specify the repo.
Read-only access is granted on request — no questions asked.
Once approved, you can fork, clone, and submit pull requests.
🚀 Features
🔧 Initialization
Use AddFrameworkServices()
and AddFrameworkMiddlewares()
to enable HTTPS redirection, caching, logging, auth, cookie policies, endpoints, and more.
var options = new FrameworkOptions();
services.AddFrameworkServices(options);
app.AddFrameworkMiddlewares(options);
⚙️ Config Mapping
Auto-binds JSON config files to C# classes by name, with transformations based on environment name.
~/myconfig.json: { url: "www.systemlibrary.com" }
class MyConfig : Config<MyConfig> { public string Url { get; set; } }
var url = MyConfig.Instance.Url;
📝 Logging
Global Log
instance with .Dump()
– similar to console.log
in JavaScript.
Log.Dump(typeof(string));
Log.Error("hello");
🧠 Cache
Sharded global cache with fallback, metrics, and auto key generation.
var value = Cache.Get<string>("key", () => Compute());
🌐 HTTP Client
Client which caches underlying HttpClient
with automatic retry policies, metrics and a circuit breaker [Gold Tier].
var json = Client.Get<string>("https://api.example.com/data");
var json2 = "https://api.example.com/data".Get<string>();
Metric UI
A metric UI rendering a pie chart per metric with the option to set a token to lock down the UI
/metrics/ui
📦 Extensions
.Json()
, .PartialJson()
, .Encrypt()
, .Decrypt()
, .ToBase64()
, .FromBase64()
, .Compress()
, .Decompress()
, .Obfuscate()
, .Deobfuscate()
, .Is()
, .IsNot()
, .GetCompressedId()
and more...
var json = user.Json();
var compressedId = json.GetCompressedId();
var encrypted = json.Encrypt();
var obfuscated = json.Obfuscate();
var hash = json.ToSha1Hash();
var base64 = json.ToBase64();
🔐 Encryption
Encrypt/decrypt using AES CBC PKCS7 via string/byte extensions with global key management.
var encrypted = "secret".Encrypt();
var decrypted = encrypted.Decrypt();
🧩 Enhanced Enums
Decorate enums with [EnumText]
and [EnumValue]
, and a JsonConverter is registered and injected into MVC, serialization/deserialization uses the attributes too. Use ToValue()
or ToText()
on the Enum yourself.
enum Role {
[EnumValue("adm")]
[EnumText("Administrator")]
Admin,
Guest
}
...
var role = Role.Admin.ToText(); // `Administrator`
var value = Role.Admin.ToValue(); // `adm`
var role = Role.Guest.ToText(); // `Guest`
var value = Role.Guest.ToValue(); // `Guest`
📡 BaseApiController
All API classes can inherit this, endpoints naturally registered and easily add attributes such as: [OriginFilter]
, [ApiTokenFilter]
and [UserAgentFilter]
.
Automatic 📖 /docs
endpoint listing all routes, inputs, and metadata.
[ApiTokenFilter(name: "hello", value: "world")]
public class MyApi : BaseApiController
{
}
🔗 ModelBinder
Model bindings auto-registered for DateTime and enum types — built to correctly parse most inputs into the values you actually want.
public class Controller
{
ActionResult Index(Role role, DateTime date)
{
}
}
Latest Release Notes
- 8.5.0.2
- Docs updated (fix)
- Async.Run removed, not in use (clean)
- Vision.md created (new)
Version history
View git history of this file if interested
Installation
Documentation
Documentation with code samples
Nuget
Vision
Futuristic vision to be a full framework: Future Vision
License
Free with Tiered Pricing for additional features at https://www.systemlibrary.com/
Dependencies
- Chart.js, licensed under the MIT License.
- Prometheus-net, licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Http.Polly (>= 8.0.15)
- prometheus-net (>= 8.2.1)
- SystemLibrary.Common.Framework.App (>= 8.5.0.2)
- SystemLibrary.Common.Framework.Cache (>= 8.5.0.2)
- SystemLibrary.Common.Framework.Client (>= 8.5.0.2)
- SystemLibrary.Common.Framework.Json (>= 8.5.0.2)
- SystemLibrary.Common.Framework.Net (>= 8.5.0.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SystemLibrary.Common.Framework:
Package | Downloads |
---|---|
SystemLibrary.Common.Episerver
Library with classes, methods and dijits for every .NET >= 8 episerver web application https://github.com/systemlibrary/systemlibrary-common-episerver/#Description Installation https://systemlibrary.github.io/systemlibrary-common-episerver/Install.html Documentation with sample code https://systemlibrary.github.io/systemlibrary-common-episerver/ |
GitHub repositories
This package is not used by any popular GitHub repositories.