2013-04-26 6 views
5

Nie próbowałem tego jeszcze, ale chciałbym, aby każdy moduł (Silverlight) rejestrował własne trasy, zamiast dodawać je podczas uruchamiania aplikacji.ServiceStack: Dynamiczne dodawanie tras

Czy trasy mogą być dodawane do AppHost po uruchomieniu aplikacji, czy też wszystkie muszą być natychmiast zarejestrowane podczas Konfigurowania kroku?

myślę skanowanie wszystkich zespołów na starcie i zapewniają AppHost ze wszystkich zespołów, które realizują usługi stosu usług, ale niech każdy moduł dodać własne trasy (nie zorientowali się jeszcze dokładny mechanizm.

zanim podążać tą drogą, trzeba wiedzieć, czy jest możliwe, aby dodać trasy po kroku skonfigurować.

Odpowiedz

5

Wszystko Konfiguracja i rejestracja w ServiceStack powinno odbywać się w sposób AppHost.Configure() i pozostają następnie niezmienna.

Jeśli chcesz enca psulate rejestracje tras w module niż zapakuj go jako Plugin i zarejestruj je ręcznie na IPlugin.Register(IAppHost).

Oto kilka różnych sposobów, aby zarejestrować tras:

public class MyModule : IPlugin 
{ 
    public void Register(IAppHost appHost) 
    { 
     appHost.Routes.Add<MyRequestDto>("/myservice", "POST PUT"); 

     appHost.Routes.Add(typeof(MyRequestDto2), "/myservice2", "GET"); 

     appHost.RegisterService(typeof(MyService), "/myservice3"); 
    } 
} 

Następnie wewnątrz AppHost.Configure byłoby zarejestrowaniu wtyczki np:

Plugins.Add(new MyModule()); 
+0

Kiedy registring tras, w AppHost, generyczny parametr typ zapytania, ale czy jest to usługa? – epitka

+0

@epitka zaktualizowana, usługa RegisterService przyjmuje typ Service, natomiast Routes.Add pobiera żądanie typu DTO – mythz