Guía para las nuevas características de Silverlight 5 Beta

Traducción aproximada del artículo Silverlight 5 Beta–A guide to the new features publicado el 13 de Abril del 2011 en inglés por Tim Heuer.

El Beta de Silverlight 5 sólo está disponible en inglés por el momento. Por esta razón las ilustraciones son presentadas en tal idioma.

 

Durante el congreso MIX11, Scott Guthrie anunció la disponibilidad de la versión beta de Silverlight 5. Supongo que no es sorpresa para muchos ya que esto parece repetirse cada año. De hecho, el lanzamiento de Silverlight 4 fue hace casi exactamente un año.

El equipo de desarrolladores se ha afanado para completar las características anunciadas en el evento Silverlight Firestarter el diciembre pasado, donde dimos a conocer una gran cantidad de funcionalidades en las que estábamos trabajando. Su incansable labor ha culminado en la versión inicial de Silverlight 5 que se hizo disponible durante MIX11.

Como es usual en las versiones de este tipo, el beta es sólo para desarrolladores. Por lo tanto, es una prevista para ayudar a los programadores a familiarizarse con las nuevas características (y darles la oportunidad de decirnos qué piensan) y para que aprendan a usarlas. Esta versión no incluye un motor de tiempo de ejecución para le usuario y tampoco es permitido que las aplicaciones creadas sean puestas en producción.

Pero ya basta de cordialidades…

 

Descarga de Silverlight 5 y la herramientas asociadas

Para comenzar a usar el beta van a necesitar varios paquetes. Estos son los vínculos:

Este es el juego completo de componentes disponible para probar Silverlight 5. El mínimo absoluto requerido es Visual Studio 2010 y las herramientas de Silverlight 5 para Visual Studio.

 

Nota: en caso de que sean como yo y no les guste leer mucho, puede que se hayan brincado el punto de que no es necesario descargar e instalar los motores de ejecución y el kit de desarrollo si ya instalaron las herramientas de Silverlight 5. De nuevo, no se ocupa descargar el SDK o kit de desarrollo y los motores de ejecución si ya instalaron las herramientas de Silverlight 5 para Visual Studio. Los vínculos son provistos como una conveniencia para los que necesitan ejecutar pruebas en máquinas en las que las herramientas no han sido instaladas.

 

En el pasado he experimentado problemas al querer instalar herramientas en inglés en versiones en español de Visual Studio. O a veces he tenido problemas si el beta es en inglés y luego quiero instalar la versión en español de Silverlight. Como resultado, al experimentar con versiones beta, RC y así por el estilo, prefiero usar Visual Studio en inglés. Es por eso que los vínculos anteriores apuntan a las versiones anglosajonas de los paquetes.

 

Si quieren pueden comenzar a descargar los componentes mientras continúan leyendo más sobre esta versión.

 

Otras fuentes de información

Ya hay algunos lugares con información adicional y para acelerar el aprendizaje de Silverlight 5:

¡Guarden y suscríbanse a estos vínculos ya que serán fuentes continuas de más información muy valiosa!

 

Novedades en Silverlight 5 – un vistazo

Les doy ahora más detalles sobre las novedades de esta versión. Si vieron el evento Silverlight Firestarter entonces ninguna de estas será sorpresa. Las descripciones son un tanto extensas pero es para informarlos mejor.

 

 

 

Utilería

¿Cómo lanzar una nueva versión sin herramientas mejoradas? Visual Studio me ha demostrado ser una excelente plataforma para mejorar la productividad en el desarrollo de productos basados en tecnologías de Microsoft (¿Ya han visto el Administrador de extensiones y cómo obtener todas esas extensiones en línea? Mi favorita es VSCommands).

Tal como es de esperar, Silverlight 5 es compatible con las herramientas ya existentes. Luego de añadir el SP1, y las herramientas de Silverlight 5, tenemos la opción de usar múltiples versiones de desarrollo:

 Luego de instalar las herramientas, Silverlight 5 está disponible como plataforma.

 

Además de los aspectos básicos y las nuevas características, hemos agregado la que es una de mis favoritas y que muchos han estado solicitando: depuración en XAML. Por el momento sólo se pueden depurar enlaces de datos pero, siendo honestos, eso es lo que más nos interesa, ¿no es cierto? ¿Qué implica esta nueva característica? Bueno, ahora podemos con el editor establecer puntos de interrupción en líneas de XAML con sintaxis de {Binding}:

 

 ¡Punto de interrupción en XAML!

 

Al ser evaluado, obtendremos información sobre el enlace de datos:

 

Información de depuración de un enlace de datos en XAML.

 

