Thinking in SharePoint

Blog sobre desarrollo en la plataforma .Net, centrado en Silverlight y SharePoint

Tras un parón en el blog sobre todo por motivos de tiempo, vuelvo a la carga con Moonlight otra vez.

En mi entrada anterior hablábamos de esta versión de Silverlight 1.0 para Linux, y ayer, 4 de mayo, apenas dos meses y medio después, se ha presentado la versión 2.0 de Silverlight para sistemas Unix, por ahora en preview, en la que podemos ver los tremendos avances que han hecho los chicos del proyecto Mono.

Lo más destacable de esta versión, es que REALMENTE están lanzando un plugin para el navegador que incorpora una máquina virtual de Mono (Mono VM), a diferencia de la versión 1.0, que estaba basada en Javascript.

Esta Mono VM interpreta el mismo código que el CoreCLR, por lo que se obtendrá el mismo resultado que obtendríamos en una máquina Windows (o al menos así será con el tiempo, ya que esta versión Preview aún no pasa todos los test de Microsoft).

Esto a su vez significa por ejemplo que podemos contar con todos los controles Silverlight incluidos en el sdk, ya que se visualizarán correctamente todos los botones, listbox, etc... sin tener que reimplementarlos :)

Pero ahí no se acaban las novedades, esta versión 2.0 incluye streaming adaptativo (que soporta seeking y elección de la calidad), DeepZoom (del que hablamos en una entrada anterior), e incluso se han adelantado y ya han incluido características de la próxima versión que aún se encuentra en beta para Windows.

Estas características de la versión 3.0 incluyen:

  • Soporte de aplicaciones fuera del navegador.
  • Funciones de easing para animaciones.
  • La clase WriteableBitmap.
  • Un SaveFileDialog.
  • Api extendida del DeepZoom.
Ya sólo queda felicitar a la gente de Mono, que como vemos han hecho unos avances increíbles en apenas dos meses, y animarles para que sigan a ese ritmo.

Para los que quieran probar esta versión éste es el enlace de descarga.
Para los que quieran ir un paso más allá y echarle un ojo al código fuente, el enlace de descarga es éste otro.

Nota: La versión Preview aún ocupa 8.8 megas, y no los 3.9 que debería, esto es debido a que se incluyen puntos de interrupción para facilitar la depuración y el envío de bugs a la gente de Mono, ya que su intención es sacar actualizaciones del plugin cada semana.

Fuentes:
http://tirania.org/blog/archive/2009/May-04.html
http://www.squeedlyspooch.com/blog/

Continuando con la explicación de "¿qué es Silverlight?" que comencé en mi anterior post, hoy vamos a hablar sobre otras de sus características:

Silverlight es un plugin multinavegador y multiplataforma.
¿Cómo se consigue esto? se consigue gracias a que el plugin de Silverlight incluye una versión reducida del CLR (la máquina virtual de .Net), también llamada CoreCLR, así como un subconjunto de clases de la BCL (Base Class Library), todo ello en apenas 4,5MB, un peso realmente pequeño y que sorprende al ver todo lo que incluye.

Bien, ahora ya sabemos que para que funcione en otras plataformas, sólo es necesaria una implementación de la máquina virtual, pero... ¿Ahí termina el soporte de Microsoft?

La respuesta es no, Microsoft está apostando realmente fuerte por esta tecnología, y actualmente Silverlight es soportado en los navegadores IE, Firefox, Chrome, Safari, y Opera, por otra parte, si hablamos de plataformas, Silverlight es soportado también en Linux y Mac OS (tanto en PPC como en Intel).

Microsoft se encuentra actualmente involucrado colaborando en el desarrollo de la implementación de Silverlight para Linux (y para otros sistemas operativos basados en Unix), llamada Moonlight.

Moonlight forma parte del proyecto Mono, una implementación multiplataforma y open source del framework .Net.

Como fruto de este trabajo, desde hace dos semanas se encuentra disponible la versión 1.0 de Moonlight, y ya se encuentran trabajando en la próxima versión.

