GithubHelp home page GithubHelp logo

anthrax3 / protoactor-dotnet Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rogeralsing/protoactor-dotnet

0.0 1.0 0.0 622 KB

Proto Actor - Ultra fast distributed actors for Golang and C#

Home Page: http://proto.actor

License: Apache License 2.0

C# 97.21% PowerShell 1.47% Shell 0.71% Protocol Buffer 0.40% Batchfile 0.22%

protoactor-dotnet's Introduction

Build status

Join the chat at https://gitter.im/AsynkronIT/protoactor

Proto.Actor

Ultra-fast, distributed, cross-platform actors.

Installing

Using NuGet Package Manager Console: PM> Install-Package Proto.Actor

Source code

This is the .NET repository for Proto Actor.

Other implementations:

How to build

Proto.Actor uses and requires the VS2017 build system in order to build. You can either use the dotnet CLI commands, or use Visual Studio 2017.

We also use Cake for orchestrating the CI builds. The CI build basically runs dotnet restore, dotnet build, dotnet test and dotnet pack. To run a full CI build execute either .\build.ps1 or ./build.sh, depending on your environment.

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. Documentation and guidance is under way, but not yet complete, and can be found on the website.

Hello world

Define a message type:

internal class Hello
{
    public string Who;
}

Define an actor:

internal class HelloActor : IActor
{
    public Task ReceiveAsync(IContext context)
    {
        var msg = context.Message;
        if (msg is Hello r)
        {
            Console.WriteLine($"Hello {r.Who}");
        }
        return Actor.Done;
    }
}

Spawn it and send a message to it:

var props = Actor.FromProducer(() => new HelloActor());
var pid = Actor.Spawn(props);
pid.Tell(new Hello
{
    Who = "Alex"
});

You should see the output Hello Alex.

protoactor-dotnet's People

Contributors

adamhathcock avatar alexpantyukhin avatar andersarpi avatar cpx86 avatar davidbonnici1984 avatar jasprem avatar jeffdoolittle avatar jokokko avatar jrouaix avatar raskolnikoov avatar rikbosch avatar rogeralsing avatar tomliversidge avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.