Útil, ¿no? Eso esperamos. De nuevo, por el momento sólo enlaces pueden ser depurados.

Vídeo: Pete Brown demuestra la depuración en XAML

Volver al inicio

 

Audiovisuales

Hay también algunas mejoras en el campo de medios audiovisuales basadas en comentarios de nuestros clientes. En primer lugar, el MediaElement no estaba siendo muy eficaz en manejar audio poco tolerante a retrasos (como en ciclos de audio, por ejemplo). Existen varios trucos, pero ninguna solución completa o ideal. Ahora, ¿recuerdan cómo logramos hacer algunos ajustes para poder usar XNA en el teléfono? Bueno pues, ahora tenemos también disponible el SoundEffect en Silverlight 5. Para los desarrolladores en Windows Phone esto deber ser conocido:

 

using Microsoft.Xna.Framework.Audio;

// theStream es un flujo de audio obtenido
// de alguna fuente en particular

SoundEffect se = SoundEffect.FromStream(theStream.Stream);
se.Play();

 

Esperamos que les resulte oportuno a los que trabajan con audio. La clase SoundEffects también permite controlar el volumen, el tono, y así por el estilo.

Vídeo: Pete Brown demuestra el proceso de audio con poco retraso

También introdujimos una nueva funcionalidad a que llamamos familiarmente el vídeo de entrenamiento. El nombre técnico es TrickPlay, o reproducción de vídeo de velocidad variable y permite alterar la velocidad desde 0.5 hasta 2 (con 1 siendo la velocidad normal). La gracia es que se puede reproducir a la velocidad elegida pero sin alteración en el tono. El código no puede ser más simple:

 

protected void SpeedUpTrainingButtonClicked(object sender, RoutedEventArgs args)
{
  trainingVideoMediaElement.PlaybackRate = 1.8;
}

 

Para esta versión beta todavía no tenemos lista la corrección del tono, por lo que sólo verán el efecto en el vídeo si usan PlaybackRate.

¡También hemos incluido un decodificador para reproducir vídeo en formato H.264!

Volver al inicio

 

Texto

Hemos hecho varas mejoras al mecanismo de Texto. Por ejemplo, el nuevo RichTextBoxOverflow permite asociar contenedores de manera que el texto fluya entre ellos. Esto ayudará a distribuir el texto de forma automática en casos como el arreglo en columnas. Este es un ejemplo de cómo se pueden enlazar elementos:

 

<StackPanel Width="200">
  <RichTextBox Width="50"
      Height="50"
      OverflowContentTarget="{Binding ElementName=OverflowArea}">
    <Paragraph>
      This is some really long text that won't fit right
      into the main RTB control and should overflow
      into the area that I've defined in my XAML to be
      the other section.
    </Paragraph>
  </RichTextBox>
  <RichTextBoxOverflow x:Name="OverflowArea" />
</StackPanel>

 

Con el siguiente resultado:

 

 Flujo de texto en acción.

 

Para los aficionados a la tipografía en el mundo de Silverlight hemos incorporado espaciado (tracking) e interlineado (leading). Si los términos les parecen extraños, ¡no son los únicos! Básicamente lo que hacen es darnos más control sobre la forma en que es dibujado el texto y el espacio entre caracteres. Por ejemplo:

 

<RichTextBox FontSize="12" CharacterSpacing="300" />

 

Se ve de esta forma:

 

 Texto con espaciado diferente.

 

Otros aspectos en los que estamos trabajando, pero que no están presentes en el beta es mejorar la claridad del texto usando pixel-snapping y mayor compatibilidad con OpenType. Algunas de estas características fueron demostradas durante MIX así que asegúrense de ver la presentación temática y las demás sesiones.

Vídeo: Pete Brown demuestra el texto en Silverlight 5

Volver al inicio

 

Enlaces de datos

Hay varias novedades que caen dentro del área de enlace de datos. Puede que no estén relacionadas entre sí, pero conceptualmente las junto dentro de esta categoría.Een primer lugar están los DataTemplate implícitos. Lo que esto significa es que se puede crear un DataTemplate de un tipo específico en los enlaces de datos. Pongamos un ejemplo sencillo. Digamos que tengo un objeto Person con Nombre, Apellido y Título. También tengo otro objeto llamado Manager que deriva de Person y de Employee (que también es derivado de Person). Si estoy creando un enlace con un ListBox y quiero listar esta gente podría hacer algo como lo siguiente:

