سؤال

في واحدة من بلدي تطبيقات, أنا الاستعلام active directory للحصول على قائمة من كافة المستخدمين أدناه مستخدم معين (باستخدام "التقارير المباشرة" الشيء).وذلك أساسا بالنظر إلى اسم الشخص ، فمن بحثت في الإعلان ، ثم التقارير المباشرة هي قراءة.ولكن بعد ذلك كل المباشر التقرير أداة تحتاج إلى التحقق من التقارير المباشرة من التقارير المباشرة.أو أكثر تجريدا:أداة استخدام شخص مثل جذر الشجرة ثم السير في شجرة كاملة للحصول على أسماء جميع الأوراق (يمكن أن تكون عدة مئات)

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

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

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

المحلول

من أجل السيطرة على الخصائص التي تريد أن يكون مؤقتا يمكنك الاتصال 'RefreshCache()' تمرير الخصائص التي تريد التسكع هنا:

System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry();               

// Push the property values from AD back to cache.

entry.RefreshCache(new string[] {"cn", "www" });

نصائح أخرى

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

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

يعتمد على مدى ما يصل إلى تاريخ تريد أن تكون المعلومات.إذا كنت يجب أن يكون أحدث البيانات في التقرير الخاص بك ثم الاستعلام مباشرة من الإعلان هو معقول.و أوافق على أن الإعلان هو قوي جدا ، نموذجية مخصصة AD server هو في الواقع طفيفة جدا تستخدم في الحالات العادية العمليات اليومية ولكن الأفضل أن تحقق مع قسم تكنولوجيا المعلومات / دعم.

البديل هو أن يكون يوميا النصي إلى تفريغ الإعلان البيانات إلى ملف CSV و/أو استيراده إلى قاعدة بيانات SQL.(أوراكل وقد حدد الاتصال عن طريق ميزة التي يمكن تلقائيا إنشاء متعدد المستويات الهرمية في مجموعة نتائج.MSSQL يمكن أن تفعل نفس الشيء مع قليل من العودية IIRC).

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