caching सिस्टम। वेब। कैशिंग बनाम एंटरप्राइज़ लाइब्रेरी कैशिंग ब्लॉक




.net-2.0 memcached (4)

memcached पर एक नज़र डालें। यह वास्तव में एक अच्छा, तेज और हल्के वितरित कैशिंग सिस्टम है। सी # सहित कई सबसे लोकप्रिय भाषाओं के लिए एपीआई हैं। यह क्लाइंट पक्ष पर अच्छी तरह से सेवा नहीं कर सकता है (जब तक कि क्लाइंट किसी प्रकार के सर्वर से कैश किए गए डेटा को प्राप्त नहीं कर लेता), लेकिन यदि आप किसी विशिष्ट इंटरफ़ेस पर memcached का उपयोग करते हैं, तो आप इंटरफ़ेस को किसी अन्य कैशिंग के साथ कार्यान्वित कर सकते हैं प्रणाली।

एक .NET घटक के लिए जो दोनों वेब अनुप्रयोगों और समृद्ध क्लाइंट अनुप्रयोगों में उपयोग किया जाएगा, कैशिंग के लिए दो स्पष्ट विकल्प प्रतीत होते हैं: System.Web.Caching या Ent। लिब। कैशिंग ब्लॉक।

  • तुम क्या इस्तेमाल करते हो?
  • क्यूं कर?

System.Web.Caching

क्या यह वेब ऐप्स के बाहर उपयोग करना सुरक्षित है? मैंने मिश्रित जानकारी देखी है, लेकिन मुझे लगता है कि उत्तर शायद-तरह-वास्तव में नहीं है।

मैं इसकी एक हाइलाइट्स, SqlCacheDependency का उपयोग करने की अपेक्षा नहीं करता SqlCacheDependency , लेकिन .NET 3.5 में CacheItemUpdateCallback के अतिरिक्त एक CacheItemUpdateCallback अच्छी बात की तरह लगता है।

एंटरप्राइज़ लाइब्रेरी कैशिंग एप्लिकेशन ब्लॉक

  • अन्य ब्लॉक पहले से ही उपयोग में हैं इसलिए निर्भरता पहले से मौजूद है
  • कैश दृढ़ता जरूरी नहीं है; पुनरारंभ पर कैश को पुन: उत्पन्न करना ठीक है

कुछ कैश आइटम हमेशा उपलब्ध होना चाहिए, लेकिन समय-समय पर ताज़ा किया जाना चाहिए। इन वस्तुओं के लिए, किसी आइटम को हटा दिए जाने के बाद कॉलबैक प्राप्त करना बहुत सुविधाजनक नहीं है। ऐसा लगता है कि एक ग्राहक को केवल सोना और मतदान करना होगा जब तक कि कैश आइटम को दोबारा नहीं बनाया जाता है।

Win32 + .NET क्लाइंट के लिए Memcached

जब आपको वितरित कैश की आवश्यकता नहीं होती है तो पेशेवर और विपक्ष क्या होते हैं?


ये वे आइटम हैं जिन्हें मैं कैशिंग के विषय के लिए मानता हूं:

MemCached Win32 Velocity .net कैश एंटरप्राइज़ लाइब्रेरी कैशिंग एप्लिकेशन ब्लॉक

MemCached Win32: हाल ही में जब तक मैंने MemCached Win32 का उपयोग किया है। यह एक वेब फार्म (उच्च उपलब्धता के लिए एक ही सामग्री की सेवा करने वाले कई सर्वर) के समान है लेकिन यह एक कैश फार्म है। इसका अर्थ यह है कि यदि आप संसाधनों के पास बड़े होने के लिए नहीं हैं तो आप इसे अपने वेब सर्वर पर स्थानीय रूप से इंस्टॉल कर सकते हैं। फिर जब आप सड़क पर जाते हैं तो आप क्षैतिज (अधिक सर्वर) या लंबवत (अधिक हार्डवेयर) स्केल कर सकते हैं। यह एक ऐसा उत्पाद है जिसे मूल मेमकैच से विंडोज पर काम करने के लिए पोर्ट किया गया था। इस उत्पाद का उपयोग बहुत अधिक यातायात साइटों में बड़े पैमाने पर किया गया है। http://lineofthought.com/tools/memcached

वेग: यह Miccofts MemCached जैसे उत्पादों के उत्तर है। मेमकैच काफी समय से बाहर रहा है, वेग सीटीपी मोड में है। मुझे यह कहना होगा कि अब तक जो कुछ मैंने पढ़ा है, उससे यह उत्पाद निश्चित रूप से मेरे सिर को बंद कर देगा। लेकिन मैं खुद को शून्य ट्रैक रिकॉर्ड के साथ एक सीटीपी उत्पाद पर बड़ी उत्पादन परियोजनाओं को चलाने के लिए नहीं ला सकता हूं। मैंने इसके साथ खेलना शुरू कर दिया है, हालांकि एक बार जब यह गति प्राप्त हो जाता है तो मेमकैच विंडोज़ दुनिया में लॉक किए गए लोगों की तुलना भी नहीं करेगा! http://blogs.msdn.com/velocity/

