4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Per la sezione di configurazione abbiamo definito tre elementi: la collection providers e le proprietà defaultProvider e caseSensitive. La collection indica la lista di provider definiti nel web.config, la proprietà defaultProvider determina il provider utilizzato dall'applicazione ed infine caseSensitive è la nostra opzione univoca per tutti i provider che abbiamo definito in precedenza.
Alla classe AzSearchServiceSection corrisponde nel web.config una sezione di configurazione omonima definita nell'ambito della collection configSections.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web">
<section name="AzSearchService" type="AzSearchServiceSection" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
</sectionGroup>
</configSections>
<system.web>
<AzSearchService defaultProvider="AccessAzSearchProvider" caseSensitive="true">
...
</AzSearchService>
</system.web>
</configuration>
Nell'elemento sectionGroup l'attributo name indica il nodo padre della sezione dedicata alla nostra funzionalità (in questo caso è <system.web />). L'attributo type del nodo section indica il nome della classe contenente la classe definita precedentemente.
Implementare i provider: Access
Una volta scritte le classi relative alla configurazione, possiamo procedere con la creazione dei nostri provider personalizzati. Ereditiamo una nuova classe da AzSearchProvider. Grazie alla presenza dei membri astratti, obblighiamo ogni personalizzazione ad includere i metodi e le proprietà custom definite in precedenza. Per esempio, l'implementazione di un provider che memorizza i dati in un database Access potrebbe essere qualcosa di simile a quanto segue.
using System;
using System.Text;
using System.Configuration.Provider;
public class AccessAzSearchProvider: AzSearchProvider
{
private string _applicationName;
private string _connectionString;
private bool _caseSensitive;
public override bool CaseSensitive
{
get { return _caseSensitive; }
set { _caseSensitive = value; }
}
public override string ApplicationName
{
get { return _applicationName; }
set { _applicationName = value; }
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
if (config == null)
throw new ArgumentNullException("config");
if (String.IsNullOrEmpty(name))
name = "AccessAzSearchProvider";
if (string.IsNullOrEmpty(config["description"]))
{
config.Remove("description");
config.Add("description", "AccessAzSearch provider");
}
base.Initialize(name, config);
_applicationName = config["applicationName"];
if (string.IsNullOrEmpty(_applicationName))
_applicationName = "/";
config.Remove("applicationName");
_connectionString = config["connectionString"];
if (string.IsNullOrEmpty(_applicationName))
throw new ProviderException("Missing connection string");
config.Remove("connectionString");
if (config.Count > 0)
{
string attr = config.GetKey(0);
if (!String.IsNullOrEmpty(attr))
throw new ProviderException("Unrecognized attribute: " + attr);
}
}
public override int Viewed(string word)
{
return Access.Viewed(word,_caseSensitive,_connectionString);
}
public override void Memorize(string word)
{
Access.Memorize(word, _connectionString);
}
}
Ad inizio classe abbiamo definito una proprietà CaseSensitive, proprietà che utilizziamo per la ricerca e la memorizzazione dei termini cercati. Le funzioni Viewed e Memorize richiamano effettivamente le funzioni statiche vere e proprie che ritornano quante volte è stato cercato un termine e memorizzano tale termine in un database Access. La funzione più interessante e indispensabile è Initialize. Essa legge i parametri presenti nel web.config, in questo caso connectionString, per il loro utilizzo nelle funzioni che eseguono le operazioni di accesso ai dati.
Nell'ambito della sezione di configurazione system.web è ora possibile includere la sezione dedicata alla nostra funzionalità, indicando tra le altre cose il provider appena creato.
<AzSearchService defaultProvider="AccessAzSearchProvider" caseSensitive="true">
<providers>
<add name="AccessAzSearchProvider" type="AccessAzSearchProvider" connectionString="database.mdb"/>
</providers>
</AzSearchService>
Come si può vedere, tra i parametri del provider c'è anche connectionString in cui inseriamo semplicemente il nome del database Access che vogliamo utilizzare.
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Utilità
Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!