Feuer und vergessen Sie mit der AsyncServiceBase von ServiceStack

8

Ich habe folgenden Service

%Vor%

welches von verschiedenen Verbrauchern nach dem Weg

aufgerufen wird %Vor%

Bei der Verwendung von asynconeway ging ich davon aus, dass es mir erlauben wird, Feuer zu machen und zu vergessen, wie WCF es mit IsOneWay macht. Aber scheint nicht der Fall zu sein.

Vermisse ich etwas?

    
ruslander 20.06.2012, 16:35
quelle

1 Antwort

8

AsyncServiceBase wurde als ExecuteAsync befindet sich jetzt in ServiceBase, was aufgerufen wird, wenn eine Anfrage gestellt wird / asynconeway / XXX vordefinierter Endpunkt.

Anstatt ExecuteAsync zu überschreiben, empfehlen wir, IMessageFactory , was aufgerufen wird, wenn ein IMessageFactory im AppHost IOC registriert wurde. Wenn eine IMessageFactory nicht registriert wurde, wird sie nur zur Ausführung der Synchronisierung ausgeführt - zu diesem Zeitpunkt würden Sie sie überschreiben, wenn Sie sie weiterhin blockieren möchten. Das Impl für ExecuteAsync ist bei:

%Vor%

IMessageFactory (client) / IMessageService (server) ist ein Teil der ServiceStack-Messaging-API, mit der Sie Nachrichten für spätere Ausführung später veröffentlichen können. Im Wiki für Redis und Messaging finden Sie ein Beispiel für eine End-to-End-Lösung, die den integrierte Redis IMessageService. Es gibt auch InMemory und RCon IMesssageService ist verfügbar und es sollte auch einfach zu erstellen sein.

Zukünftige Async-Unterstützung

Es gibt auch einen asynchronen Zweig mit ServiceStack, der auf IHttpAsyncHandler ausgeführt wird und bereits über einen funktionalen Alpha-Build verfügt zur Verfügung: ServiceStack-v4.00-alpha.zip

Mit dieser Änderung unterstützt ServiceStack Task<> als Rückgabetyp für Dienste. Sie müssen nur die Task & lt; & gt; Plugin . Ein vollständiges Beispiel finden Sie unter diesem Integrationstest .

    
mythz 20.06.2012, 18:42
quelle

Tags und Links