2014-02-10 9 views
8

Können Sie mir einige Artikel oder Codebeispiele über Plugin-Architektur in Web-API vorschlagen?ASP.NET Web.Api Plugin Architektur

Momentan denke ich über dieses Szenario nach: 1, zentralisiertes API-Gateway, wo jeder Client eine Anfrage sendet, und verschiedene Anwendungscontroller im Plugins-Ordner haben. Wenn jemand neue Dienste hinzufügen möchte, schreibt er eigene Controller und legt DLL-Dateien im Plugin-Ordner ab.

Antwort

4

Zum Suchen von Controller-Klassen zur Laufzeit können Sie einen Assembly-Resolver schreiben.

public class MyAssembliesResolver : DefaultAssembliesResolver 
{ 
    public override ICollection<Assembly> GetAssemblies() 
    { 
     List<Assembly> assemblies = new List<Assembly>(base.GetAssemblies()); 

     // Add all plugin assemblies containing the controller classes 
     assemblies.Add(Assembly.LoadFrom(@"C:\Plugins\MyAssembly.dll")); 

     return assemblies; 
    } 
} 

Dann fügen Sie diese Zeile auf die Register Methode in WebApiConfig.

config.Services.Replace(typeof(IAssembliesResolver), new MyAssembliesResolver()); 

Damit wird die Anfrage noch einmal an die individuellen Steuerung gesendet werden muß, wenn die Controller-Klassen von Baugruppen in dem Plugin-Ordner kommen können. Beispiel: Wenn MyAssembly.dll im Ordner plugins CarsController enthält, lautet der URI für diesen Controller/api/cars.

+1

Was ist, wenn Sie ein Plugin entfernen oder ersetzen möchten? –

Verwandte Themen