También se encuentran disponible desde este mismo viernes las Eclipse Tools for Silverlight, un plugin de código abierto para Eclipse, que podemos descargar desde aquí,

Vemos que los avances en esta tecnología se suceden muy rápidamente, así que intentaré traeros desde aquí todas las novedades para que sigamos aprendiendo sobre esta nueva e interesante teconología.

Esta semana entrada rapidita, que aún estoy recuperándome del Silverlight Tour, y del aniversario de la empresa, visita express a Barcelona incluida.

Por eso sólo quiero recordaros que mañana día 3 de Marzo se celebra el evento online Windows Day - Tecnologías para derribar paredes, para América latina y España.

Esta es la descripción que encontramos en Microsoft:

Descubre novedades acerca de las tecnologías de implementación, administración y de desarrollo de aplicaciones en desktops con Windows Vista y con Windows 7: cómo mejorar el rendimiento, cuándo virtualizar, cómo optimizar los escritorios, incrementar la seguridad, resolver el acceso a datos y cómo crear las mejores interfaces de usuario. Demos y expertos en vivo respondiendo tus preguntas.


Sin duda una oportunidad interesante para aprender cosas nuevas, yo me quedaré con toda la parte de wpf y desarrollo de aplicaciones RIA, pero echadle un ojo a la agenda, y no dudéis en apuntaros desde la web oficial.

Aunque muchos de nosotros ya miramos hacia la futura versión de nuestra herramienta de trabajo, Visual Studio 2010, y sus prometidas mejoras que incluirá para el desarrollo en SharePoint, aún se puede mejorar mucho más la versión 2008, como nos demuestra la gente de Microsoft en esta nueva versión CTP (Community Technology Preview) de las Visual Studio 2008 extensions for Windows SharePoint Services 3.0, v1.3 (VSeWSS 1.3 para los amigos).

Veamos qué nos ofrece esta versión:

  • Soporte para desarrollo y despliegue en 64 bit (x64)
  • Nuevos menús para Visual Studio: Package, Retract y Quick Deploy, que nos permitirán empaquetar la solución sin desplegarla, desactivar y eliminar una solución activa en SharePoint, y desplegar rápidamente una solución.
  • Nuevos comandos para realizar lo anterior por consola.
  • Mejoras al crear nuevas características (Features):
    • Permitiendo definir el alcance (Web, Site, Web Application, Farm).
    • Permitiendo crear Feature Receivers (que permiten ejecutar código propio cuando se instala, desinstala, activa o desactiva una característica).
    • Opcionalmente creando elements.xml para nuestras características.
    • Permitiendo hacer "Drag & Drop" de elements entre características.
  • Se permite renombrar WebParts. Desde mi punto de vista algo realmente útil, que había que hacer cambios en bastantes sitios).
  • Soporte para despliegue automático de otros ensamblados (assemblies) de los que dependa nuestra solución.
  • Resolución de conflictos al desplegar soluciones desde Visual Studio, como por ejemplo los típicos errores de WebParts duplicadas.
  • ¡Muchas más!
Sin duda se trata de una gran cantidad de mejoras, ¡sólo nos queda esperar la versión de lanzamiento!

Os dejo con la descarga:

Mucha gente aún se pregunta qué es SilverLight, desde la web de Microsoft obtenemos esta definición:

Microsoft Silverlight es un plug-in multinavegador, multiplataforma y multidispositivo para la distribución de la nueva generación de experiencias multimedia basadas en .NET, y de aplicaciones interactivas "ricas" para la Web.
A través del soporte de .NET, de vídeo en HD, de streaming avanzado y efectivo en coste, y la incomparable interactividad que ofrece la tecnología Deep Zoom, empresas y negocios podrán alcanzar nuevos mercados a través de la Web, escritorio, y dispositivos.
Es una definición con una clara orientación comercial, pero cumple con su función, por lo que en estos momentos todo el mundo habrá hecho la asociación: "Silverlight es como Flash, pero de Microsoft".

