2008-09-18 17 views
7

मैं एएसपीनेट साइट को स्केल करने में मदद के लिए डेटा कैश करने के लिए कैसल विंडसर के इंटरसेप्टर्स का उपयोग करने पर विचार कर रहा हूं।विंडसर इंटरसेप्टर एओपी और कैशिंग

क्या किसी के पास ऐसा करने के साथ कोई विचार/अनुभव है?

मामूली स्पष्टीकरण: मेरा इरादा विंडसर का उपयोग 'महंगे' कॉल को रोकने और कैशिंग के लिए मेमकाचेड या वेग (या एक अन्य वितरित कैश) को प्रतिनिधि करने के लिए करना था।

उत्तर

2

मैं विंडसर के साथ कैशिंग सजावट (इंटरसेप्टर नहीं) का उपयोग कर रहा हूं और वे बहुत अच्छा काम करते हैं।

इंटरसेप्टर इसके लिए भी अच्छे हैं, उदाहरण के लिए this देखें।

+0

धन्यवाद, माउच। मैं सजावटी मार्ग भी नीचे चला गया है। –

+4

कैशिंग सजावट? यह इंटरसेप्टर से अलग कैसे है? धाराप्रवाह पंजीकरण का उपयोग करके इसकी घोषणा के संदर्भ में? उदाहरण कृपया। – IanT8

+0

इन सजावटियों का उदाहरण होना बहुत अच्छा होगा। – Remotec

-2

विंडसर बहुत अच्छा है, लेकिन कैशिंग के लिए इसका उपयोग क्यों करें जब आपके पास डेटा कैश करने के कई तरीके हैं। विंडसर के पास अन्य क्षेत्रों में इसकी नींव है जो जरूरी नहीं है। कैश ऑब्जेक्ट से लेकर सत्र तक कुकीज़ तक। कैश करने के कई तरीके हैं। अधिक महत्वपूर्ण रूप से बड़े अनुप्रयोगों में आपको वितरित कैशिंग की आवश्यकता होती है। एमएस उस के लिए एक उत्पाद पर काम कर रहा है और वहां कुछ अच्छे विक्रेता हैं जिनके पास बाजार पर उत्पाद हैं।

+0

धन्यवाद, थॉमस। मेरा इरादा विंडसर का उपयोग 'महंगे' कॉल को रोकने और कैशिंग के लिए मेमकाचेड या वेग में प्रतिनिधि को करने के लिए करना था। –

0

मैं Microsoft Velocity पर देखता हूं। यदि आप एंटरप्राइज़ एप्लिकेशन बनाने की योजना बना रहे हैं, तो यह एक अच्छा समाधान हो सकता है

1

आप अपना डेटा एक्सेस कैसे कार्यान्वित कर रहे हैं? यदि आप NHibernate का उपयोग करते हैं, तो मैं यहां कैशिंग का सुझाव दूंगा। NHBernate .NET अंतर्निर्मित कैश, memcached (NMemcachD के माध्यम से) और वेग के लिए कैश रणनीतियों के साथ आता है। मैंने उद्यम स्तर के अनुप्रयोगों के लिए बड़े पैमाने पर memcached का उपयोग किया है और इसके साथ कोई समस्या नहीं है।

एक इंटरसेप्टर आधारित कैशिंग तंत्र एक दिलचस्प विचार है, जिसे मैंने पहले नहीं सोचा था। पारदर्शी रूप से लागू करना बहुत आसान होगा। मुझे लगता है कि कैसल की एओपी सुविधाओं का उपयोग करने के बारे में मुझे लगता है क्योंकि यह प्रॉक्सी आधारित है, आपको अपने कोड को विशेषताओं के साथ प्रदूषित करने की आवश्यकता नहीं है।

+0

धन्यवाद, क्रिस दुर्भाग्य से डेटा का केवल एक छोटा सा हिस्सा NHibernate से आ रहा है। अधिकांश डेटा शेयरपॉइंट से आ रहा है और कई सूचियों में मेटाडेटा को एकत्रित करने की आवश्यकता है (पूछें :-)) –

4

अरे, हमने इस आलेख के आधार पर कैसल विंडसर इंटरसेप्टर्स का उपयोग किया है: http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx साथ ही उपरोक्त वर्णित एक।

मुझे पूरी चीज़ बहुत आसान मिली और यह एओपी करने का एक बहुत ही शानदार तरीका है। हालांकि ....

हालांकि प्रदर्शन के साथ सावधान। अवरोध का उपयोग एक गतिशील प्रॉक्सी बनाता है जो निश्चित रूप से चीजों को धीमा कर देगा। 500 नोड कंप्यूटिंग फार्म का उपयोग करके हमारे मानकों के आधार पर हमने विंडसर में अवरोध का उपयोग करके लगभग 30% की कमी देखी, यह हम बाहरी हस्तक्षेप के अंदर भी कर रहे थे (अनिवार्य रूप से लॉगिंग विधि कॉल और हमारे मेथडोड में पारित पैराम) । और बस अवरोध को हटाकर पूरे ऐप को थोड़ा सा बढ़ा दिया।

सावधान आप अपनी महंगी कॉल वास्तव में महंगा नहीं बनाते हैं। :) यदि मैं आप थे तो मैं एक अलग स्तर पर कैश करना चाहूंगा, शायद एक आईरिपोजिटरी प्रकार पैटर्न को कार्यान्वित करके और फिर जहां उचित हो, विभिन्न कैशिंग रणनीतियों के साथ इसका समर्थन कर रहा हूं।

गुड लक,

-
मैट।

+0

मुझे यकीन नहीं है, लेकिन 3.0 में बहुत कुछ हुआ है – Malachi

0

मैंने एक कैशिंग इंटरसेप्टर के साथ cachew.castlewindsor नामक ओपन सोर्स प्रोजेक्ट पर बनाया है। यह कैशिंग के लिए एक सामान्य उद्देश्य समाधान है।

यहाँ उपयोग के एक सरल उदाहरण है:

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

डिफ़ॉल्ट व्यवहार सभी तरीकों कि जाओ और वापस जाने के डेटा के साथ शुरू होता कैश करने के लिए है, लेकिन आप भी बदल सकते हैं क्या कैश करने के लिए उपसर्ग।

परियोजना nuget पर उपलब्ध है: http://www.nuget.org/packages/Cachew.CastleWindsor/

और स्रोत कोड यहाँ उपलब्ध है: https://github.com/kobbikobb/Cachew

संबंधित मुद्दे