DevStart Blogi Napisano Grudzień 9, 2015 Zgłoś Udostępnij Napisano Grudzień 9, 2015 W poprzednim poście użyliśmy metody ActorSelection w celu uzyskania referencji do aktora: var actor1 = system.ActorSelection("/user/ApplicationUserControllerActor/Piotr") Dzisiaj chciałbym bardziej skupić się na definiowaniu ścieżki do aktora. Pełna ścieżka może zawierać następujące elementy: – protokół – nazwa systemu – adres ip aktora – seria nazw aktorów opisująca hierarchie np. ApplicationUserControllerActor/actor1/actor2 itp. Załóżmy, że nasz aktor znajduje się na innym komputerze. Oznacza to, aby wysłać jakieś wiadomości do niego musimy skorzystać z protokołu sieciowego. Nazwa ścieżki będzie wtedy wyglądać: akka.tcp://FooHierarchySystem@89.124.43.14/user/ApplicationUserControllerActor/Piotr Jeśli nie korzystamy ze zdalnych aktorów, wtedy moglibyśmy napisać: akka://FooHierarchySystem/user/ApplicationUserControllerActor/Piotr W poprzednim poście jednak nie musieliśmy podawać nazwy systemu (FooHierarchySystem). Wynika to z faktu, że akka .net wspiera ścieżki relatywne. ActorSlection wywoływaliśmy bezpośrednio na systemie, zatem nie było potrzeby precyzowania tego w ścieżce. Można to porównać do ścieżek relatywnych występujących w systemie plików. Załóżmy, że jesteśmy teraz w aktorze ApplicationUserControllerActor i hierarchia jest taka sama jak w poprzednim wpisie: W celu uzyskania dostępu do jednej z instancji ApplicationUserActor możemy: // Pierwsze podejście Context.ActorSelection("akka://FooHierarchySystem/user/ApplicationUserControllerActor/Piotr"); // Drugie podejście Context.ActorSelection("user/ApplicationUserControllerActor/Piotr"); // Trzecie podejście Context.ActorSelection("Piotr"); Wszystkie ścieżki wskazują na tego samego aktora, a dwie ostatnie są relatywne. Podobnie z ApplicationUserControllerActor możemy: Context.ActorSelection("../../ApplicationUserControllerActor").Tell(new AddUser("AnotherUser")); Tak jak w ścieżkach systemu plików, ../ oznacza wejście o jeden poziom do góry. W powyższym przykładzie ../../ da nam referencję na /user, a potem schodzimy z powrotem na ApplicationUserControllerActor. Wyświetl pełny artykuł Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.