asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 3234
ASPCode.it - Store

  > > Articoli

Integrare Macromedia Flash MX e Microsoft ASP.NET

Data di pubblicazione: 04/08/2003        Voto della community: 3,00 (Votanti: 2)

Perché utilizzare Flash?

Flash è stato particolarmente utilizzato su Internet per migliorare la forma grafica dei siti Web; oggi tutto dei siti Web delle grandi aziende presenta attraenti animazioni in Flash.

Il problema, in questi casi, è che il ruolo di Flash viene appiattito a mero applicativo per la creazione di presentazioni; ancora peggio, esse sono solitamente statiche, con lenti tempi di sviluppo difficili da gestire.

Macromedia ha recentemente iniziato una nuova campagna, cominciando con Flash MX (e continuandola in altri prodotti come ColdFusion MX, Dreamweaver MX, etc...) vantando come Flash sia un eccellente strumento per lo sviluppo di applicazioni Web. Su quest’aspetto lascerò che vi facciate un’opinione personale; ad ogni buon conto le ultime due versioni di Flash (5 ed MX) hanno chiarito come Macromedia sia seriamente volta a fare di Flash uno standard per lo sviluppo di applicazioni Web.

Anche se Flash è un plug-in dei browser Web, presenta una grande disponibilità. Il Flash player viene installato automaticamente con Windows XP e se un utente del vostro sito Web non ha installato il player stesso ed usa Internet Explorer, una finestra di dialogo chiederà automaticamente di installare il player Flash.

Attualmente le statistiche sono molto varie, ma Macromedia, dal suo sito, afferma che il Flash player è installato sul 92% di tutti i computer con accesso ad Internet. Un’altra importante ragione per usare Flash sta nell'uso della grafica vettoriale. Ciò significa che quel che viene prodotto a schermo è ottenuto attraverso un calcolo matematico e quindi i Flash movie possono adattarsi a qualsiasi risoluzione grafica senza perderci in qualità (a meno che non si sia importata qualche file grafico aster, come ad esempio un file in formato JPEG), cosa che è stata da sempre una enorme barriera per l’HTML.

Come utilizzare Flash con ASP.NET

Ci sono diversi modi per permettere una processo di comunicazione tra Flash ed ASP.NET. In questo articolo verranno trattati due fra le migliori metodologie usate per inviare dati da e verso il server (ASP.NET) e il client (Flash MX).

A partire dalla versione 5 di Flash, è stato introdotto l’XML Object, che è capace di caricare ed inviare stringhe XML. Nell’esempio contenuto nel Listato 1 verrà indicato come caricare un XML in Flash:

Listato 1 – Caricare un XML in Flash

<code type=”Flash”>

//instanzia un nuovo XML Object

XMLDoc = new XML();

//chiama la funzione load, passando nel path l’XML da caricare in Flash

XMLDoc.load(“mydata.xml”);

//setta la funzione evento utilizzata allorchè l’XML viene caricato in Flash

XMLDoc.onLoad = function(success) {

  if (success) {

    //XML è stato correttamente caricato e parseizzato ed è pronto per essere usato

  } else {

    //XML non è stato caricato e viene restituito un errore

  }

}

</code>


Adesso, al fine di sfruttare quanto visto, si vedrà come caricare un XML dinamicamente generato invece di un file XML statico. Un buon esempio per questa procedura potrebbe prevedere l’impiego della tabella Prodotti del database Northwind fornito nel pacchetto Microsoft SQL Server (o eventualmente Microsoft Access).

Nell’esempio del Listato 2 si analizzerà una via veloce per costruire un documento XML da una query sulla tabella Prodotti:

Listato 2 – Esempio di costruzione dinamica di un XML

<code type="ASP.NET" flavor="VB.NET">

Private Function GetXML( ByVal SQLCom As SQLCommand, ByVal TableName As String ) As XMLDocument

  Dim Temp As New XmlDocument()

  With SQLCom

    .Connection.Open()

    Dim i As Integer

    Dim SQLData As SqlDataReader = .ExecuteReader

    With SQLDataTemp.AppendChild(Temp.CreateElement(TableName))

      While .Read

        Temp.FirstChild.AppendChild(Temp.CreateElement("item"))

        For i = 0 To .FieldCount – 1

          Temp.FirstChild.LastChild.Attributes.Append(Temp.CreateAttribute(.GetName(i))).Value = .GetValue(i)

        Next

      End While

    End With

    .Connection.Close()

  End With

  Return Temp

