Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AsynkronIT/protoactor-dotnet
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
https://github.com/AsynkronIT/protoactor-dotnet
actors akka clustering distributed-computing distributed-systems proto-actor
Last synced: 2 months ago
JSON representation
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
- Host: GitHub
- URL: https://github.com/AsynkronIT/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-08-31T06:30:37.000Z (2 months ago)
- Last Synced: 2024-09-03T13:30:50.526Z (2 months ago)
- Topics: actors, akka, clustering, distributed-computing, distributed-systems, proto-actor
- Language: C#
- Homepage: http://proto.actor
- Size: 18.5 MB
- Stars: 1,705
- Watchers: 98
- Forks: 285
- Open Issues: 92
-
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
- awesome-dotnet-core - protoactor-dotnet - Golang和C#的快速分布式Actor。 (框架, 库和工具 / 应用程序框架)
- fucking-awesome-dotnet-core - protoactor-dotnet - Ultra fast distributed actors for Golang and C# [http://proto.actor](http://proto.actor). (Frameworks, Libraries and Tools / Application Frameworks)
- awesome-fsharp - Proto.actor ★ 692 ⧗ 0 - Cross-platform actor framework for .NET, GO, JAVA and KOTLIN. [Apache 2.0] (Actor frameworks)
- awesome-dotnet-core - protoactor-dotnet - Ultra fast distributed actors for Golang and C# [http://proto.actor](http://proto.actor). (Frameworks, Libraries and Tools / Application Frameworks)
- awesome-csharp - protoactor-dotnet - Proto Actor - Ultra fast distributed actors for Golang and C# (Distributed Computing)
- awesome-dotnet-cn - protoactor-dotnet - Proto Actor - 适用于Golang和C#的超快分布式Actor。 (分布式计算)
- awesome-dotnet - protoactor-dotnet - Proto Actor - Ultra fast distributed actors for Golang and C# (Distributed Computing)
- awesome-dotnet-core - protoactor-dotnet - Ultra fast distributed actors for Golang and C# [http://proto.actor](http://proto.actor). (Frameworks, Libraries and Tools / Application Frameworks)
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 |