.NET कैश: मानक .NET कैश को छूटने का कोई कारण नहीं है। यह मुफ्त में उपयोग करने के लिए तैयार और तैयार है और बिना किसी (प्रमुख) सेट अप की आवश्यकता है। यह स्थानीय स्मृति, एक एकल राज्य सर्वर, या केंद्रीकृत डेटाबेस में वस्तुओं को संग्रहीत करने के लिए तंत्र की पेशकश के माध्यम से लचीलापन प्रदान करता है। जहां वेग चरण तब होता है जब आपको एक से अधिक राज्य सर्वर (स्मृति में कैश) की आवश्यकता होती है और अपने कैश को पकड़ने के लिए धीमे डेटाबेस का उपयोग नहीं करना चाहते हैं।

एंटरप्राइज़ एप्लिकेशन ब्लॉक: मैं सभी एंटरप्राइज़ एप्लिकेशन ब्लॉक से दूर रहता हूं। वे भारी ढांचे हैं जो आम तौर पर मुझे अधिक से अधिक देते हैं! जब तक आप उस कोड को छूने के लिए याद रखें जो आपके पास नहीं है और कोडिंग के लिए सरल नियमों का पालन करें, इस पर किसी भी अन्य तरीकों से चिपके रहें! (बस मेरी राय है - माईस्पेस जितना ज्यादा एंटरप्राइज़ एप्लिकेशन ब्लॉक से बाहर हो सकता है!)

आपको आगे का चयन करने की ज़रूरत नहीं है! मैं आमतौर पर एक कैश रैपर बना देता हूं जिसे मैं अपने कोड में गेट, सेट, एक्सिस्ट्स, निकालें, लिस्टकीज़ इत्यादि जैसी विधियों के साथ संवाद करता हूं। फिर यह कैश अबास्ट्रक्शन के अंतर्निहित स्तर को इंगित करता है जो मेमकैच, वेग, या .NET को इंगित कर सकता है। कैश। मैं किसी दिए गए वातावरण के लिए उपयोग करने के लिए कैश के किस रूप को इंजेक्ट करने के लिए स्ट्रक्चर मैप (या एक और आईओसी कंटेनर चुनें) का उपयोग करता हूं। मेरे स्थानीय देव बॉक्स में मैं सत्र में .NET कैश का उपयोग कर सकता हूं। उत्पादन में मैं आम तौर पर मेमकैच विन 32 का उपयोग करता हूं। लेकिन इस पर ध्यान दिए बिना कि यह कैसे स्थापित किया जाता है, आप आसानी से चीजों को स्वैप कर सकते हैं ताकि प्रत्येक सिस्टम को यह देखने के लिए आसानी से स्वैप कर सकें कि आपके लिए सबसे अच्छा क्या काम करता है। आपको बस यह सुनिश्चित करने की ज़रूरत है कि एप्लिकेशन को कैश किए जाने के तरीके के बारे में जितना संभव हो उतना कम पता है! एक बार अमूर्तता की यह परत जगह पर हो जाने के बाद आप कैश में और बाहर जा रहे सभी डेटा के लिए संपीड़न एल्गोरिदम (gzip) चलाने जैसी चीजें कर सकते हैं जो आपको कैश में डेटा की मात्रा 10 गुना स्टोर करने की अनुमति देगी। पारदर्शी रूप से

यदि आप रुचि रखते हैं तो मैं .NET कैश, मेमकैच Win32, स्ट्रक्चर मैप, और मेरी पुस्तक में उपयुक्त abstractions को कवर करता हूं!

एएसपी.नेट 3.5 सोशल नेटवर्किंग ( http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 सामाजिक- नेटवर्किंग- एंटरप्राइज-ready http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 dp http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 1847194788 http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 ref http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 sr_1_1?ie http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 UTF8&s http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 books&qid http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 1225408005&sr http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1 ) एंड्रयू सीमेर www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net

अपडेट ने लिंक को बदल दिया जो memcached का उपयोग कर साइट्स सूचीबद्ध करता है। यह देखने के लिए डेविड धन्यवाद कि यह टूट गया था!


ध्यान रखें कि EntLib दस्तावेज़ विशेष रूप से आपको ASP.NET अनुप्रयोगों के लिए ASP.NET कैश की ओर ले जाता है। यह शायद यहां इसका उपयोग करने की दिशा में सबसे मजबूत सिफारिश है। इसके अलावा एंटीलिब कैश में निर्भरता नहीं है, जो मेरे लिए इसका उपयोग करने का एक बड़ा कारण नहीं है।

मुझे नहीं लगता कि आपके ऐप के हिस्से के रूप में शिपिंग सिस्टम.Web पर एक तकनीकी सीमा है, हालांकि यह थोड़ा अजीब बात है कि उन्होंने नोटिस को 3.5ET पृष्ठ पर रखा है। हंसेलमैन वास्तव में कहता है कि उसने इस धारणा से बाहर निकल जाना शुरू कर दिया, लेकिन आश्वस्त हो गया। अगर आप टिप्पणियां पढ़ते हैं, तो वह कहता है कि ब्लॉक में बहुत से चलने वाले हिस्से हैं और एएसपी.नेट कैश बहुत अधिक हल्का है।
मुझे लगता है कि यह वास्तव में ऐसी समस्या है जो http://blogs.msdn.com/velocity/ हल करने जा रहा है, लेकिन यह अभी के लिए एक पूर्वावलोकन है :-(

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


@ डेविड वोस्ती

"अगर वे इसे वेब नेमस्पेस में डाल देते हैं, तो मुझे लगता है कि यह एक अच्छे कारण के लिए है।" क्या वही तर्क रोबोट स्टूडियो में कंसुरेंसी और समन्वय रनटाइम (सीसीआर) पर लागू होता है? नहीं? ऐसा नहीं सोचा था।





enterprise-library