2013-04-26 16 views
5

Ich habe dies noch nicht versucht, aber ich möchte, dass jedes Modul (Silverlight) seine eigenen Routen registriert, anstatt es beim Start der Anwendung hinzuzufügen.ServiceStack: Routen dynamisch hinzufügen

Kann Routen nach Anwendungsstart AppHost hinzugefügt werden, oder tun sie alle immediatelly während Configure registriert werden müssen Schritt?

Ich denke alle Baugruppen beim Start zu scannen und AppHost mit allen Baugruppen bieten die Service-Stack Dienste zu implementieren, aber sie jedes Modul seine eigenen Routen hinzufügen (noch nicht genauer Mechanismus herausgefunden.

Bevor ich nach unten gehen diesen Weg, müssen wissen, ob es möglich ist, Routen nach dem konfigurieren Schritt hinzuzufügen.

Antwort

5

die gesamte Konfiguration und Registrierung in ServiceStack sollte danach unveränderlich im AppHost.Configure() Verfahren und bleiben durchgeführt werden.

wenn Sie möchten, enca pSulate Registrierungen von Routen in einem Modul als packen Sie es als Plugin und registrieren Sie sie manuell auf IPlugin.Register(IAppHost).

Hier sind einige verschiedene Möglichkeiten, Routen registrieren:

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"); 
    } 
} 

Dann in Ihrem AppHost.Configure Sie das Plugin registrieren würde, zum Beispiel:

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

Wenn Routen der Registrierung als in AppHost, allgemeine Parameter wurde ein Anfragetyp, aber hier ist es ein Service? – epitka

+0

@epitka aktualisiert, nimmt RegisterService einen Service-Typ an, während Routes.Add einen Request-DTO-Typ annimmt – mythz