Bentornati alla seconda puntata del nostro appuntamento con il carrello elettronico. Nel precedente articolo ci siamo serviti di un sito fittizio che commercializzava videogames; continueremo a farlo anche in quest'articolo, che descrive la seconda soluzione tecnica, sicuramente meno articolata della precedente (basata sugli array), che fa uso della libreria d'oggetti COM contenuta in WSH (Windows Scripting Host).
Requisiti tecnici
Per completezza, analizziamo gli strumenti di cui dobbiamo dotarci per realizzare la seconda nostra soluzione:
- Server HTTP (IIS/PWS) con ASP 2.0
- Microsoft© Access 97/2000
- Un editor di testo / html
- Una piccola LAN con almeno un client per effettuare le "prova su strada"; in alternativa usate solo il server con il proprio il browser
- Windows Scripting Host (installato con l'Option Pack di NT Server 4 oppure reperibile sul sito di Microsoft alla sezione download).
Introduzione al Dictionary Object
Windows Scripting Host (WSH, contenuta nel file SCRRUN.DLL) è la nuova piattaforma di scripting introdotta da poco tempo nel mondo Windows (95x/NT), al fine di consentire la realizzazione di piccole procedure shell (generalmente amministrative) con l'uso di VBScript (estensione VBS) (si veda questo articolo ). Il sistema operativo è quindi diventato un ambiente di sviluppo, ma con un vantaggio da non trascurare: ogni script VBS è anche COM Container, ossia consente di richiamare componenti COM per i propri scopi, meccanismo ereditato dagli oggetti ASP.
WSH offre anche una serie d'oggetti COM riutilizzabili, tra cui il Dictionary Object (DO), che estende gli ambienti di sviluppo con array di tipo hash. Per chi non conoscesse questo tipo di array, si tratta semplicemente di array con indice univoco di tipo stringa (e non numerico), che consentono di risalire al valore memorizzato usando come chiave di ricerca un'espressione di tipo testuale.
La struttura di un DO è del seguente tipo:
nome_DO(nome_chiave$)=valore
e consente di assegnare/ricavare il valore dalla chiave nome_chiave$.
Ad esempio:
mio_DO("data_di_nascita")="09/10/1972"
oppure
mia_Var=mio_DO("data_di_nascita")
Naturalmente anche un DO (essendo un oggetto COM) espone metodi e proprietà, che v'invito a sperimentare usando l'ambiente di Visual Basic (5.0 e successivi), inserendo un riferimento alla classe "Windows Scripting Runtime" e istanziando un oggetto di tipo "Scripting.Dictionary", come di seguito riportato:
Dim myDO as new Scripting.Dictionary
Analizziamo ora nel dettaglio la lista di metodi e proprietà che meglio si prestano ai nostri scopi:
Nome | Tipo | Valore di ritorno | Descrizione |
Add | Metodo | Nessuno | Aggiunge un nuovo elemento al DO |
Count | Proprietà | Long | Numero di elementi presenti nel DO |
Exists | Metodo | Boolean | Verifica la presenza di una chiave nel DO |
Keys | Collezione | Array | Lista delle chiavi presenti nel DO |
Items | Collezione | Array | Lista dei valori presenti nel DO |
Remove | Metodo | Nessuno | Elimina un elemento del DO specificando la relativa chiave |
Removeall | Metodo | Nessuno | Inizializza il DO eliminando tutti gli elementi eventualmente presenti |
Nota: per la lista completa di metodi e proprietà vi rimando alla documentazione di WSH .
Come si può facilmente intuire, molti metodi e proprietà si prestano perfettamente al caso nostro; possiamo ritenere che un DO rappresenti una versione specializzata dell'array che abbiamo realizzato nella precedente soluzione.
Come useremo il nostro DO?
Il nostro obiettivo è di utilizzare il DO usando come chiave il codice prodotto e come valore la quantità specificata dall'utente web (valorizzato a 1 per default).
Ad esempio, ipotizzando che il codice articolo sia "1299128" e la quantità pari a 2, il nuovo elemento del DO assumerebbe la seguente forma:
mioDO("1299128")=1
Procediamo quindi alla modifica delle nostre pagine ASP per l'implementazione della nuova soluzione.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.