Código subyacente:

 

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
  List<Person> people = new List<Person>();

  people.Add(new Manager() {
                              FirstName = "Scott",
                              LastName = "Guthrie",
                              Title = "VP" });
  people.Add(new Employee() {
                              FirstName = "Tim",
                              LastName = "Heuer",
                              Title = "Minion" });
  people.Add(new Manager() {
                              FirstName = "Steve",
                              LastName = "Ballmer",
                              Title = "CEO" });
  people.Add(new Employee() {
                              FirstName = "Scott",
                              LastName = "Hanselman",
                              Title = "Open Source Fanatic" });

  PeopleList.ItemsSource = people;
}

 

XAML:

 

<ListBox x:Name="PeopleList">
  <ListBox.Resources>
    <DataTemplate DataType="local:Manager">
      <Border Background="LightBlue">
        <StackPanel Orientation="Horizontal">
          <TextBlock Text="{Binding FirstName}" />
          <TextBlock Text="{Binding LastName}" />
        </StackPanel>
      </Border>
    </DataTemplate>
    <DataTemplate DataType="local:Employee">
      <Border Background="Bisque">
        <StackPanel Orientation="Horizontal">
          <TextBlock Text="{Binding FirstName}" />
          <TextBlock Text="{Binding LastName}" />
        </StackPanel>
      </Border>
    </DataTemplate>
  </ListBox.Resources>
</ListBox>

 

desplegando:

 Plantilla de datos implícita en acción. 

Así puedo usar enlaces de datos con objetos que tienen propiedades en común, con la flexibilidad de  alterar la plantilla cuando sea apropiado.

Vídeo: Pete Brown demuestra el DataTemplate implícito

 

También es posible ahora usar RelativeSource con controles anidados, permitiendo que un DataTemplate enlace a propiedades del elemento que lo contiene, por ejemplo:

 

<UserControl x:Class=”MyApplication1.UserControl1”
      xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
      xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”>
  <ContentControl Tag=”SomeValue”>
    <HeaderdContentControl>
      <HeaderedContentControl.Header>
        <TextBlock Text=”{Binding Tag,
                          RelativeSource={
                              RelativeSource,
                              AncestorType=ContentControl,
                              AncestorLevel=2}}” />
      </HeaderedContentControl.Header>
      <Button>Click Me!</Button>
    </HeaderdContentControl>
  </ContentControl>
</UserControl>

 

¡Esta es otra funcionalidad muy solicitada!

¿Y qué tal código extensible (MarkupExtensions)? ¡También está ahora disponible! Le será útil a los que implementan el patrón MVVM y a los que han deseado poder crear expresiones personalizadas en el código XAML. También puede servir como medio para agilizar la adaptación cultural del código. Tal vez algo como:

 

<TextBlock Text="{local:ResourceLookup Path=MyResourceKey}" />

 

Creo que esta será una característica muy útil. Por supuesto, el desarrollador necesita escribir la extensión en sí.

Otra funcionalidad es la habilidad de asignar estilos (Style setters) usando enlaces. Estas son algunas de las excelentes mejoras con respecto a enlaces de datos, muchas de la cuales han sido muy solicitadas. ¡No puedo esperar a ver cómo serán usadas!

Volver al inicio

 

Controles

Esta es otra categoría general en la que incluyo varias novedades de Silverlight 5.

El primero es el llamado CickCount, que ayuda a reaccionas clics dobles en elementos de la aplicación:

 

private void CheckClick(object sender, MouseButtonEventArgs e)
{
  if (e.ClickCount == 2)
  {
    // Tenemos un clic doble
  }
}

 

Vídeo: Pete Brown demuestra el uso de ClickCount

 

La siguiente novedad es la habilidad de usar ventanas múltiples. Es el mismo elemento usado por MainWindow y nos deja crear cuantas ventanas queramos y con las que aplicación puede interactuar, mostrándolas como ventanas separadas en el sistema operativo. Noten que no es lo mismo que el ChildWIndow que reside dentro de la ventana principal. Esta funcionalidad está disponible en aplicaciones ejecutadas en modo fuera del navegador. Si la ventana principal es cerrada, entonces todas las otras ventanas son también eliminadas.

Vídeo: Pete Brown demuestra ventanas múltiples

Volver al inicio

 

Gráficos tridimensionales

Uno de los mejores demos en el evento Silverlight Firestarter fue el de gráficos en tres dimensiones. Yo no pretendo ser siquiera un novato en en este tema, pero no puedo esperar a ver las cosas que otros harán con esta interfase de programación. Les sugiero mantener un ojo en René Schulte ya que estoy seguro de que publicará cosas impresionantes. Es difícil mostrar un trozo de código para 3D, por lo que les enseño un poco de lo que es posible:

 

Demostración de gráficos tridimensionales.

 

