Introduzione al Remote Scripting 1/3

di Andrea Zani, in Altre tecnologie,

Come ormai i più sanno, gli script lato client e gli script lato server sono due realtà ben diverse con pregi e difetti che in questo articolo non voglio trattare. Gli script lato client, tra cui spicca indisturbato il Javascript nelle preferenze degli sviluppatori per compatibilità su ogni browser in circolazione, sono insostituibili per quegli script di controllo per i form, per brevi funzioni di calcolo o per effetti grafici. Gli script lato server, invece (e nel nostro caso parliamo di ASP), diventano insostituibili in quei campi dove si deve manipolare enormi quantità di dati con i database, quando la sicurezza è fondamentale per il nostro sito, per mailing-list, motori di ricerca ecc..

Entrambi sono ritenuti da molti due mondi ermetici, distanti, divisi da un muro difficilmente valicabile se non con artifici complicati. Il Remote-Scripting serve appunto a questo: a permettere la comunicazione tra questi due mondi e l'abbattimento di questo muro con nuove e inaspettate potenzialità.

Cos'è il Remote-Scripting?

Il Remote Scripting è una tecnologia che la Microsoft mette a disposizioni degli sviluppatori di pagine ASP per aumentare la dinamicità delle pagine. Permette di aggiornare i dati nelle nostre pagine senza dover richiedere ogni volta l'intera pagina al Server con conseguente risparmio di tempo (i dati passati dalla pagina ASP sono solo quelli essenziali e non tutti gli artifizi grafici) e di "carico" del Server.

Ipotizziamo di dover scrivere una pagina ASP che ricostruisce il codice fiscale di una persona dopo che l'utente ha inserito i suoi dati in un form. Normalmente dovremo scrivere una prima pagina HTML contenente il form vero e proprio che raccoglie dati e li invia a una seconda pagina, questa volta ASP, che ricostruisca il codice fiscale e lo rimandi al browser per visualizzare il risultato all'utente. Con il Remote-Scripting, potremmo farlo molto più elegantemente ed efficacemente in termini di tempo e prestazioni. Come? Scrivendo la pagina HTML come sopra, ma facendo in modo che invii i dati del form ad un Remote-Scripting. Questo, essendo uno script ASP a tutti gli effetti, elaborerà i dati e ricostruirà il codice fiscale. Ma questa volta non dovremo preoccuparci di costruire una pagina in formato HTML dove visualizzare il risultato, perchè sarà ritornato alla pagina HTML (quella contenente il form), e con una semplice linea in javascript, visualizzato immediatamente nella pagina.

Pensate a uei siti dov'è possibile esprimere un giudizio su sondaggi o altro. Si clicca sulla propria preferenza e la pagina appena visualizzata (magari dopo una lunga attesa) sparisce, lasciandoci nell'attesa che ritorni con i risultati dei sondaggi aggiornati. Con il Remote-Scripting potremo farlo molto più efficacemente. Scegliamo la nostra preferenza, al server viene passato il solo dato della nostra scelta e uno script in ASP ci restituirà i risultati aggiornati in "tempo reale" sul nostro browser.

Tutto questo è consentito da una applet-java che funge da proxy sul browser del visitatore, e che si incaricha del trasferimento di dei dati dai nostri script client ai più complessi script ASP e viceversa. Ed è proprio grazie a questa Applet che dai nostri script client potremo chiamare "funzioni" o "sub" residenti sul server e scritte in ASP, e quindi ricevere i dati da questi.

Che cosa ci serve per scrivere i nostri Remote-Scripting?

Per fare tutto questo abbiamo a disposizione tre files:

  • Rs.htm: è il file che dobbiamo includere nei nostri client-script che contiene le funzioni per interfacciarci con la Applet-Java per lo scambio di dati con il Server.
  • Rs.asp: è il file che dobbiamo includere nei nostri script ASP per interfacciarci con la Applet-Java.
  • Rsproxy.class: è il cuore del Remote-Scripting! E' l'applet-java che dobbiamo includere nel nostro sito per consentire lo scambio di informazioni.

