Domanda

Sto pensando di usare il Castello di Windsor Intercettori cache di dati per aiutare una scala asp.net sito.

Qualcuno ha qualche idea/esperienza con questo?

Minori chiarimento:La mia intenzione era di utilizzare Windsor per intercettare 'costoso' chiamate e delegato a MemCacheD o la Velocità (o un altro cache distribuita) per la memorizzazione nella cache stessa.

È stato utile?

Soluzione

Sto usando la cache di decoratori (non intercettori) con Windsor e funziona alla grande.

Gli intercettori sono buone anche per questo, vedere questo per esempio.

Altri suggerimenti

Ciao, Abbiamo utilizzato il Castello di Windsor Intercettori, sulla base di questo articolo: http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx così come quello di cui sopra.

Ho trovato il tutto abbastanza facile ed è un modo molto elegante per fare AOP.Tuttavia....

Attenzione con le prestazioni, però.Utilizzo di intercettazioni crea una dinamica proxy che sarà sicuramente rallentare le cose.Basato sui nostri punti di riferimento, utilizzando una 500 Nodo computing farm abbiamo visto un calo delle prestazioni di circa il 30% utilizzando l'intercettazione in Windsor, questo era al di fuori di ciò che stiamo facendo all'interno di intercettazione e (essenzialmente un metodo di registrazione delle chiamate e dei parametri passati in a nostro methdods).e semplicemente la rimozione di intercettazione sped tutta l'app abbastanza un bit.

Attenzione a non rendere il vostro chiamate costose davvero costoso.:) Se fossi in te, vorrei cercare di cache ad un livello diverso, probabilmente attraverso l'implementazione di un IRepository schema tipo e quindi eseguendo con varie strategie di memorizzazione nella cache, ove appropriato.

Buona fortuna,

--
Matt.

Come sta attuando i tuoi dati di accesso?Se l'utilizzo di NHibernate, vorrei suggerire di caching qui.NHibernate viene fornito con cache strategie per il .NET built-in cache, memcached (via NMemcachD) e la Velocità.Ho usato memcached extensivly per le applicazioni di livello enterprise e non hanno avuto un problema con esso.

Un intercepter basa il meccanismo di caching è un'idea interessante, uno che non ho pensato prima.Sarebbe molto facile per essere applicate.Quello che penso di amore sull'utilizzo di AOP caratteristiche di Castello, è perché è basato su proxy, non devi inquinare il tuo codice con gli attributi.

Mi piacerebbe guardare al Velocità Di Microsoft.Se si intende creare un'applicazione Enterprise, questa potrebbe essere una buona soluzione

Ho creato il progetto open source denominato cachew.castlewindsor con una cache di interceptor.Si tratta di un general purpose soluzione per la memorizzazione nella cache.

Ecco un semplice esempio di utilizzo:

var container = new WindsorContainer(); container.Register(Component.For<CacheInterceptor>() .Instance(new CacheInterceptor(new Cache(TimeoutStyle.RenewTimoutOnQuery, TimeSpan.FromSeconds(3))))); container.Register(Component.For<IServer>().ImplementedBy<Server>().Interceptors<CacheInterceptor>());

Il comportamento predefinito è quello di cache di tutti i metodi che inizia con Ottenere e restituire i dati, ma si può anche cambiare ciò che i prefissi di cache.

Il progetto è disponibile su nuget:http://www.nuget.org/packages/Cachew.CastleWindsor/

E il codice sorgente è disponibile qui:https://github.com/kobbikobb/Cachew

Windsor è grande, ma perché l'uso che per la memorizzazione nella cache quando si hanno più costruito in modi per memorizzare i dati nella cache.Windsor ha il suo fondamento in altre aree, non necessariamente la memorizzazione nella cache.Da l'oggetto cache di sessione e cookies.Ci sono molti modi per memorizzare nella cache.Anche e soprattutto in applicazioni di grandi dimensioni si finisce bisogno di caching distribuito.MS sta lavorando su un prodotto e ci sono un paio di buoni fornitori che hanno i prodotti sul mercato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top