System.Web.Caching مقابل.كتلة التخزين المؤقت لمكتبة المؤسسة

StackOverflow https://stackoverflow.com/questions/21870

سؤال

بالنسبة لمكون .NET الذي سيتم استخدامه في كل من تطبيقات الويب وتطبيقات العميل الغنية، يبدو أن هناك خيارين واضحين للتخزين المؤقت:System.Web.Caching أو Ent.ليب.كتلة التخزين المؤقت.

  • ماذا تستخدم؟
  • لماذا؟

System.Web.Caching

هل هذا آمن للاستخدام خارج تطبيقات الويب؟لقد رأيت معلومات متضاربة، ولكن أعتقد أن الإجابة ربما تكون نوعًا ما غير حقيقية.

لا أتوقع أن أستخدم أحد أبرز مميزاته، SqlCacheDependency, ، ولكن إضافة CacheItemUpdateCallback في .NET 3.5 يبدو أمرًا جيدًا حقًا.

كتلة تطبيق التخزين المؤقت لمكتبة المؤسسة

  • الكتل الأخرى قيد الاستخدام بالفعل لذا فإن التبعية موجودة بالفعل
  • ليس من الضروري استمرار ذاكرة التخزين المؤقت؛إعادة إنشاء ذاكرة التخزين المؤقت عند إعادة التشغيل أمر جيد

يجب أن تكون بعض عناصر ذاكرة التخزين المؤقت متاحة دائمًا، ولكن يتم تحديثها بشكل دوري.بالنسبة لهذه العناصر، الحصول على رد الاتصال بعد تمت إزالة العنصر ليست مريحة للغاية.يبدو أنه سيتعين على العميل النوم والاستقصاء فقط حتى تتم إعادة ملء عنصر ذاكرة التخزين المؤقت.

Memcached لـ Win32 + عميل .NET

ما هي الإيجابيات والسلبيات عندما لا تحتاج إلى وزعت مخبأ؟

هل كانت مفيدة؟

المحلول

هذه هي العناصر التي أعتبرها في موضوع التخزين المؤقت:

Memcached Win32 Velocity .NET Cache Enterprise Library Claching كتلة تطبيق

MemCached Win32: حتى وقت قريب كنت أستخدم MemCached Win32.هذا يشبه مزرعة الويب (العديد من الخوادم تخدم نفس المحتوى لتوفر عالي) ولكنها مزرعة ذاكرة تخزين مؤقت.هذا يعني أنه يمكنك تثبيته محليًا على خادم الويب الخاص بك في البداية إذا لم يكن لديك الموارد اللازمة لتوسيع نطاقه.وبعد ذلك، أثناء تقدمك في الطريق، يمكنك التوسع أفقيًا (المزيد من الخوادم) أو عموديًا (المزيد من الأجهزة).هذا منتج تم نقله من MemCached الأصلي ليعمل على Windows.تم استخدام هذا المنتج على نطاق واسع في المواقع ذات حركة المرور العالية جدًا. http://lineofought.com/tools/memcached

سرعة: هذا هو رد Microsoft على منتجات مثل MemCached.لقد تم إيقاف MemCached لبعض الوقت، أما Velocity في وضع CTP.يجب أن أقول إنه مما قرأته حتى الآن، فإن هذا المنتج سوف يلفت انتباهي بالتأكيد بمجرد صدوره.لكنني لا أستطيع إجبار نفسي على إدارة مشاريع إنتاجية كبيرة على منتج برنامج التحويلات النقدية (CTP) بدون أي سجل حافل.لقد بدأت اللعب بها على الرغم من أنه بمجرد اكتسابها للزخم، لن تتمكن MemCached من مقارنتها بتلك المقفلة في عالم النوافذ! http://blogs.msdn.com/velocity/

ذاكرة التخزين المؤقت.NET: لا يوجد سبب لخصم ذاكرة التخزين المؤقت .NET القياسية.إنه مدمج وجاهز للاستخدام مجانًا وبدون الحاجة إلى إعداد (رئيسي).فهو يوفر المرونة من خلال تقديم آليات لتخزين العناصر في الذاكرة المحلية، أو خادم حالة واحدة، أو قاعدة بيانات مركزية.حيث تتدخل السرعة عندما تحتاج إلى أكثر من خادم حالة واحد (ذاكرة التخزين المؤقت في الذاكرة) ولا ترغب في استخدام قاعدة بيانات بطيئة للاحتفاظ بذاكرة التخزين المؤقت الخاصة بك.