Sin duda ese es el gran reto de Microsoft, introducir Silverlight en un mercado donde la competencia es muy fuerte, donde la penetración de Flash llega al 95% de los navegadores, o donde JavaFX ya cuenta con la base de mercado de su máquina virtual.

Por suerte Microsoft está apostando fuerte por esta tecnología, y ya ha llegado a conseguir un 25% de cuota de mercado (50% en algunos países), gracias a iniciativas como la retransmisión de las últimas olimpiadas, o la retransmisión de la toma de posesión de Barack Obama.

Pero bueno, dejándonos de números, podríamos destacar de Silverlight sobre todo la facilidad de programación, el uso de la plataforma .NET implica poder utilizar cualquiera de los lenguajes a los que estemos acostumbrados a programar, como C#, VB.NET, u otros lenguajes como Python o Ruby, así como la ventaja de disponer de herramientas muy buenas, como Visual Studio o Expression Blend 2.

La separación en dos productos también nos permite separar el trabajo gráfico del diseñador, de la lógica de negocio de la aplicación, normalmente trabajo del desarrollador.

Otra de las ventajas que destacan de Silverlight es su rendimiento, debido en gran parte al uso de aceleración por hardware vía DirectX.


Pasemos ahora a la acción, y veamos algunos de los ejemplos de Silverlight, para observar cuál es el verdadero potencial de esta tecnología:
Tras este primer acercamiento (creo que necesario) a Silverlight, en próximos posts me extenderé más en la parte de "multinavegador, multiplataforma y multidispositivo" que encontábamos en la definición.

Actualización:
Edito para añadir el siguiente ejemplo, también muy impresionante:

Silverlight PhotoSynth Viewer

Se trata de un visor Silverlight para PhotoSynth, otra tecnología de Microsoft que permite hacer recreaciones en 3D a partir de fotos, y que se también se usó para inmortalizar en 3D la toma de posesión de Obama.

El visor es sólo una demostración, pero hace un buen uso del DeepZoom.

Hay ocasiones en las que tenemos que leer información que se nos proporciona a través de un XML, los motivos pueden ser muy diversos, pero siempre se nos plantea un problema: ¿Cómo asegurarnos de que el archivo que leemos tiene la estructura deseada?

La respuesta es clara: validando el documento contra una DTD.

La plataforma .Net nos proporciona métodos sencillos para ello, siempre que la DTD se encuentre incluida en el mismo, o que al menos el documento incluya la cabecera

<DOCTYPE NombreDoc SYSTEM "NombreDTD.dtd">

donde se referencia al archivo que contiene la dtd. Por ejemplo, aquí nos dice Microsoft cómo hacerlo.

Pero en ocasiones estos xml deben ser proporcionados o modificados por usuarios o personal técnico no experto.

Máxima de la programación:
No podemos fiarnos de que los datos proporcionados por el usuario sean correctos
Así que vamos a facilitarles la vida, ellos modificarán o escribirán el xml, y nosotros nos encargamos de validarlo contra una dtd propia.

Si nuestra dtd se encontrara en un archivo externo, podríamos optar por la opción de añadir la linea DOCTYPE en la cabecera si no la tiene, y volver a leer el documento.

Yo propongo un método que valida un documento a partir de una dtd dada en un string devolviendo el XmlDocument resultante.

Es un método que uso frecuentemente en el desarrollo web (Ya sabéis que hacemos las mejores intranets con SharePoint), por lo que la ubicación del archivo a validar se introduce como una url relativa al servidor.

El código de la función tendría el siguiente aspecto (lo comento sobre la marcha):

