سؤال

أفكر في استخدام اعتراضات Castle Windsor لتخزين البيانات مؤقتًا للمساعدة في توسيع نطاق موقع asp.net.

هل لدى أي شخص أي أفكار/خبرة في القيام بذلك؟

توضيح بسيط:كنت أنوي استخدام Windsor لاعتراض المكالمات "باهظة الثمن" وتفويض MemCacheD أو Velocity (أو ذاكرة تخزين مؤقت موزعة أخرى) للتخزين المؤقت نفسه.

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

المحلول

لقد كنت أستخدم أدوات تزيين التخزين المؤقت (وليس المعترضات) مع Windsor وهي تعمل بشكل رائع.

المعترضات جيدة لهذا أيضًا، انظر هذا على سبيل المثال.

نصائح أخرى

مرحبًا، لقد استخدمنا Castle Windsor Interceptors، بناءً على هذا المقال: http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx وكذلك المذكور أعلاه.

لقد وجدت الأمر برمته سهلاً جدًا وهي طريقة أنيقة جدًا للقيام بـ AOP.لكن....

حذرا مع الأداء بالرغم من ذلك.يؤدي استخدام الاعتراض إلى إنشاء وكيل ديناميكي سيؤدي بالتأكيد إلى إبطاء الأمور.استنادًا إلى معاييرنا باستخدام مزرعة حوسبة مكونة من 500 عقدة، شهدنا انخفاضًا في الأداء بنسبة 30% تقريبًا باستخدام الاعتراض في Windsor، وكان هذا خارجًا عما كنا نفعله داخل الاعتراض أيضًا (أساسًا تسجيل استدعاءات أسلوب التسجيل والمعلمات التي تم تمريرها إلى أساليبنا) .وببساطة، أدت إزالة الاعتراض إلى تسريع التطبيق بأكمله قليلاً.

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

حظ سعيد،

--
غير لامع.

كيف تقوم بتنفيذ الوصول إلى البيانات الخاصة بك؟إذا كنت تستخدم NHibernate، أود أن أقترح التخزين المؤقت هنا.يأتي NHibernate مزودًا بإستراتيجيات ذاكرة التخزين المؤقت لذاكرة التخزين المؤقت المضمنة في .NET، وmemcached (عبر NMemcachD)، وVelocity.لقد استخدمت memcached على نطاق واسع للتطبيقات على مستوى المؤسسة ولم أواجه أي مشكلة معها.

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

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

لقد قمت بإنشائها في مشروع مفتوح المصدر اسمه castw.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

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

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