Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asynkron/protoactor-dotnet
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
https://github.com/asynkron/protoactor-dotnet
actors akka clustering distributed-computing distributed-systems proto-actor
Last synced: 4 days ago
JSON representation
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
- Host: GitHub
- URL: https://github.com/asynkron/protoactor-dotnet
- Owner: asynkron
- License: apache-2.0
- Created: 2017-01-01T16:13:35.000Z (almost 8 years ago)
- Default Branch: dev
- Last Pushed: 2024-10-12T06:20:02.000Z (about 1 month ago)
- Last Synced: 2024-11-04T13:38:05.710Z (9 days ago)
- Topics: actors, akka, clustering, distributed-computing, distributed-systems, proto-actor
- Language: C#
- Homepage: http://proto.actor
- Size: 18.8 MB
- Stars: 1,724
- Watchers: 96
- Forks: 287
- Open Issues: 94
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
- Support: .github/SUPPORT.md
Awesome Lists containing this project
README
### [💬 Join our Slack channel](https://join.slack.com/t/asynkron/shared_invite/zt-ko824601-yGN1d3GHF9jzZX2VtONodQ)
# Proto.Actor
Ultra-fast, distributed, cross-platform actors.
## Bootcamp Training
[https://github.com/AsynkronIT/protoactor-bootcamp](https://github.com/AsynkronIT/protoactor-bootcamp)
## Stats
![Alt](https://repobeats.axiom.co/api/embed/c9c21a6a706eda331cc8a38e4f03a7a844ed95f3.svg "Repobeats analytics image")
## Installing
Using NuGet Package Manager Console:
`PM> Install-Package Proto.Actor`
## Source code
This is the .NET repository for Proto Actor.
Other implementations:
- Go: [https://github.com/AsynkronIT/protoactor-go](https://github.com/AsynkronIT/protoactor-go)
## Design principles
**Minimalistic API** - The API should be small and easy to use. Avoid enterprisey containers and configurations.
**Build on existing technologies** - There are already a lot of great technologies for e.g. networking and clustering. Build on those instead of reinventing them. E.g. gRPC streams for networking, Consul for clustering.
**Pass data, not objects** - Serialization is an explicit concern - don't try to hide it. Protobuf all the way.
**Be fast** - Do not trade performance for magic API trickery.
## Getting started
The best place currently for learning how to use Proto.Actor is the [examples](https://github.com/AsynkronIT/protoactor-dotnet/tree/dev/examples). Documentation and guidance is under way, but not yet complete, and can be found on the [website](https://proto.actor/docs/).
### Hello world
Define a message type:
```csharp
internal record Hello(string Who);
```Define an actor:
```csharp
internal class HelloActor : IActor
{
public Task ReceiveAsync(IContext context)
{
var msg = context.Message;
if (msg is Hello r)
{
Console.WriteLine($"Hello {r.Who}");
}
return Task.CompletedTask;
}
}
```Spawn it and send a message to it:
```csharp
var system = new ActorSystem();
var context = system.Root;
var props = Props.FromProducer(() => new HelloActor());
var pid = context.Spawn(props);context.Send(pid, new Hello("Alex"));
```You should see the output `Hello Alex`.
## Sample application
[https://github.com/asynkron/realtimemap-dotnet](https://github.com/asynkron/realtimemap-dotnet)
## Contributors
Made with [contributors-img](https://contributors-img.web.app).
## Partners, Sponsors, and Contributor Companies
| Name | Role |
| ---------------------------------------- | ------------------------------------- |
| [Asynkron AB](https://asynkron.se) | Founder and owner of Proto.Actor |
| Helleborg AS | Core contributor team |
| [Ubiquitous AS](https://ubiquitous.no/) | Core contributor team |
| [Ahoy Games](https://www.ahoygames.com/) | Core contributor team |
| [Etteplan](https://www.etteplan.com/) | Contributing tutorials, documentation |