private
XmlDocument LoadAndValidateXML(string dtd, string urlXML)
{
//Devolveremos null si no existe
XmlDocument
xmlDoc
= null;

if (File.Exists(MapPathSecure(urlXML)))
{
//Leemos el archivo como una cadena a la que añadimos nuestra dtd
StreamReader sr = new StreamReader(MapPathSecure(urlXML));
string xmlString = sr.ReadToEnd();
xmlString = dtd + xmlString;

//Preparamos las opciones necesarias para la validación
XmlReaderSettings xmlSettings = new XmlReaderSettings();
xmlSettings.ValidationType = ValidationType.DTD;
xmlSettings.ProhibitDtd = false;
xmlSettings.NameTable = new NameTable();

//Preparamos la lectura del string como xml con las opciones anteriores
StringReader
input = new StringReader(xmlString);
XmlTextReader reader = new XmlTextReader(input);
XmlReader xmlReader = XmlReader.Create(reader, xmlSettings);

//Creamos el XmlDocument que contendrá el resultado en caso positivo
xmlDoc
= new XmlDocument();

try
{
//Intentamos validar
xmlDoc.Load(xmlReader);
}
catch (Exception ex)
{
//Devolveremos null si algo ha ido mal
xmlDoc = null;

//Tratar aquí la excepción
}
finally
{
//Siempre cerramos el stream
xmlReader.Close();
}

}
return xmlDoc;

}


Por último sólo me queda recordaros que este método sólo valida que el documento tenga la estructura que nosotros queremos, pero NO valida los datos incluidos, por lo que siempre deberemos tomar las medidas de seguridad adecuadas para tratar la entrada de datos del usuario.

Bienvenidos a Microsoft Semblio!

Hace apenas unos días Microsoft comunicaba la aparición de una nueva tecnología: Microsoft Semblio, hoy tenemos la oportunidad de probarlo por nosotros mismos

Microsoft Semblio nos proporciona una serie de herramientas especialmente dirigidas a la comunidad educativa para crear material de aprendizaje, fácilmente distribuible, interactivo y visualmente muy atractivo debido a que está basado en WPF.

Estas interfaces ricas nos permiten por ejemplo:

  • Experimentar los conceptos que se van explicando textualmente, consiguiendo así una mayor asimilación.
  • Hacer anotaciones sobre el libro electrónico.
  • Realizar preguntas al lector para asegurarnos de que ha entendido lo explicado anteriormente.
Todo ello intentando hacer la experiencia lo más interesante posible para el estudiante.

Si aún no os hacéis una idea de lo que se puede conseguir con estas herramientas, os remito al vídeo que aparece en la web de Semblio, aunque será mucho mejor que lo experimentemos nosotros mismos en nuestro ordenador:

Prueba la demo de Microsoft Semblio

Esta demo nos permitirá estudiar cómo afecta el calor y la presión a las partículas de un gas, para ello seguiremos estos pasos:
  1. Descarga la demostración desde este link
  2. Descomprímela
  3. Ejecuta la aplicación Player.exe. Ésta nos va a permitir cargar y ejecutar nuestros archivos .semblio
  4. Haz click en Load from File y selecciona el archivo GasLab.semblio (se encuentra en la misma carpeta que el player). Tras esto aparecerá en la lista de archivos Semblio que podemos ejecutar.
  5. Selecciona la demostración GasLab.semblio de la lista y haz click en uno de los 3 botones de abajo (apenas hay diferencias entre los 3 players disponibles)
  6. Disfruta de la demo!


Nota importante: Para el funcionamiento de la demo es necesario disponer de la última versión del .Net framework, que puedes descargar desde aquí: .Net framework 3.5 SP1

Como vemos la aplicación visor carga archivos .semblio, archivos comprimidos en zip (podemos renombrarlo a .zip para abrirlo) que contienen las dlls y los xaml que son utilizados.

Si queremos seguir experimentando el sdk ya está disponible para su descarga, aquí os dejo el enlace: descargar Semblio SDK

Por último quiero decir que una de las cosas que caracteriza a raona es su apuesta por las nuevas tecnologías, como SharePoint o Silverlight, o la mezcla de ambas para conseguir resultados de calidad como en el desarrollo de intranets colaborativas, área en la que trabajo, así que nos encargaremos de profundizar en estas nuevas herramientas que nos proporciona Microsoft para evolucionar y adelantarnos a las necesidades de nuestros clientes.

Así que seguiremos atentos a las noticias referentes a Semblio desde el blog oficial!