كتلة تطبيق المؤسسة: أبقى بعيدًا عن جميع كتل التطبيقات الخاصة بالمؤسسات.إنها أطر ثقيلة تعطي أكثر مما أطلبه بشكل عام!طالما أنك تتذكر تغليف كل ما يمس رمزًا ليس خاصًا بك واتباع قواعد بسيطة للبرمجة، فالتزم بأي من الطرق الأخرى على هذه الطريقة!(فقط رأيي بالطبع - يستفيد موقع MySpace قدر الإمكان من كتل تطبيقات المؤسسات!)

ليس عليك أن تختار مقدمًا! أقوم عمومًا بإنشاء غلاف ذاكرة تخزين مؤقت أتواصل معه في التعليمات البرمجية الخاصة بي لطرق مثل Get وSet وExists وRemove وListKeys وما إلى ذلك.يشير هذا بعد ذلك إلى المستوى الأساسي لتجريد ذاكرة التخزين المؤقت التي يمكن أن تشير إلى ذاكرة التخزين المؤقت MemCached أو Velocity أو .NET.أستخدم StructureMap (أو اختر حاوية IoC أخرى) لإدخال شكل ذاكرة التخزين المؤقت الذي أريد استخدامه لبيئة معينة.في صندوق التطوير المحلي الخاص بي، قد أستخدم ذاكرة التخزين المؤقت لـ .NET في الجلسة.في الإنتاج أستخدم MemCached Win 32 بشكل عام.ولكن بغض النظر عن كيفية إعداده، يمكنك بسهولة تبديل الأشياء لتجربة كل نظام لمعرفة ما يناسبك بشكل أفضل.تحتاج فقط إلى التأكد من أن تطبيقك يعرف أقل قدر ممكن عن كيفية تخزين الأشياء مؤقتًا!بمجرد وضع هذه الطبقة من التجريد، يمكنك بعد ذلك القيام بأشياء مثل تشغيل خوارزمية الضغط (gzip) لجميع البيانات التي تدخل وتخرج من ذاكرة التخزين المؤقت مما يسمح لك بتخزين 10 أضعاف كمية البيانات في ذاكرة التخزين المؤقت.- بشفافية.

أقوم بتغطية .NET Cache وMemCached Win32 وStructureMap والتجريدات المناسبة في كتابي إذا كنت مهتمًا!

ASP.NET 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 ) Andrew Siemer www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net

تحديثتم تغيير الرابط الذي يسرد المواقع التي تستخدم memcached.شكرًا لك ديفيد على ملاحظتك أنه مكسور!

نصائح أخرى

ضع في اعتبارك أن وثائق EntLib توجهك بشكل خاص نحو ذاكرة التخزين المؤقت لـ ASP.NET لتطبيقات ASP.NET.ربما تكون هذه هي التوصية الأقوى لاستخدامه هنا.بالإضافة إلى أن ذاكرة التخزين المؤقت EntLib لا تحتوي على تبعيات، وهذا بالنسبة لي سبب كبير لعدم استخدامها.

لا أعتقد أن هناك قيودًا فنية على هذا النحو بشأن شحن System.Web كجزء من تطبيقك، على الرغم من أنه من الغريب بعض الشيء أنهم وضعوا هذا الإشعار على صفحة .NET 3.5.يقول هانسيلمان في الواقع إنه بدأ يشعر بالخوف من هذه الفكرة، لكنه أصبح مقتنعًا بها.أيضًا، إذا قرأت التعليقات، سيقول أن الكتلة تحتوي على عدد كبير جدًا من الأجزاء المتحركة وأن ذاكرة التخزين المؤقت لـ ASP.NET خفيفة الوزن جدًا.
أعتقد أن هذا هو بالضبط نوع المشكلة سرعة سيتم حلها، ولكن هذه مجرد معاينة في الوقت الحالي :-(

أود أن أقول استخدام Web.Caching ونرى كيف يمكنك المضي قدما.إذا قمت بوضع نوع ما من طبقة التجريد فوقها، فلديك دائمًا خيار استبدالها بكتلة EntLib لاحقًا إذا وجدت مشاكل.

نلقي نظرة على com.memcached.إنه نظام تخزين مؤقت موزع رائع وسريع وخفيف الوزن.توجد واجهات برمجة التطبيقات للعديد من اللغات الأكثر شيوعًا، بما في ذلك لغة C#.قد لا يعمل بشكل جيد من جانب العميل (ما لم يكن العميل بالطبع يحصل على البيانات المخزنة مؤقتًا من خادم من نوع ما)، ولكن إذا قمت بتجريد استخدامك لـ memcached إلى واجهة معينة، فيمكنك بعد ذلك تنفيذ الواجهة بتخزين مؤقت آخر نظام.

@ دافيد فوستي

"إذا وضعوها في مساحة اسم الويب ، أعتقد أنه لسبب وجيه." هل ينطبق هذا المنطق نفسه على وقت تشغيل التزامن والتنسيق (CCR) في الاستوديو الآلي؟لا؟لا أعتقد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top