Redazione
a- a+

Linguaggi e Controlli di Silverlight

Il plugin di Silverlight offre un ambiente di esecuzione CLR e una libreria di base del .NET Framework (BCL) ospitata nel browser dell'utente e utilizzata per eseguire il codice. Silverlight è una progressione di ASP.NET AJAX, che estende le capacità di Javascript attraverso una libreria Javascript in modo tale da rendere il codice Javascript maggiormente orientato agli oggetti e da fiornire maggiori funzionalità. Il motore di esecuzione di Silverlight estende ulteriormente Javascript e l'ambiente di esecuzione ospitato dal browser.

Dynamic Language Runtime (DLR)

Ci sono correntemente due versioni di Silverlight, la 1.0 e la 2.0. Nella versione 1.0 l'unico linguaggio supportato è Javascript mentre la versione 2.0 estende l'ambiente di esecuzione e fornisce l'opportunità di sviluppare applicazioni Silverlight usando linguaggi di programmazione diversificati. Inoltre la versione 2.0 non solo apre Silverlight CLR all'uso di più linguaggi ma permette anche ai linguaggi stessi di comunicare attraverso l'uso del Dynamic Language Runtime (DLR).

Un linguaggio di programmazione dinamico è tale per cui il linguaggio e l'esecuzione del linguaggio sono concepiti per estendere dinamicamente le capacità d'esecuzione a runtime dell'applicazione. Ad esempio, un linguaggio potrebbe essere in grado di caricare, compilare e assimilare codice che viene letto a tempo d'esecuzione ma non esiste a tempo di compilazione. La parte DLR di Silverlight permette di trarre vantaggio delle funzionalità dinamiche del linguaggio.


Console DLR

Microsoft ha sviluppato la Console DLR come metodo per testare il codice e le applicazioni Silverlight. Microsoft ha sviluppato la Console DLR per Microsoft CodePlex e l'ha resa liberamente disponibile agli sviluppatori per poter effettuare i propri esperimenti. La Console DLR è disponibile per il download sul sito ufficiale di Silverlight. La versione della DLR Console resa disponibile su CodePlex supporta la prototipizzazione XAML attraverso JScript e Python. La Console DLR viene mostrata nella figura sottostante.

DLR console
Fig 1: DLR Console


JavaScript

Come menzionato in precedenza, nella prima versione di Silverlight, Javascript era l'unic linguaggio che poteva essere utilizzato. Creare applicazioni Silverlight usando Javascript è molto semplice ma non è un'opzione direttamente disponibile in Visual Studio. Ad ogni modo sarà necessaria una piccola quantità di codice da inserire a mano (nella sua forma più semplice, meno di 10 linee di codice). Vediamo l'esempio più semplice realizzabile, partendo con una pagina HTML in cui inseriamo un tag <object>, solitamente all'interno di un tag <div> come mostrato nel codice riportato in SimpleJS.htm. Javascript supporta la maggior parte delle potenzialità di un linguaggio dinamico.

Es. 1: SimpleJS.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
   <head>
    <title>Silverlight JavaScript: esempio semplice</title>
   </head>
   <body>
       <div id="SilverlightHost">
              <object id="sl" height="400" width="800" type="application/ag-plugin">
                  <param name="source" value="Page.xaml" />
              </object>
          </div>
   </body>
  </html>

Si noti che il tag <param> identifica il file Page.xaml da caricare. Il file XAML è anch'esso estremamente semplice in questo esempio e lo potete vedere qui sotto.

Es. 2: Page.xaml

<Canvas x:Name="parentCanvas"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width="640"
        Height="480"
        Background="White">
    <TextBlock x:Name="myText" FontFamily="Segoe UI"
               FontSize="14" Text="Questo è un esempio" />
</Canvas>

 

<a href="/img/11/iframe2_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 

L'esempio visto illustra la metodologia di includere Silverlight in una pagina HTML attraverso Javascript. Ad ogni modo, includendo il file Javascript che viene distribuito da Microsoft per l'utilizzo di Silverlight, la vostra implementazione sarà migliore. Ad esempio, avviserà l'utente di scaricare il plugin Silverlight se quest'ultimo non fosse già installato. Il codice qui sotto illustra l'implementazione di Silverlight in una pagina HTML facendo riferimento al file Javascript fornito.

Es.3: TestPage.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" >
  <!-- salvato da url=(0014)about:internet -->
  <head>
      <title>Silverlight: pagina di test del progetto</title>
        <script type="text/javascript" src="Silverlight.js"></script>
      <script type="text/javascript" src="TestPage.html.js"></script>
      <script type="text/javascript">
          function onLoad (sender, args, root) {
              var myText = root.findName("myText");
              myText.FontSize = 40;
          }
      </script>
     <style type="text/css">
          .silverlightHost { width: 640px; height: 480px; }
     </style>
  </head>
    <body>
      <div id="SilverlightControlHost" class="silverlightHost" >
          <script type="text/javascript">
              createSilverlight();
          </script>
      </div>
  </body>
  </html>

 

<a href="/img/11/iframe3_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 

Il codice soprastante rappresenta la base per tutte le implementazioni Silverlight. Quando si sviluppano applicazioni Silverlight in Javascript, si inserirà il codice Javascript direttamente nella pagina HTML. Prima di esser in grado di far qualcosa di costruttivo, avremo bisogno di aggiungere un id allo XAML. Una volta che viene assegnato un nome a TextBlock, questo può esser manipolato attraverso Javascript. Poi, avremo bisogno di interagire con XAML attraverso un evento di qualche tipo. L'evento più comunemente usato, proprio come con ASP.NET (l'evento Load), è l'evento onLoad e ne viene mostrato l'uso nell'esempio sottostante.

