2013-01-09 36 views
38

.NET Framework 4.0 MemoryCache बनाम ObjectCache के बीच क्या अंतर है? कहां उपयोग करें?.NET 4.0 में MemoryCache बनाम ऑब्जेक्ट कैश के बीच क्या अंतर है?

+12

MemoryCache ObjectCache के ठोस कार्यान्वयन है। एक डिजाइन बिंदु से, ऑब्जेक्ट कैश सार है और यह दर्शाता है कि कैसे कैश बनाया जाना चाहिए। मेमोरी कैश इसका वास्तविक कार्यान्वयन है। – dash

उत्तर

58

ऑब्जेक्ट कैश एक अमूर्त वर्ग है जो दर्शाता है कि आपको कैश बनाना चाहिए जो ऑब्जेक्ट कैश लिखने वाले व्यक्ति के नियमों का पालन करता है। आप ऑब्जेक्ट कैश को तुरंत चालू नहीं कर सकते क्योंकि यह abstract है।

मेमोरी कैश ऑब्जेक्ट कैश के वास्तविक कार्यान्वयन है।

प्रलेखन से:

ObjectCache

एक वस्तु कैश का प्रतिनिधित्व करता है और आधार के तरीकों और वस्तु कैश तक पहुँचने के लिए गुण प्रदान करता है।

MemoryCache

प्रकार है कि एक में स्मृति कैश को लागू करता है प्रतिनिधित्व करता है।

MemoryCache के लिए घोषणा को देखते हुए:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable 

हम देख सकते हैं कि MemoryCache ObjectCache से विरासत - जो है, वह अपने भंडारण के रूप में स्मृति का उपयोग करता है वस्तुओं के लिए एक कैश है - यह इसलिए एक कार्यान्वयन है ऑब्जेक्ट कैश के

आप अपना खुद का लिख ​​सकते हैं; उदाहरण के लिए, डेटाबेस कैश, जो ऑब्जेक्ट कैश से भी प्राप्त हो सकता है लेकिन इसके बजाय यह डेटाबेस को बैकिंग स्टोरेज के रूप में उपयोग करेगा।

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

+1

अपना खुद का निर्माण करने के लिए, [एमएसडीएन पर कस्टम कैश क्लास बनाना] देखें (https://msdn.microsoft.com/en-us/library/ff919782.aspx#Anchor_5) – Stacked

3

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

16

MSDN से;

ऑब्जेक्ट कैश प्रकार इन-मेमोरी ऑब्जेक्ट कैश के लिए प्राथमिक प्रकार है। अंतर्निहित मेमोरी कैश क्लास ऑब्जेक्ट कैश कक्षा से निकला है। मेमोरी कैश क्लास एकमात्र ठोस ऑब्जेक्ट कैश .NET Framework 4 में कार्यान्वयन है जो ऑब्जेक्ट कैश क्लास से प्राप्त होता है।ObjectCache से

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable 

MemoryCache इनहेरिट करती है।

आप इस तरह के डिफ़ॉल्ट MemoryCache उदाहरण का संदर्भ प्राप्त कर सकते हैं;

public static ObjectCache cache = MemoryCache.Default;