Alternative a GAC ​​per la condivisione del codice tra siti mvc

Attualmente, abbiamo l’object c # registrato nel gac che usiamo per generare una stringa / html che funge da menu comune per le nostre applicazioni web.

Il vantaggio dell’object registrato gac è che possiamo aggiornare l’object gac e tutte le applicazioni che fanno riferimento ad esso ottengono gli aggiornamenti in modo molto efficiente. Il menu html fa riferimento ad alcune risorse js e css in una posizione comune.

L’object c # esegue una logica basata su server / ambienti ecc.

Esistono alternative diverse dagli oggetti GAC per eseguire funzionalità simili.

Avevo considerato di fare riferimento a una vista mvc da un altro progetto / controller ma c’erano problemi di latenza (ovvero il menu è stato visualizzato dopo il resto della pagina). Sento che funziona meglio quando renderizzato come parte della pagina.

altri pensieri / idee / opzioni?

Credo che tu possa usare web.config per istruire manualmente ciascun sito per trovare un particolare assemblaggio in una posizione comune:

http://msdn.microsoft.com/en-us/library/4191fzwb(v=vs.90).aspx

Dall’articolo:

          

In alternativa, puoi impostare “sondaggio” per cercare intere directory per le tue librerie comuni (anche dall’articolo):

        

In un decennio non ho mai usato il GAC e anche se ho configurato un server NuGet interno tramite TeamCity e lasciato che CI esegua la ricostruzione quando le mie librerie condivise sono aggiornate, non la userei qui, non credo.

Il mio istinto dice di build un piccolo servizio web per questo genere di cose e fare in modo che gli altri server inviino i loro dati / stato in una forma estensibile (JSON / XML), ovvero i dati necessari per la logica basata su server / ambiente, e avere il il servizio Web esegue la logica e rimanda i dati in un modello per tradurli in HTML o HTML stesso.

Aggiungere alcune intestazioni di controllo della cache, quindi aggiornerei la logica del servizio Web quando voglio modificare il comportamento.

modificare

Ho appena ricordato che Martin Fowler ha scritto su questo approccio.

http://martinfowler.com/articles/microservices.html

Quindi questo è il modo in cui ho lavorato per diversi anni. Naturalmente abbiamo una logica di programmazione nelle DLL, ma per la logica di business, piuttosto che averla nelle librerie, la inseriamo in molte piccole API Web e poi si apre anche ad altre lingue e mashup, PowerShell, ecc.

Immagino che quello che sto dicendo sia che un diverso approccio architettonico potrebbe aiutare.

By-the-way, l’ho sentito per la prima volta quando ho letto, nel 2008, penso che la home page di Amazon raccolga dati da> 100 piccoli servizi web.