Pueden visitar a René Schulte y Andy Beaulieu para ver buenos ejemplos. Estos son algunas muestras:

 

Volver al inicio

 

Aplicaciones de alta confianza en el navegador

Otra novedad es la capacidad de usar algunas funciones de “alta confianza” de Silverlight dentro del navegador. Esto permite usar la funcionalidad de aplicaciones de confianza en el contexto del navegador, sin tener que instalarlas. El archivo XAP todavía debe estar certificado (y el certificado debe residir en el repositorio de publicadores de confianza del usuario) e incluir el atributo ElevatedPermissions en su manifiesto tal y como en el caso de aplicaciones fuera del navegador.

Otro requisito es la existencia de un valor en el registro de Windows. El valor puede ser creado usando directivas de grupo (Group Policy) u otra técnica similar de administración de sistemas. Con estos requisitos cumplidos entonces la aplicación puede usar los permisos elevados que fueron introducidos con Silverlight 4, incluyendo el uso del teclado y pantalla completos.

Volver al inicio

 

Mejoras a aplicaciones de confianza fuera del navegador

Además de las ventanas múltiples, las aplicaciones de alta confianza fuera del navegador ahora tienen acceso más allá de la carpeta “Mis Documentos” del usuario. El propósito es dar más flexibilidad en esta área de confianza.

Volver al inicio

 

Misceláneos

Fuera de las características descritas arriba, tenemos otras que decidí no mencionar en las categorías anteriores:

  • Mejoras en el tiempo de arranque en procesadores multinúcleo
  • Un ComboBox con búsqueda basada en los caracteres digitados (type-ahead search)
  • El cuadro de diálogo para guardar archivos ahora permite usar un nombre por defecto (DefaultFileName)
  • Mejoras en los gráficos usando como base el código de Windows Phone 7
  • Aceleración basada en hardware al usar el modo Windowless en Internet Explorer 9

 

Si sienten que se discutió mucho más que esto durante la presentación en MIX, están en lo correcto. Hay una cantidad de cosas en las que todavía estamos trabajando que no fueron incluidas en el beta como:

  • Impresión basada en vectores
  • Facultad de reconocer consumo de poder, por ejemplo para aplicaciones de pantalla completa (para no suspender en medio de una emocionante película)
  • Compatibilidad con controles remotos para reproducción de audiovisuales
  • Compatibilidad con OpenType
  • Mejoras en la claridad del texto usando pixel-snapping
  • Un evento nuevo DataContextChanged para señalar cambios en el contexto de datos
  • Compatibilidad con servicios a nivel WS-Trust
  • Compatibilidad con 64 bits
  • Interoperabilidad con COM para aplicaciones de alta confianza ejecutadas en el navegador
  • Funcionalidad P/Invoke para aplicaciones de alta confianza
  • Mejoras al control PivotViewer distribuido en el SDK

Como pueden ver, nos hemos mantenido ocupados. ¡Esperamos que les guste lo que hayan visto hasta ahora!

Volver al inicio

 

Resumen y comentarios

Ya tienen, pues, nuevos juguetes. Si han leído todo el artículo entonces las herramientas ya deben haber terminado de descargar. Vayan e instálenlas, vean los vídeos de Peter enlazados acá y tomen tiempo para aprender las nuevas funcionalidades. Si se topan con problemas asegúrense de reportarlos (es mejor hacerlo usando los métodos oficiales en vez de dejar comentarios a este artículo). También manténganse pendientes de la lista de cambios para que puedan estar al tanto de posibles efectos en sus aplicaciones.

Felicidades al equipo de Silverlight 5 y esperamos que les guste lo que ven y el rumbo en el que vamos con respecto a las funcionalidades que tanto han solicitado.

¡Espero haberles sido de ayuda!

 

Time Heuer

 

Etiquetas asignadas:
 

Responder



Licencia de uso

El contenido de las traducciones está sujeto a los términos de protección de derechos de uso de los autores originales quienes han autorizado su publicación en este blog. Asegúrese de entender los terminos de la licencia de cada autor antes de usar tal contenido.

Mis propios artículos son publicados bajo los términos de la Licencia Reconocimiento-Compartir bajo la misma licencia 3.0 Estados Unidos de Creative Commons:

Creative Commons License
Blog de Maromas Digitales by Maromas Digitales, LLC is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 Estados Unidos License.

License

The contents of all translated articles is subject to the copyright and licensing terms of the original authors and has been published here with their express permission. Verify the original author's licensing terms before using the contents of these articles.

My own articles are licensed under the Creative Commons Attribution-Share Alike 3.0 United States License:

Creative Commons License
Blog de Maromas Digitales by Maromas Digitales, LLC is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.