Domanda

In una delle mie applicazioni, io sono una query di active directory per ottenere un elenco di tutti gli utenti al di sotto di un determinato utente (utilizzando i "Rapporti Diretti" cosa).Quindi, fondamentalmente, dato il nome della persona, si è cercato nell'ANNUNCIO, quindi i Rapporti Diretti sono leggere.Ma quindi per ogni rapporto diretto, lo strumento ha bisogno di controllare i rapporti diretti dei rapporti diretti.O, più astratto:Lo Strumento consentirà di usare una persona come la radice dell'albero e poi a piedi lungo il completo albero per ottenere i nomi di tutte le foglie (possono essere diverse centinaia)

Ora, la mia preoccupazione è, ovviamente, delle prestazioni, deve essere fatto un paio di volte.La mia idea è di cache manualmente che (essenzialmente basta mettere tutti i nomi in una stringa lunga e memorizzare da qualche parte e aggiornare una volta al giorno).

Ma mi chiedo solo se c'è un modo più elegante per primo a ottenere le informazioni e quindi memorizzato nella cache, magari utilizzando qualcosa nel Sistema.DirectoryServices Spazio Dei Nomi?

È stato utile?

Soluzione

Per prendere il controllo della proprietà che si desidera essere memorizzati nella cache si può chiamare 'RefreshCache()' il passaggio di proprietà che si desidera appendere intorno:

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

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

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

Altri suggerimenti

Active Directory è abbastanza efficiente a memorizzare le informazioni e il recupero non dovrebbe essere che molto di un calo di prestazioni.Se siete veramente intento a memorizzare i nomi, probabilmente si desidera memorizzare in una sorta di struttura ad albero, in modo che è possibile vedere le relazioni di tutte le persone.A seconda di come il numero di persone, si potrebbe anche tirare tutte le informazioni di cui hai bisogno, ogni giorno una query di tutte le richieste contro la vostra copia memorizzata nella cache.

ANNUNCIO non quella sorta di cache per voi, quindi non preoccuparti a meno che le prestazioni diventa un problema.Ho un software che fa questo genere di cose tutto il giorno in esecuzione su una rete intranet aziendale che prende migliaia di visite ogni ora e non hanno mai avuto per ottimizzare le prestazioni in questo settore.

Dipende da come fino alla data in cui si desidera che le informazioni siano.Se si deve avere i dati più recenti nel report si esegue la query direttamente da ANNUNCIO è ragionevole.E sono d'accordo che l'ANNUNCIO è abbastanza robusto, tipico dedicata AD server è in realtà molto poco utilizzata nel normale giorno per giorno le operazioni ma meglio controllare con il vostro reparto IT / support persona.

Un'alternativa è quella di usufruire di un servizio di script per eseguire il dump l'ANNUNCIO dei dati in un file CSV e/o importare in un database SQL.(Oracle ha una CONNESSIONE DA una caratteristica che può creare automaticamente multi-livello di gerarchie all'interno di un set di risultati.MSSQL può fare una cosa simile con un po ' di ricorsione IIRC).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top