Ho creato un servizio con un'API RESTful in ASP.NET, ospitato in IIS. All'interno di questo servizio, mi piacerebbe creare un sistema di attori con Akka.NET.Sistema di attori Akka.NET in ASP.NET
Dopo aver creato il sistema di attore:
var actorSystem = ActorSystem.Create("myActorSystem");
la seguente eccezione viene lanciata:
Una prima eccezione di possibilità di tipo 'System.InvalidOperationException' in System.Web.dll Ulteriori informazioni : Non è possibile avviare un'operazione asincrona in questo momento. Le operazioni asincrone possono essere avviate solo all'interno di un gestore o modulo asincrono o durante determinati eventi nel ciclo di vita della pagina. Se si è verificata questa eccezione durante l'esecuzione di una pagina, assicurarsi che la pagina sia contrassegnata con <% @ Page Async = "true"%>. Questa eccezione può anche indicare un tentativo di chiamare un metodo "async void", che generalmente non è supportato nell'elaborazione della richiesta ASP.NET. Invece, il metodo asincrono dovrebbe restituire un'attività e il chiamante dovrebbe attendere.
Il sistema attore è intrinsecamente un sistema concorrente con lo scambio di messaggi asincroni tra attori. Come spiegato here, questo sistema di attori non sarebbe sopravvissuto a IIS eliminando AppDomain, il che probabilmente è il motivo per cui viene generata l'eccezione di cui sopra.
This article spiega come eseguire attività in background in ASP.NET. Tuttavia, non vedo come potrei usarlo per il mio sistema di attori, poiché non ho alcun controllo sul ciclo di vita delle attività in background che potrebbero essere create da Akka.NET.
C'è un modo per farlo funzionare, o dovrei abbandonare l'idea di avere un sistema di attori in un'applicazione ASP.NET?
EDIT: Ho anche visto una domanda su Stackoverflow su implementing a REST service using Akka. Qualunque consiglio su una soluzione simile a Spray toolkit, ma funzionante per Akka.NET sarebbe il benvenuto.
Il modello di attore sembra fantastico. Ma ne hai davvero bisogno? – odinserj
Sto provando questo come una dimostrazione del concetto, non ne ho assolutamente bisogno. Una conclusione potrebbe essere che sarebbe troppo complicato. – Odsh