Es.4: TestPage.html.js

// Codice JScript
    //contiene le chiamate a silverlight.js, l'esempio qui sotto carica Page.xaml
  function createSilverlight()  {
   Silverlight.createObjectEx({
    source: "Page.xaml" ,
    parentElement: document.getElementById("SilverlightControlHost"),
    id: "SilverlightControl" ,
    properties: {
     width: "100%" ,
     height: "100%" ,
     version: "1.1" ,
     enableHtmlAccess: "true"
    },
    events: {onLoad:onLoad}
   });
         // Dà il focus al controllo Silverlight di default
      document.body.onload = function() {
        var silverlightControl = document.getElementById('SilverlightControl');
        if (silverlightControl)
        silverlightControl.focus();
      }
  }

 

<a href="/img/11/iframe4_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 

Infine per completare lo scenario, abbiamo bisogno di creare un gestore dell'evento onLoad nella nostra pagina HTML. Un gestore degli eventi in Javascript per Silverlight ha bisogno di tre parametri:

  1. un riferimento ad un oggetto contenitore per l'invio oppure un elemento <div>;
  2. argomenti opzionali che non sono stati usati in questo esempio;
  3. un riferimento all'elemento radice del documento XAML.

Possiamo usare l'argomento che si riferisce all'elemento root con il metodo findName per trovare qualsiasi elemento che possiede un attributo con un nome ad esso assegnato nel file XAML.


Managed JScript

Microsoft ha esteso Javascript per aggiungere capacità estese al servizio delle tecnologie Microsoft e tools quali Internet Explorer. La versione Microsoft di Javascript viene chiamata JScript. Microsoft ha rilasciato una versione avanzata di JScript da usare con la versione 1.0 del .NET Framework. Tale versione avanzata viene chiamata JScript.NET. Più tardi è stata rilasciata una nuova versione di JScript per lavorare con la versione 2.0 di Silverlight ed è stata chiamata Managed JScript.


C#

La versione 3.0 di C# rappresenta anch'essa un esempio di linguaggio dinamico. L'unica differenza nello sviluppo di applicazioni Silverlight rispetto a Javascript è che il file XAML identifica un codice dentro il file attraverso l'attributo x:Class come mostrato qui sotto.

Es.5: Page.xaml

<Canvas x:Name="parentCanvas"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Loaded="Page_Loaded"
        x:Class="SLExampleCS.Page;assembly=ClientBin/SLExampleCS.dll"
        Width="640"
        Height="480"
        Background="White">
      <TextBlock x:Name="myText" FontFamily="Segoe UI" 
                 FontSize="12" Text="Questo è un esempio" />
</Canvas>

 

<a href="/img/11/iframe5_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 

Inoltre, la gestione degli eventi non sarà più legata nel panorama di Silverlight attraverso il file XAML visto in precedenza. Nell'esempio soprastante, l'evento Loaded viene legato al gestore Page_Loaded nel codice all'interno del file. Il codice associato al file viene mostrato qui sotto.

Es.6: Page.xaml.cs

using System;  
using System.Windows;  
using System.Windows.Controls;  
using System.Windows.Documents;  
using System.Windows.Ink;  
using System.Windows.Input;  
using System.Windows.Media;  
using System.Windows.Media.Animation;  
using System.Windows.Shapes;    
namespace SLExampleCS  {
      public partial class Page : Canvas   {
          public void Page_Loaded(object o, EventArgs e)   {
              // Richiesto per inizializzare le variabili
             InitializeComponent();
                myText.FontSize = 40;
          }
      }
}

 

<a href="/img/11/iframe6_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 

Le sezioni qui sotto illustrano semplicemente le differenze sintattiche poiché le applicazioni vengono gestite nella stessa identica maniera appena illustrata.


Visual Basic

La versione Visual Basic dell'esempio visto prima viene mostrata qui sotto.

Es. 7: Page.xaml.vb

using System;  
using System.Windows;  
using System.Windows.Controls;  
using System.Windows.Documents;  
using System.Windows.Ink;  
using System.Windows.Input;  
using System.Windows.Media;  
using System.Windows.Media.Animation;  
using System.Windows.Shapes;    
namespace SLExampleCS  {
      public partial class Page : Canvas   {
          public void Page_Loaded(object o, EventArgs e)   {
              // Richiesto per inizializzare le variabili
             InitializeComponent();
                myText.FontSize = 40;
          }
      }
}

 

<a href="/img/11/iframe6_langControl.html" title= "Vedi esempio">Vedi esempio</a>;

 


VBx

Visual Basic è alla versione 9.0 ma questa versione non ricopre interamente tutti i requisiti per essere un linguaggio di programmazione dinamico. Ad ogni modo, la versione 10.0 è in fase di sviluppo ed è stata battezzata VBx. VBx sarà una versione dinamica di Visual Basic che lo renderà maggiormente utilizzabile per la creazione di applicazioni Silverlight.


IronPython e IronRuby

IronPython è la versione dinamica di Python appositamente sviluppata per Silverlight 2.0 mentre IronRuby è un altro linguaggio di programmazione dinamico disegnato per l'utilizzo in Silverlight 2.0 e rappresenta una modifica del linguaggio Ruby.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Condividi le tue opinioni su questo articolo!