Jakaś dobra implementacja Actors dla C#? [zamknięte]

Czy jest jakaś dobra implementacja actors concurrency model dla. Net / c#?

Muszę zoptymalizować C# i uważam, że model actors idealnie pasuje jako rozwiązanie mojego problemu. Niestety mam doświadczenie tylko z implementacją Scali.

Author: CharlesB, 0000-00-00

13 answers

W tym celu należy zapoznać się z MS Concurrency & Coordination Runtime (CCR) oraz Decentralized Software Services (DSS), częścią Robotic Studio.

Te ramy pozwoliłyby na rozwój luźno powiązanych usług, które spełniają większość wymagań podejścia aktora.

Axum byłby najlepszy, niestety nadal jest w jakiejś fazie alfa / beta (UPDATE został zabity w lutym. 2011). Używam go do moich badań i muszę powiedzieć, że ogólny kierunek jest wielki i ma ogromny potencjał.

Nie C# , ale C++ jest biblioteką Microsoft asynchronicznych agentów, która daje Ci wszystkie funkcje, których potrzebujesz.

Przyjrzyj się dobrze równoległym funkcjom . NET 4.

Mam nadzieję, że to pomoże!

 22
Author: alex25,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-15 22:38:05

. NET Model Framework:

Proto.Aktor

  • aktorzy
  • Wirtualni Aktorzy

Https://github.com/AsynkronIT/protoactor-dotnet

Akka.NET

  • aktorzy

Https://github.com/akkadotnet/akka.net

Microsoft Orleans

  • Wirtualni Aktorzy

Https://github.com/dotnet/orleans

 49
Author: Roger Johansson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-24 07:50:44

Można też przyjrzeć się podejściu Project Orleans Microsofts do aktorów.(który został wydany w zeszłym tygodniu)

To jest strona projektu: http://research.microsoft.com/en-us/projects/orleans/

Oto również dobra rozmowa z build 2014 jako wprowadzenie

Wykorzystanie Orleans do budowy rozproszonych usług chmurowych Halo 4 na Azure http://channel9.msdn.com/Events/Build/2014/3-641

Należy pamiętać, że bity do pobrania opublikowane dzisiaj są CTP.

Wprowadzenie do Orleanu: http://felixnotes.com/orleans-microsofts-take-on-the-actor-pattern-in-net/

I tak, był też open source: https://github.com/dotnet/orleans

 24
Author: silverfighter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-02 21:25:15

Stact

Aktor-lib na .Net. całkiem kompetentny i dobrze sprawdzony. Fundacja TopShelf, MassTransit i NServiceBus.Gospodarz.

Https://github.com/phatboyg/stact

Zawiera abstrakcje:

    Obieg pracy, pozwalający na definiowanie i wykonywanie złożonych protokołów sterowanych przez Stany]}
  • kanały, do obsługi komunikatów przesyłanych pomiędzy obiektami
  • aktorzy, zarówno Pisani jak i Anonimowi
  • włókna, gwintowanie kooperacyjne model
  • Routing
  • Prośba / Odpowiedź
  • Schedulers

Nadchodzący:

  • właściwe hierarchie przełożonego

Jest aktywnie rozwijany w czasie pisania przez Chrisa.

Przegląd:

Tworzenie aplikacji współbieżnych wymaga podejścia, które odbiega od obecnych metod tworzenia oprogramowania, podejścia, które kładzie nacisk na współbieżność i komunikację między komponentami systemu autonomicznego. Model aktora definiuje system komponentów oprogramowania zwanych aktorami, które współdziałają ze sobą poprzez wymianę komunikatów (zamiast wywoływania metod na interfejsach w projekcie zorientowanym obiektowo), tworząc system, w którym dane (zamiast sterowania) przepływają przez komponenty, aby spełnić wymagania funkcjonalne systemu.

Stact jest biblioteką do budowania aplikacji z wykorzystaniem modelu actor w .NET. główny zespół, Stact.dll, jest biblioteką actor i zawiera wszystko, co potrzebne do korzystania z modelu actor w dowolnym rodzaj zastosowania. Istnieją również dodatkowe ramy wspierające, takie jak Stact.ServerFramework, który może być używany do wystawiania aktorów za pośrednictwem gniazd lub HTTP, umożliwiając tworzenie usług przy użyciu aktorów.

 18
Author: Henrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-06 15:27:13

NAct jest frameworkiem dla. NET, który wymaga naprawdę łatwego w użyciu podejścia. (Disclaimer: I wrote it)

