Frage

Ich betrachte mit Interceptor auf Cache-Daten Schloss Windsor zu helfen, eine asp.net Website skalieren.

Hat jemand irgendwelche Gedanken / Erfahrungen mit diesem?

Minor Klarstellung: Meine Absicht war, Windsor zu verwenden ‚teuer‘ Anrufe abfangen und auf Memcached oder Geschwindigkeit (oder einem anderen verteilten Cache) delegieren für das Caching selbst.

War es hilfreich?

Lösung

Ich habe Caching Dekorateure worden (nicht Abfangjäger) mit Windsor und sie arbeiten groß.

Interceptor für diese gut sind, wie gut finden Sie unter diese zum Beispiel.

Andere Tipps

Hey, haben wir Schloss Windsor Interceptor, bezogen auf diesen Artikel: http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx sowie die oben erwähnte.

Ich fand das Ganze ziemlich einfach und es ist eine sehr elegante Art und Weise AOP zu tun. Allerdings ....

Vorsicht mit, obwohl die Leistung. Mit Abfangen erzeugt eine dynamische Proxy, der auf jeden Fall Dinge verlangsamen wird nach unten. Basierend auf unseren Benchmarks eine 500 Knoten Computerfarm nutzen wir durch die Verwendung Interception in Windsor einen Leistungsabfall von etwa 30% zu verzeichnen war, das draußen war, was wir auch im Inneren des Abfangens zu tun (im Wesentlichen Anmeldung Methodenaufrufe und params übergeben in unserer methdods) . und einfach das Abhören Entfernen beschleunigt die ganze app ziemlich viel.

Sorgfältige Sie nicht machen Ihre teuren Anrufe wirklich teuer. :) Wenn ich Sie wäre, würde ich auf einer anderen Ebene zu Cache suchen, die wahrscheinlich durch eine IRepository Art Muster Implementierung und Sicherung dann, dass mit verschiedenen Caching-Strategien gegebenenfalls.

Viel Glück,

-
Matt.

Wie setzen Sie Ihre Daten zugreifen? Wenn Ihr NHibernate verwenden, würde ich Caching hier vorschlagen. NHibernate kommt mit Cache-Strategien für die .NET integrierten Cache, Memcached (via NMemcachD) und Geschwindigkeit. Ich habe Memcached extensivly für Enterprise-Level-Anwendungen eingesetzt und haben kein Problem mit ihm.

Ein intercepter basierte Caching-Mechanismus ist eine interessante Idee, den ich früher nicht gedacht haben. Es wäre sehr einfach, transparent gelten. Die einzige denke, ich liebe es, über die AOP-Funktionen des Schlosses mit, weil es die Proxy-basiert, müssen Sie Ihren Code nicht mit Attributen verschmutzen.

ich auf der Microsoft Velocity . Wenn Sie auf die Schaffung eines Enterprise-Anwendung planen, könnte dies eine gute Lösung sein

ich auf Open-Source-Projekt erstellt mit dem Namen cachew.castlewindsor mit einem Caching-Abfangjäger. Es ist eine Allzweck-Lösung für das Caching.

Hier ist ein einfaches Beispiel für die Verwendung:

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>());

Das Standardverhalten ist, alle Methoden cachen, die mit Get und den Rück Daten beginnen, aber Sie können auch ändern, was in der Cache-Präfixen.

Das Projekt ist auf nuget zur Verfügung: http://www.nuget.org/packages/Cachew.CastleWindsor/

Und der Quellcode finden Sie hier: https://github.com/kobbikobb/Cachew

Windsor ist groß, aber warum das Caching für verwenden, wenn Sie mehrere haben Möglichkeiten, um Cache-Daten aufgebaut. Windsor hat seine Grundlage nicht unbedingt in anderen Bereichen Caching. Aus dem Cache-Objekt-Sitzung Cookies. Es gibt viele Möglichkeiten zu Cache. Noch wichtiger ist in großen Anwendungen, die Sie verteilte Caching am Ende brauchen. MS arbeitet an einem Produkt für das und es gibt ein paar gute Anbieter gibt, die Produkte auf dem Markt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top