2014-11-17 20 views
5

Sto analizzando alcune idee su come isolare i controller di api Web nei propri "moduli" che possono essere uniti in un'unica applicazione webapi. Tuttavia mi piacerebbe isolarli e le loro dipendenze si formeranno a vicenda poiché ci saranno probabilmente conflitti di versione di assemblaggio. Mi sono chiesto se questo potrebbe essere raggiunto con diversi domini applicativi per ogni controller. Qualcuno ha esperienza con questo?Come separare i controller webapi nel proprio dominio app?

risposta

0

Qualsiasi cosa nella cartella bin verrà caricata nel dominio dell'app corrente, quindi normalmente questo non è un problema. Tuttavia, quando si eliminano i conflitti di controllo delle versioni, è possibile utilizzare un resolver dell'assieme personalizzato per caricare più assiemi/versioni nello stesso AppDomain. Ciò ti consentirà di aggiungere ulteriori assembly all'appDomain di web api.

 

    public class CustomAssemblyResolver : DefaultAssembliesResolver 
    { 
     public override ICollection GetAssemblies() 
     { 
      // load all of your assemblies and return 
     } 
    } 
 

È quindi sostituirà il resolver di montaggio di default per il web api nella configurazione.

 

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

Quando API Web va alle assemblee di ricerca per trovare i controller sarà ora tirare in tutte le assemblee supplementari. Vedere this example per una spiegazione più dettagliata.