Komunikat przechodzący między dwoma aktorami jest tylko wywołaniem metody między dwoma obiektami. Musisz się upewnić, że wszystkie argumenty metody są niezmienne i będą bezpieczne dla wątków.

Działa poprzez zawijanie obiektów w proxy, który zajmuje się przełączaniem wątków. Wszystkie normalne funkcje. NET, w szczególności zdarzenia, są obsługiwane poprawnie, więc można pisać normalny kod i łączenie wątków będzie przebiegać samodzielnie.

Istnieje nawet gałąź z obsługą C # 5 asynchronicznego / oczekującego.

 13
Author: Alex Davies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-03 22:16:28

Dzisiaj Microsoft ogłosił usługę Azure Service Fabric, która zgodnie z tym obrazem implementuje model programowania aktora:

Azure Service Fabric

Zobacz ogłoszenie: http://azure.microsoft.com/blog/2015/04/20/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/

Aktualizacja: SDK jest już dostępny, a także jest Video tutorial.

 5
Author: hasancc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-30 20:53:29

Nie znam żadnych implementacji do C#, ale jest zupełnie nowy język programowania oparty na modelu Actor firmy Microsoft. Nazywa się Axum :

Axum (wcześniej nazwa kodowa Maestro) - język programowania współbieżnego oparty na modelu Actor, rozwijany przez firmę Microsoft. Jest to obiektowy język oparty na środowisku uruchomieniowym. NET Common Language wykorzystujący składnię podobną do C, która jako język specyficzny dla domeny jest przeznaczona do rozwoju części aplikacji, która jest dobrze przystosowana do współbieżności. Zawiera jednak wystarczająco dużo konstrukcji ogólnego przeznaczenia, że nie trzeba przełączać się na język programowania ogólnego przeznaczenia (jak C#) dla sekwencyjnych części współbieżnych komponentów.

 4
Author: Anton Gogolev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-02 17:36:35

Czy rozważałeś Mailboxprocesor T, dostarczony z F#?

 2
Author: GregC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-07 13:12:39

Należy również rozważyć PostSharp aktorów

 2
Author: Omer Raviv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-09 09:12:09

Remact.Net to mój obecny projekt. Używa WebSockets i Json do zdalnego przesyłania wiadomości aktora. Posiada typesafety dla C# actors, ale także obsługuje typy dynamiczne dla aktorów opartych na przeglądarce napisane w Java script.

Moim poprzednim projektem był AsyncWcfLib . Jest to biblioteka C# dla aktorów komunikujących się w procesie lub między różnymi aplikacjami. Zdalne przekazywanie wiadomości wykorzystuje WCF.
Usługa actor catalog umożliwia wyszukiwanie aktora na kilku hostach.Gospodarze mogą Uruchom Windows lub Linux.

 1
Author: Stefan Forster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-19 23:01:29

FSharp.Aktor

/ Align = "left" /

Z przykładu:

let rec schizoPing =
    (fun (actor:IActor<_>) ->
        let log = (actor :?> Actor.T<_>).Log
        let rec ping() =
            async {
                let! (msg,_) = actor.Receive()
                log.Info(sprintf "(%A): %A ping" actor msg, None)
                return! pong()
            }
        and pong() =
            async {
                let! (msg,_) = actor.Receive()
                log.Info(sprintf "(%A): %A pong" actor msg, None)
                return! ping()
            }
        ping()
    )

Wysłanie dwóch Wiadomości do aktora "schizo" skutkuje

let schizo = Actor.spawn (Actor.Options.Create("schizo")) schizoPing

!!"schizo" <-- "Hello"
!!"schizo" <-- "Hello"

Wyjście:

(schizo): "Hello" ping
(schizo): "Hello" pong

Znajdź go na github i na docs

 0
Author: Henrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-17 09:10:06

Właśnie zauważyłem to pytanie i pomyślałem o dodaniu nowszego punktu danych. Microsoft ma obecnie częściowo oficjalny projekt dla tego, o nazwie ActorFX . Jest to open source i wciąż ewoluuje, ale warto mieć na niego oko...

 0
Author: Justin du Coeur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-30 13:21:31

Jak już wspomniano, Klasa MailboxProcessor F#oferuje prostą, prostą implementację modelu actor. Fantastyczne wprowadzenie do tego, jak z niego korzystać, jest dostępne

 0
Author: ,
Warning: date() expects parameter 2 to be long, string given in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54