End Function

Response.ContentType = "text/xml"

GetData(SQLProductsGet, "products").Save(Response.OutputStream)

</code>


La funzione GetXML ha in sé un parametro di tipo SQLCommand, che potrebbe contenere il CommandText e i Parametri che necessitano per restituire il corretto set di risultati da convertire in XML.

Per testare il tutto basterà costruire un semplice file .aspx con il codice del Listato 2 , aprire il browser Web e digitare nella barra degli indirizzi un URL locale del tipo http://localhost/myapp/GetData.aspx .

L’unica cosa che manca adesso da fare per far acquisire da un Flash movie questi dati è modificare la linea di codice in Flash utilizzata per caricare l’XML, specificando l’URL da cui verranno prelevati i dati stessi. Ecco l’esempio nel Listato 3 :

Listato 3 – Modifica da apportare al file Flash

<code type="Flash">

XMLDoc.load("GetData.aspx");

</code>


È tutto semplice, vero? Come è possibile immaginare, si può naturalmente modificare il file .aspx in maniera tale che, per esempio, i record vengano filtrati a seconda della Categoria Prodotti. Il vantaggio in fatto di performance è dovuto al fatto che, una volta caricati i dati XML all’interno di Flash, non ci saranno più richieste verso il server a meno che i dati stessi non debbano essere aggiornati. A seconda della mole di dati da trattare, l’impatto iniziale potrebbe essere pesante per gli utenti del sito. Comunque, è sempre possibile costruire una soluzione di visualizzazione di solo alcuni dei record restituiti dalla query, senza interrogare più volte il server. Nel Listato 4 proposto di seguito è possibile analizzare un esempio di quanto detto sopra:

Listato 4 – Esempio di restituzione di alcuni record in Flash

<code type="Flash">

XMLDoc.load("GetData.aspx");

</code>

<code type="Flash">

for (var i = 0; i < XMLDoc.firstChild.childNodes.length; i++) {

  trace("Product[" + (i + 1) + "].ProductID = " + XMLDoc.firstChild.childNodes[i].attributes.ProductID;

}

</code>


Approfondimenti sull’integrazione fra Flash ed ASP.NET

Nel prossimo futuro Macromedia rilascerà un nuovo add-on per Flash MX chiamato Flash Remoting . Esso sarà un vero strumento di supporto nel modo dello sviluppo di applicazioni Web attraverso l’uso di Flash MX; grazie a questo prodotto sarà possibile richiamare .NET XML Web Services direttamente da Flash MX.

Un’altra metodologia molto utile per inviare dei dati a Flash è attraverso SQLXML. Da quando in Flash è stata incorporata la possibilità di caricare XML, tutto ciò che resta da fare è richiamare una funzione del tipo:

Listato 5 – Esempio di funzione che sfrutta SQLXML

XML.load("http://mysite/Northwind?SQL=SELECT%20*%20FROM%20Products%20FOR%20XML%20AUTO")


Riferimenti

(1) Erik Porter – “ Integrating Macromedia Flash MX and Microsoft ASP.NET ” (documento originale in lingua inglese), presso http://www.dotnetjunkies.com

(2) Per maggiori informazioni sull’XML Object in Flash visitare We're Here Forum's XML Discussion Forum Index

(3) Per scaricare gli esempi funzionanti contenuti in questo articolo visitare il sito di Erik Porter all’URL http://www.erikporter.com/articles.aspx?id=1

(4) Per maggiori informazioni su Flash Remoting visitare il sito di Macromedia all’URL http://www.macromedia.com/software/flash/flashremoting

(5) Per maggiori informazioni su SQLXML visitare SQLXML and XML Mapping Technologies


Si ringrazia Programmazione.it per la gentile concessione dell'articolo.




Utenti connessi: 3234