Questi tre files più la documentazione molto dettagliata (in inglese) sull'argomento, la potete trovare a questo indirizzo: http://msdn.microsoft.com/scripting/

Una volta scaricato il pacchetto e installato, ci ritroveremo con una nuova cartella di nome "_ScriptLibrary" contenente tutto il necessario e dove è consigliabile tenere i nostri script per il Remote Scripting (anche se non necessario).

Sincrono e asincrono

Il lettore attento si potrebbe chiedere che cosa accadrebbe alle nostre pagine HTML se una richiesta di dati ad un Remote-Scripting non avesse immediata risposta. Con le pagine tradizionali sul browser comparirebbe il classico messaggio: "Sito web rilevato. In attesa di risposta?" E in un Remote-Scripting? Se, come nel caso ipotizzato precedentemente, una volta avviata una richiesta di dati, il server non rispondesse immediatamente? Il Remote-Scripting permette due metodi di chiamata alle funzioni: sincrona e asincrona. Come facilmente intuibile, la prima, una volta avviata una richiesta di dati, rimane fedelmente in attesa di una risposta. Ogni altro client-script, in questo caso, non può venire avviato senza il completamento del primo. Il metodo asincrono, invece, permette di lanciare una richiesta di dati al Remote-Scripting e di continuare con altre funzioni senza rallentamenti. Quando i dati saranno pronti e inviati al nostro browser, una nostra routine li prenderà in consegna e ne permetterà l'utilizzo.

La rivincita del Javascript

E sì! L'amara realtà per gli sviluppatori di pagine ASP in VBScript! Il Remote-Scripting sembra trovare il suo campo di sviluppo ideale in Javascript. Infatti, questo linguaggio è l'ideale per lo sviluppo di questi script. Anche la stessa documentazione sul sito della Microsoft e in quella scaricata (e anche in altri siti stranieri che parlano dell'argomento) si possono trovare solo e "quasi" esclusivamente esempi in questo linguaggio che consente uno "snellimento" di lavoro non indifferente nel passaggio di parametri. Come delle semplici funzioni, infatti, le funzioni del Remote-Scripting possono ritornare i risultati in variabili. Ma se avessimo bisogno di trasferire un array dal server al client? In Javascript risolveremo tutto con una semplice istruzione:

return new array (frase1,frase2,frase3,frase4)

E nel client-script avremmo avuto accesso immediato a questo array con:

ss=co.return_value;

a=ss[0];

ecc..

In VBScript dovremo concatenare le varie stringhe con un separatore univoco e nello script lato client ridividerla con uno "split".

E' tutto così semplice?

Descritta in questo modo, qualcuno potrebbe chiedersi il motivo per cui sia così poco conosciuta tra gli sviluppatori di pagine ASP. In effetti un difetto, se così vogliamo chiamarlo, nel Remote-Scripting c'è! O si è a proprio agio con entrambi i tipi di script o ci si imbatterà in difficoltà e tempi di sviluppo molto lunghi. Dovendo fare comunicare gli script sul computer del visitatore che sta guardando il nostro sito con gli script ASP sul Server, siamo "obbligati" a conoscere molto bene il Javascript che è l'unico script a garantire la compatibilità con tutti i browser. Dovremo, in tal modo, costruire non solo i nostri programmi sul server, ma anche curare quelli che si interfacceranno con loro, con aumento notevole di tempo nello sviluppo delle nostre pagine. Ed è per questo motivo che molti sviluppatori (sbagliando) preferiscono ottimizzare al meglio solo gli script ASP sul server che "complicarsi" la vita con questa tecnologia.

Conclusioni

Con questa prima parte dell'articolo sul Remote-Scripting ho solo voluto dare una presentazione di questa potente tecnologia. Nella seconda parte faremo sul serio con tutta la parte teorica di chiamata alle funzioni e sui vari metodi di utilizzo. Nella terza e ultima parte includerò un semplice, ma funzionale, esempio in VBScript per mostrare le potenzialità di questa tecnologia. Per il momento vi rimando alla documentazione da scaricare dal sito della Microsoft.

Articoli della serie

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata