Nixie 0.0.8-alpha
See the version list below for details.
dotnet add package Nixie --version 0.0.8-alpha
NuGet\Install-Package Nixie -Version 0.0.8-alpha
<PackageReference Include="Nixie" Version="0.0.8-alpha" />
paket add Nixie --version 0.0.8-alpha
#r "nuget: Nixie, 0.0.8-alpha"
// Install Nixie as a Cake Addin #addin nuget:?package=Nixie&version=0.0.8-alpha&prerelease // Install Nixie as a Cake Tool #tool nuget:?package=Nixie&version=0.0.8-alpha&prerelease
Nixie
A Lightweight Actor Model Implementation for C#/.NET
Overview
Nixie is a lightweight, high-performance implementation of the actor model tailored for the latest versions of C#/.NET. Developed with a focus on type safety, Nixie provides strongly-typed actors and takes full advantage of nullable support, thereby promoting a reduced error-prone codebase and bolstering performance. Built atop the Task Parallel Library (TPL) provided by .NET, it manages the lifecycle of actors diligently, ensuring a seamless and efficient concurrent programming experience.
Features
- Strongly-Typed Actors: Ensuring that your actor interactions are type-safe and as per expectations. High use of generics to avoid as much unnecessary boxing/unboxing as possible.
- Nullable Support: Full support for nullability in line with the latest C# features, ensuring your code is robust and safeguarded against null reference issues.
- Lifecycle Management: Nixie handles the meticulous management of actor lifecycle, allowing developers to focus on implementing logic.
- High Performance: Thanks to being lightweight and leveraging the powerful TPL, Nixie ensures that your actor systems are both scalable and performant.
- Less Error Prone: The strongly-typed nature and nullability checks inherently make your actor system more reliable and resilient.
- Built on TPL: Make the most out of the robust, scalable, and performant asynchronous programming features offered by TPL.
- Multi-Threading: To increase throughput, Nixie makes use of thread-safe structures that avoid locks wherever possible and use fine-grained locking where locks are necessary. Abstracting the complexities of multithreaded programming into an API that is easy to use and understand.
Getting Started
Prerequisites
- .NET SDK 6.0 or later
- A suitable IDE (e.g., Visual Studio, Visual Studio Code, or Rider)
Installation
To install Nixie into your C#/.NET project, you can use the .NET CLI or the NuGet Package Manager.
Using .NET CLI
dotnet add package Nixie --version 0.0.7-alpha
Using NuGet Package Manager
Search for Nixie and install it from the NuGet package manager UI, or use the Package Manager Console:
Install-Package Nixie -Version 0.0.7-alpha
Usage
Here's a basic example to get you started with Nixie. More comprehensive documentation and usage examples can be found in the /docs folder:
using Nixie;
public class GreetMessage
{
public string Greeting { get; }
public GreetMessage(string greeting)
{
Greeting = greeting;
}
}
public class GreeterActor : IActor<GreetMessage>
{
public GreeterActor(IActorContext<GreeterActor, GreetMessage> _)
{
}
public async Task Receive(GreetMessage message)
{
Console.WriteLine("Message: {0}", message.Greeting);
}
}
var system = new ActorSystem();
var greeter = system.Spawn<GreeterActor, GreetMessage>();
greeter.Send(new GreetMessage("Hello, Nixie!"));
Contribution
Nixie is an open-source project, and contributions are heartily welcomed! Whether you are looking to fix bugs, add new features, or improve documentation, your efforts and contributions will be appreciated. Check out the CONTRIBUTING.md file for guidelines on how to get started with contributing to Nixie.
License
Nixie is released under the MIT License.
Name origin
Nixies are mysterious shapeshifting water spirits in Germanic mythology and folklore.
Acknowledgements
Sincere thanks to all contributors and the C#/.NET community for the continual support and inspiration.
Let's build robust and efficient actor systems with Nixie! 🚀
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Logging (>= 7.0.0)
-
net7.0
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Logging (>= 7.0.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Logging (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.9 | 3,507 | 9/28/2024 |
1.0.8 | 4,514 | 8/3/2024 |
1.0.7 | 197 | 7/31/2024 |
1.0.6 | 235 | 7/30/2024 |
1.0.5 | 91 | 7/28/2024 |
1.0.4 | 100 | 7/28/2024 |
1.0.3 | 113 | 7/26/2024 |
1.0.2 | 106 | 7/26/2024 |
1.0.0 | 100 | 7/25/2024 |
0.0.8-alpha | 405 | 12/13/2023 |
0.0.7-alpha | 435 | 10/22/2023 |
0.0.6-alpha | 125 | 10/18/2023 |
0.0.5-alpha | 112 | 10/17/2023 |
0.0.4-alpha | 104 | 10/16/2023 |
0.0.3-alpha | 103 | 10/16/2023 |
0.0.2-alpha | 114 | 10/15/2023 |
0.0.1-alpha | 99 | 10/15/2023 |