Warum wird der Akteur "ask" Muster als Anti-Muster oder "Code-Geruch" betrachtet?

8

Nach dem, was ich gesammelt habe, wird das "Ask" -Muster als schlechte Praxis angesehen und sollte vermieden werden. Das empfohlene Muster ist stattdessen das Modell "Akteur pro Anfrage". Für mich ergibt das aber keinen Sinn, da das "ask" -Muster genau das tut - es erzeugt pro Anfrage einen leichten Akteur. Warum wird das dann als schlecht angesehen, besonders wenn Futures viel kompostierbarer sind und in der Lage sind, den Zusammentrag von mehreren Send / Receivern eleganter zu handhaben?

    
Jeff 04.03.2015, 19:19
quelle

1 Antwort

8

Von Akka Dokumente :

  

"Es gibt Leistungseinbußen bei der Verwendung von ask, da etwas benötigt wird   Um den Überblick zu behalten, wann es abläuft, muss es etwas geben   überbrückt ein Versprechen in ein ActorRef und es muss auch erreichbar sein   durch Remoting. Also immer lieber für Leistung sprechen und nur fragen   wenn du musst. "

Aber manchmal möchten Sie eine Nachricht von außerhalb eines Akteurs senden, in diesem Fall können Sie ask verwenden. Die Verwendung von ask garantiert, dass Sie innerhalb des angegebenen Zeitlimits eine Antwort erhalten, und manchmal ist es das, was Sie wollen. Wenn Sie jedoch ask pattern verwenden, sollten Sie sich eine Frage stellen, ob Sie stattdessen Future s verwenden könnten.

Es gibt einen Platz für ask , aber es sollte aufgrund der oben genannten Gründe sehr begrenzt verwendet werden.

Sie müssen keinen Schauspieler pro Anfrage verwenden. Manche Schauspieler sollen langlebig sein, andere nicht. Wenn ein Akteur eine potenziell gefährliche oder blockierende Operation durchführt, möchten Sie möglicherweise eine pro Anfrage erstellen. Was auch immer zu Ihrer Anwendungslogik passt.

    
yǝsʞǝlA 05.03.2015, 06:08
quelle

Tags und Links