2014-12-08 15 views
11

Con ASP.NET 4.5 è possibile utilizzare Assembly.Load() o AppDomain.CurrentDomain.Load() per caricare dinamicamente un assembly in fase di esecuzione. Questo può essere utilizzato per aggiungere nuove funzionalità a un'applicazione Web in esecuzione sotto forma di moduli senza dover ricostruire o riavviare l'app.Funzionalità modulare con ASP.NET vNext Core CLR

Mi piacerebbe sapere come si può fare con il nuovo ASP.NET vNext (5.0?) Che si rivolge al framework Core. So che questo può essere fatto con la struttura completa come System.AppDomain è disponibile con un sovraccarico Assembly.Load(). Quando cambio il target del framework Core, non ho più System.AppDomain disponibile e Assembly.Load() diventa limitato.

C'è un modo per ottenere questa funzionalità modulare dinamica nel framework ASP.NET 5.0 Core?

+0

Indipendentemente vNext, si consiglia di dare un'occhiata al MEF (http://msdn.microsoft.com/en-us/library/ dd460648% 28V = vs.110% 29.aspx). – haim770

+0

Grazie. Ho già preso in considerazione MEF e non sembra essere disponibile nel framework principale. Neanche "System.ComponentModel.Composition" o "System.Compostion" sembrano disponibili. – Tom

+0

Ho lo stesso compito ora. Hai qualche idea per farlo? Come pensi, forse possiamo usare la compilazione dinamica invece di funzioni come MEF? –

risposta

3

Non sono sicuro quale sarebbe una buona risposta, perché Asp.Net 5 è così nuovo e non ha molta documentazione completa.

Dovrebbe essere teoricamente possibile, sarà solo diverso da quello a cui sei abituato.

Guardando la sorgente c'è un'interfaccia IAssemblyLoadContext che ti permetterà di ottenere l'assemblaggio. C'è anche IAssemblyLoader.

Questi sono utilizzati dall'host "kre", che è il pezzo sottostante di Asp.Net 5 che fondamentalmente ostacola la vostra applicazione. Quindi dovresti aggiungere il tuo IAssemblyLoader all'host sottostante, in modo che il kre.

Purtroppo non vedo ancora molti punti di estensione nel codice. Otterremo quei punti di estensione? Non lo so. È possibile registrare un problema nella pagina github. È anche possibile che ci sia un punto di estensione che non vedo al momento.

Per tornare alla domanda, è possibile aggiungere questo tipo di estensibilità a Asp.Net 5 Core? Sì, è possibile creare il proprio host, simile all'host predefinito, che includerebbe quindi il caricatore personalizzato e quindi avviare l'applicazione.

+0

Grazie David, questo è un approccio molto diverso!Farò un salto nella fonte e vedrò cosa riesco a trovare. – Tom

+0

Penso che ci sia già un [problema registrato per questo] (https://github.com/aspnet/KRuntime/issues/500), quindi immagino che debba ancora venire – Tom

1

Si può provare ExtCore quadro

Permette di avere modulari ed estensibili ASP.NET 5 applicazioni fuori dalla scatola.

In breve

  1. permette di utilizzare entrambi i moduli da DLL e dai pacchetti Nuget allo stesso tempo.
  2. Consente a tutti i moduli di lavorare con l'archiviazione nel singolo contesto e di avere i propri modelli e repository.
  3. Ogni interno può avere controllori, opinioni, contenuti statici ecc
Problemi correlati