Rodrigo Díaz Concha

Silverlight 3 y 4 en Español. Este sitio se ha movido.

Ir a rdiazconcha.com

Regresa el Silverlight Tour a Caracas

Silverlight Tour

Caracas, Venezuela

07 al 09 de Diciembre 2009

Más información…

Taller de Silverlight 3 en Microsoft Venezuela

Chamos y chamas, les invito a todos(as) a que asistan al taller de Silverlight 3 que impartiré en Microsoft Venezuela el próximo día martes 25 de Agosto (mañana!) a las 18:30 horas en:

Microsoft Venezuela

Av. Principal de la Castellana, edificio Centro Letonia, piso 10.

Caracas, Venezuela

Este taller va dirigido a desarrolladores y también a diseñadores que estén interesados en saber qué tiene Silverlight para sus aplicaciones, proyectos y empresas!  Este taller es 100% práctico y es totalmente parcitipativo.  Traigan sus preguntas y dudas. 

Más información en el blog de mi pana Eduardo Sojo.

¡Los esperamos!

Silverlight Tour – Caracas

¡Solo falta 1 semana para iniciar con el Silverlight Tour en la ciudad de Caracas, Venezuela!  El curso se llevará a cabo del 11 al 13 de Agosto.

Entrenamiento Silverlight en Caracas

El Silverlight Tour Workshop es un curso de tres días de alta profundidad técnica acerca de Silverlight 3. El curso se imparte en varios idiomas en diferentes países en todo el Mundo y está actualizado a la versión final de Silverlight 3.

Incluye:

  • Tres días de entrenamiento intenso de Silverlight 3
  • Arquitectura de Soluciones con Silverlight
  • Comunicación con el Servidor
  • Creación dinámica de contenido XAML
  • Comunicación con el DOM
  • Aplicaciones Fuera del Navegador
  • Diccionarios Merged y Estilos Based-On
  • Validación de Datos utilizando el Modelo de Controles
  • Framework de Navegación
  • Utilización de XML Binario
  • Utilización de la nueva API de Bitmaps
  • Pixel Shaders
  • Comportamientos
  • Blend 3
  • ...y más
  • Material totalmente en Español

El registro sigue abierto y seguirá hasta el día 10 de Agosto.

Más información en esta liga.

¡Los esperamos!

Silverlight Tour – Guadalajara

Una vez más, la tapatía ciudad de Guadalajara, Jalisco se convierte en ciudad destino del curso que ha dado la vuelta al Mundo: el Silverlight Tour.  Este será el primer curso del Silverlight Tour en Español con todo el material completamente actualizado a la versión final de Silverlight 3, incluyendo:

  • Aplicaciones Fuera del Navegador
  • Pixel Shaders
  • Aceleración de Gráficos por Hardware
  • Comportamientos
  • Framework de Navegación
  • Blend 3
  • Servicios Web seguros
  • XML Binario
  • RIA Services
  • Render Caching
  • Y más...

El Silverlight Tour es un curso de tres días, con un horario de 09:00 a 18:00 hrs. Aún quedan lugares y el registro está abierto así que les sugiero que aparten su lugar. La fecha es el 27 de Julio.

Web Cast: Silverlight 3 Toolkit

Los invito a todos(as) a la siguiente reunión virtual la próxima semana de La Liga Silverlight en donde el mismísimo Arturo Molina platicará acerca del Silverlight 3 Toolkit.  Si quieren saber cómo extender sus aplicaciones de Silverlight por medio de controles bastante interesantes y sobre todo… de código fuente abierto este Web Cast es para ustedes!

Tema: Silverlight 3 Toolkit

21 de Julio

7:00pm (-06:00 GTM)

Expositor: Arturo Molina

 

El registro está abierto aquí

Los esperamos!

Silverlight Tour en Venezuela y Colombia

El Silverlight Tour Workshop es un curso de tres días de alta profundidad técnica acerca de Silverlight 3. El curso se imparte en varios idiomas en diferentes países en todo el Mundo y está actualizado a la versión final de Silverlight 3.  ¿Estás listo?

Silverlight Tour – Caracas, Venezuela

11 al 13 de Agosto 2009

Registro

Silverlight Tour – Maracaibo, Venezuela

19 al 21 de Agosto 2009

Registro

 

Silverlight Tour – Bogotá, Colombia

31 de Agosto al 02 de Septiembre 2009

Registro

 

Introducción al control de Bing Maps: Serie de 3 Screen Casts

Aquí podrán encontrar los Screen Casts relacionados al tema de Introducción al control de Bing Maps para Silverlight que hice para complementar el Web Cast que tuvimos en días pasados en La Liga Silverlight:

  1. Parte 1 de 3
  2. Parte 2 de 3
  3. Parte 3 de 3 
Espero que les sean de utilidad.
La Familia MVP tiene un nuevo integrante

Para mí el día de hoy ha sido colmado con alegría y satisfacción profesional ya que he sido nombrado Microsoft MVP en la categoría de ASP.NET para el año 2009.  Es un verdadero honor el pertenecer a este selecto grupo de personas, quienes se distinguen por su gran pasión por la tecnología y talento.

Esto no hubiera sido posible sin el apoyo de todas las personas que han creído en mí durante todos estos años de carrera profesional; personas con las cuales he compartido encuentros (y desencuentros), quienes me han apoyado dentro y fuera del plano laboral y al gran equipo de Microsoft.

A todos ustedes: Gracias (you know who you are).  Me esforzaré a que este sea el primero de muchos.

 

¡Más por venir!

Subiendo archivos al servidor en aplicaciones Silverlight

Introducción

Es muy común que para nuestras aplicaciones Web necesitemos ofrecer a los usuarios la capacidad de subir archivos al servidor por diversas razones: para su posterior procesamiento, respaldo de información, etc.  En este artículo veremos cómo en Silverlight esta tarea es sencilla por medio de la clase WebClient.

WebClient.OpenWriteAsync()

La clase WebClient permite una comunicación asíncrona entre el aplicativo Silverlight y algún endpoint que deseemos leer o escribir.  Es precisamente por medio de su método OpenWriteAsync por el cual podemos establecer un Stream de escritura para poder grabar en el servidor algún archivo que el usuario seleccione en la aplicación por medio de la caja de diálogo OpenFileDialog.  Es de vital importancia el mencionar que Silverlight, al ejecutar bajo un esquema de confianza media (Medium Trust) debido a que corre en un SandBox, no es capaz de acceder el sistema de archivos de la máquina en donde está ejecutando la aplicación, sino solamente a través de la autorización del usuario por medio de la caja de diálogo mencionada.

Bajo estas premisas, desarrollaremos la siguiente solución que demuestra lo siguiente:

Lee el artículo completo aquí

Web Slices de Internet Explorer 8 con Silverlight

En el marco del Festival de Instalación de Internet Explorer 8 que tuvimos el día de hoy en varias ciudades de todo México, quiero detallar la potencia que tienen los Web Slices sobre todo si los usamos con una plataforma RIA como Silverlight.

Pero ¿qué es un Web Slice?  Un Web Slice es un fragmento o vista previa de una página que puede mostrarse en una ventana dentro de Internet Explorer 8 sin necesidad de cambiarte de la página en donde estás actualmente.  La creación de los Web Slices es bastante sencilla ya que no son más que fragmentos de código HTML que deben implementar ciertas clases de Css específicas, para que el navegador trate ese fragmento como, precisamente, un Web Slice.  Estas clases están definidas en la Especificación del Formato de los Web Slices que podemos encontrar en el MSDN y que al tiempo de la publicación de este artículo se encuentra en la versión 0.9.

Las clases más básicas para la construcción de Web Slices son las siguientes:

  • hslice:  Indica el comienzo de la definición del Web Slice (requerido)
  • entry-title: Indica el título para el Web Slice (requerido)
  • entry-content: Indica el contenido para el Web Slice (opcional)
  • feedurl:  Se aplica al atributo rel de un elemento <a> e indica una fuente de dónde podemos tomar información para incluir en el Web Slice (opcional)
  • bookmark:  Se aplica al atributo rel de un elemento <a> e indica la ruta de navegación al abrir el Web Slice

El siguiente fragmento de código muestra la implementación de un Web Slice simple:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <div class="hslice" id="div1">
        <div class="entry-title">
            Web Slice de Ejemplo
        </div>
        <div class="entry-content">
            <h1>Web Slice</h1>
            <p>Fragmento de una página que puede verse en una ventana dentro de Internet Explorer 8</p>
        </div>
    </div>
</body>
</html>

Lee el artículo completo aquí

Código Fuente: Creando un Reproductor MP3 con Silverlight 3
Reproductor de mp3 con Silverlight 3

Hace algunos días tuvimos otra reunión virtual más de La Liga Silverlight.  En esa sesión vimos cómo con Silverlight 3 podemos construir fácilmente un reproductor mp3 que incluso corra fuera del navegador gracias a la característica de ejecución Out-Of Browser (OOB) implementada en Silverlight 3.

Para todos aquellos asistentes que nos acompañaron aquí les dejo el url para poder descargar el código fuente que hicimos durante la sesión.

Sentimos mucho por esta ocasión no tener la sesión grabada ya que tuvimos un percance técnico de último momento pero esperemos a que las siguientes sesiones tengan la posibilidad de descargarlas para que las puedan ver posteriormente.

Salu2!

Festival de Instalación de Internet Explorer 8 – Guadalajara

Los esperamos el día de hoy al Festival de Instalación de Internet Explorer 8: la última versión del navegador de Microsoft, el cual incluye nuevas y novedosas características de seguridad, Web Slices, Aceleradores, etc.

En el caso de Guadalajara, Jalisco, los esperamos el día de hoy 16 de Junio a las 17:30 hrs. en la Sala 1 del Centro del Software (Av. López Mateos y Cubilete).  En el evento estaremos representantes de las diversas comunidades MSDN presentes en el estado para poder compartir con todos ustedes las ventajas que obtenemos al usar esta nueva versión del navegador.

Poster del Festival de Instalación de IE8

Los esperamos a todos (as) !!!

Posted: Jun 16 2009, 10:49 AM by rodrigo | with no comments
Filed under:
Recordatorio: “Creando un reproductor de mp3 en Silverlight 3”

Este es un recordatorio para que nos acompañen el día de hoy 10 de Junio a las 7:00p.m. en otra reunión más de La Liga Silverlight con el tema: “Creando un reproductor de mp3 en Silverlight 3”.

En este Web Cast veremos cómo con Silverlight 3 es bastante sencillo crear aplicaciones que hagan uso de multimedios como archivos de audio mp3.  Asiste a este evento de La Liga Silverlight: la primer comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas.

Oradores:

  • José Luis Estrada “El Jocho”
  • Rodrigo Díaz Concha

Se pueden registrar al Web Cast en esta dirección

Los esperamos!  Nos dará mucho gusto tenerlos presentes

Salu2!

Silverlight 3 Beta 1: Diccionarios de Recursos de tipo Merged

Introducción

Otra característica nueva en Silverlight 3 Beta 1, tomada de su hermano mayor WPF son los Diccionarios de Recursos de tipo Merged (mezclados, unidos), o en inglés: Merged Resource Dictionaries; los cuales nos permiten tener de manera desacoplada recursos (por ejemplo estilos) en un archivo por separado.  Esto nos ofrece un mecanismo para compartir estilos entre diferentes proyectos de Silverlight, o incluso entre proyectos de Silverlight y proyectos de WPF.

El archivo deberá tener declarado todos y cada uno de los Recursos que deseamos incorporar a ese diccionario, y deberán estar contenidos en un elemento de tipo <ResourceDictionary>.  El siguiente fragmento de código Xaml muestra un archivo llamado Estilos.xaml que funge como Diccionario de Recursos:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Style x:Name="estiloBase" TargetType="Shape">
        <Setter Property="Width" Value="50" />
        <Setter Property="Height" Value="50" />
        <Setter Property="Fill" Value="Red" />
        <Setter Property="Stroke" Value="Gold" />
        <Setter Property="StrokeThickness" Value="5" />
        <Setter Property="Margin" Value="5" />
    </Style>
    <Style x:Name="estiloRectangulo" BasedOn="{StaticResource estiloBase}" TargetType="Rectangle">
        <Setter Property="RadiusX" Value="10" />
        <Setter Property="RadiusY" Value="10" />
    </Style>
</ResourceDictionary>

Para ver el artículo completo haz clic aquí

Lanzamiento de Silverlight 3 y Expression Blend 3 el 10 de Julio

Esta es LA noticia que todos los que estamos inmersos en el mundo de Silverlight estábamos esperando:  según Mary Jo Foley el 10 de Julio es el día en el que Microsoft lanzará las versiones finales de Silverlight 3 y Expression Blend 3 en la ciudad de San Francisco.

No cabe duda que Microsoft está apoyando y respaldando esta tecnología y le está apostando a convertirse en la tecnología de facto en los próximos años para las aplicaciones Web en su plataforma.  Si aún estás escéptico acerca de Silverlight, este es el mejor momento en que te enteres qué tiene para ti, para tus aplicaciones y para tu empresa!

Y qué decir de Expression Blend 3?  Pudimos apreciar en el MIX09 sus maravillosas características y mejoras y al mismo tiempo veíamos tan lejos el día en el que pudieramos tenerlo en nuestras mano… bueno pues ese día ya tiene nombre (o número ;)).

 

Excelente noticia!!!

Posted: May 28 2009, 02:18 PM by rodrigo | with no comments
Filed under:
Desarrollo con Silverlight en Visual Studio 2010 Beta 1

Solo si han estado debajo de una piedra no sabrán que el día de hoy fue liberado públicamente el Beta 1 de Visual Studio 2010.  La nueva versión de esta herramienta incluye enormes mejoras que merecen un artículo cada una de ellas junto con las nuevas características que podemos encontrar en el .NET Framework 4.0, pero en este artículo nos enfocaremos al desarrollo de aplicaciones de Silverlight con Visual Studio 2010 Beta 1.

Hola Visual Studio 2010

Uno de los primeros cambios evidentes que podemos encontrar en Visual Studio 2010 es que la lista de plantillas de proyectos ahora está un poco más organizada, nos ofrece la capacidad de filtrar plantillas según la versión del .NET Framework al que deseamos apuntar, un cuadro de texto para buscar a través de una cadena en las plantillas, además de permitir ordenamiento por nombre de manera ascendente o descendente:

Caja de diálogo de Nuevo Proyecto en Visual Studio 2010

Crearemos una nueva aplicación llamada SL2010 usando la plantilla de Silverlight Application.  Otro cambio presente en esta nueva versión será en la caja de diálogo “Add Silverlight Application” (Agregar Aplicación de Silverlight), ya que nos permitirá elegir la versión de Silverlight a la que deseamos apuntar! 

Caja de diálogo Add Silverlight Application en Visual Studio 2010

Una mejora que sin duda es una de las más solicitadas desde hace tiempo es la capacidad de utilizar Visual Studio con múltiples monitores, esto ya es posible si simplemente desacoplan alguna ventana y la pasan al monitor que deseen.  En la siguiente foto se muestra en la parte izquierda el IDE de Visual Studio 2010 y en el monitor de la izquierda el editor de código fuente de Page.xaml.cs de la solución que acabamos de crear en los pasos anteriores:

Lee el artículo completo aquí

Descarga la serie de WebCasts de Silverlight 2 y 3

Ya están disponibles para descarga la Serie de WebCasts de Silverlight 2 y 3 que tuve la oportunidad de presentar hace algunos días.  Si no estuviste presente o si quieres revivir esos momentos en los que se me fue el LiveMeeting :D puedes descargar los videos y verlos en la comodidad de tu hogar/oficina.

Las ligas para descarga son las siguientes:

· Introducción y Arquitectura

· Enlace a Datos y Comunicación con Servidores (Servicios)

· Enlace entre Elementos, Ejecución Fuera del Navegador, Comunicación Local y Soporte a 3D

Salu2!

Silverlight: Descarga de Ensamblados bajo demanda

Introducción

Una de las preguntas que más frecuentemente me preguntan en proyectos o entrenamientos de Silverlight es la posibilidad de descargar ensamblados (assemblies) .DLL bajo demanda, es decir que no sean parte del archivo .XAP sin perder la experiencia en el uso de tipos en Visual Studio .NET (Intellisense principalmente).  Menciono esto porque Silverlight soporta Reflection: la serie de clases que nos permiten inspeccionar e invocar tipos de manera dinámica.  El problema con esta opción es que perdemos precisamente la capacidad de early-binding, Intellisense, etc.  En este artículo veremos cómo podemos desacoplar ensamblados externos y descargarlos/cargarlos bajo demanda (sin usar Reflection).

La Solución

Crearemos una nueva solución de Silverlight utilizando la plantilla para Visual Studio .NET 2008.  A la solución le llamaremos DemoDescargaAssembly.  Además agregaremos un nuevo proyecto llamado DemoAssembly de tipo Silverlight Class Library (Biblioteca de Clases de Silverlight) en esta solución.  Al agregar una referencia a DemoAssembly en la aplicación de Silverlight y después compilar tendremos como resultado un archivo llamado DemoDescargaAssembly.xap.  El comportamiento por default de Visual Studio .NET es que el .dll lo agregará dentro del archivo .xap tal y como lo muestra la siguiente figura:

Archivo XAP con DLL incluido

Esto se debe a que automáticamente al agregar la referencia a un .dll en nuestro proyecto de Silverlight, la propiedad Copy Local estará en true.  No obstante si cambiamos el valor a false el comportamiento cambiará ya que el ensamblado no será empaquetado en el archivo .xap, pero nuestra experiencia en el desarrollo sigue sin modificaciones ya que podemos seguir haciendo uso de los miembros del ensamblado gracias a la referencia existente.

Lee el artículo completo aquí

La Liga Silverlight: Miembro INETA Latam

Esta es una excelente noticia para todos los que conformamos la comunidad La Liga Silverlight.  Nuestra comunidad ha sido aprobada como miembro de INETA, lo cual significa que tendremos algunos beneficios por pertenecer a esta importante organización tales como el recibir mensajes periódicos de INETA con información y contenido, la publicación de nuestras actividades en el sitio,etc.

Agradezco al equipo de INETA Latam por esta noticia y espero que La Liga Silverlight pueda trabajar en conjunto para poder realizar eventos de alta calidad y con contenidos de gran utilidad para los desarrolladores que estén interesados en Silverlight y tecnologías relacionadas.

Segundo Simposio Latinoamericano de SharePoint: Epílogo

El pasado día 23 de abril se llevó a cabo el Segundo Simposio Latinoamericano de SharePoint en donde tuvimos el honor de convivir con más de 200 personas relacionadas e interesadas con esta plataforma.  El evento de llevó a cabo en el Hotel Fiesta Americana Reforma de la Ciudad de México.  Tengo la dicha de haber trabajado en conjunto con excelentes oradores y personas como Luyo, Mauricio, Misa, Haarón (El Pastor), Héctor, Joel, Vlad, Rubén, etc.

El resumen completo del evento lo pueden leer aquí.

Este evento fue el resultado del esfuerzo de todos y cada uno de sus participantes, patrocinadores y oradores; y no me cabe la menor duda que más adelante podramos volver a realizar un evento de esta índole mucho mejor y más grande.

Saludos y felicidades a todos(as).

Silverlight Tour Workshop – Querétaro

Silverlight Tour Querétaro

Poster Silverlight Tour en Querétaro

El curso Silverlight Tour Workshop en Español pisará la ciudad de Querétaro, Qro., México del 25 al 27 de Mayo.  Si quieren aprender a desarrollar aplicaciones con esta maravillosa tecnología esta es su mejor opción ya que son 24 horas realmente intensas de Silverlight y cafeína :)

El Silverlight Tour Workshop es un curso de tres días de alta profundidad técnica acerca de Silverlight 2 y 3. El curso se imparte en varios idiomas en diferentes países en todo el Mundo.

El registro sigue abierto así que regístrense ya y aparten su lugar!

Moonlight 2.0 Preview Liberado

Excelente noticia para el mundo de Silverlight: De acuerdo con Miguel De Icaza, el día de hoy ha sido liberado Moonlight 2.0 Preview, el cual incorpora la experiencia de Silverlight 2 en los sistemas operativos de Linux.  Tomen en cuenta que solamente es una vista previa de la versión oficial que será lanzada posteriormente, además de que mide 9.1MB (le han dejado los símbolos de depuración pero posteriormente serán removidos) pero lo interesante es que además incorporan en Moonlight 2.0 algunas características presentes en Silverlight 3 como el soporte a aplicaciones Fuera del Navegador y la clase SaveFileDialog.

Silverlight 2 (y parte de Silverlight 3) ahora disponible en Linux!

Salu2

Silverlight Tour Workshop – Guadalajara

El Curso que Ha Dado La Vuelta Al Mundo Regresa a Guadalajara

La próxima semana regresa el Silverlight Tour Workshop en Español a la tapatía ciudad de Guadalajara, Jalisco, México… y actualizado a Silverlight 3 Beta 1.  Si quieres aprender a desarrollar con Silverlight 2 y 3 este es el entrenamiento para ti!

El Silverlight Tour Workshop es un curso de capacitación en español de tres días de alta profundidad técnica acerca de Silverlight 2 y 3. El curso se imparte en varios idiomas en diferentes países en todo el Mundo.

Los lugares casi se agotan así que regístrate ya!!!

Silverlight 3 Beta 1: Guía en Español

Los que son seguidores de este blog sabrán que desde el lanzamiento de Silverlight 3 Beta 1 por parte de Microsoft en el MIX09 hace un mes, he estado escribiendo artículos y ejemplos relacionados con las nuevas características que tenemos en esta última versión.  Tomando en cuenta que ya son varios artículos -y que faltan más- he creado una sección especial en mi blog dedicado únicamente a Silverlight 3 Beta 1.

La dirección es:

http://rdiazconcha.com/?page_id=186

Ahí podrán leer todos los artículos escritos hasta el momento y revisar próximamente los siguientes.

Salu2!

Silverlight 3 Beta 1: Enlace entre Elementos

Silverlight 3 Beta 1: Enlace entre Elementos

El enlace entre elementos (Element Binding), presente en WPF, es una de las nuevas características que podemos encontrar en Silverlight 3 Beta 1 y que nos brinda una mayor potencia al crear nuestras aplicaciones en esta plataforma, ya que permite hacer atado de propiedades (binding) de manera directa entre elementos, sin tener que utilizar code-behind o alguna clase intermediario que controle esta relación (similar a lo que sucede con un ViewModel en el patrón MVVM).

Leer artículo completo

Recordatorio: El curso Silverlight Tour Workshop en Español – Puebla, México!

Les recuerdo que ya estamos a escasos 7 días de iniciar el curso Silverlight Tour Workshop en Español en la ciudad de Puebla, Pue. en México.  El Silverlight Tour Workshop es un curso de Silverlight 2 y Silverlight 3, de tres días completos, intenso y de alta profundidad técnica !

Quedan muy pocos lugares así que les sugiero que se registren en el sitio del curso.

Puebla es la primer ciudad que tendrá el curso actualizado a Silverlight 3 Beta 1 anunciado en el MIX09 hace algunas semanas!

 

Nos vemos en Puebla!!!

Silverlight 3 Beta 1: Conexión Local

Silverlight 3 Beta 1: Conexión Local

Introducción

Nuevo en Silverlight 3 tenemos una nueva característica que permite comunicarnos entre diferentes aplicaciones dentro de la misma máquina.  Esta característica está bautizada como Conexión Local (Local Connection en inglés).  Si bien en Silverlight 2 tenemos la posibilidad de comunicarnos entre diferentes aplicaciones dentro de la misma página no es una tarea trivial; además tratar de hacerlo entre diferentes instancias de navegadores es prácticamente un infierno.

Esta nueva funcionalidad nos ofrece un mecanismo poderoso para poder complementar nuestros aplicativos que requieran tener comunicación entre sí, ya que implementar esta característica es bastante sencillo como lo demostraremos en este artículo.

System.Windows.Messaging

Todas las clases necesarias para la implementación de la conexión local entre aplicaciones están incluidas en el espacio de nombres System.Windows.Messaging

Clase LocalMessageSender

Esta clase permite el envío de mensajes a un receptor por medio del nombre especificado.  Además permite establecer el nombre del dominio en el que se encuentra el receptor.  Incluye el método SendAsync() el cual enviará el mensaje de manera asíncrona al receptor.  Una vez enviado el mensaje se disparará el evento SendCompleted, el cual incluye en sus argumentos la propiedad Error la cual nos indica si sucedió una excepción durante el envío del mensaje.

Clase LocalMessageReceiver

Análoga a la clase LocalMessageSender, esta clase nos permite recibir mensajes.  También aquí establecemos el nombre del receptor, que deberá concordar con el nombre establecido en el objeto de tipo LocalMessageSender.  Una vez recibido un mensaje se dispara el evento MessageReceived el cual incluye en sus argumentos la propiedad Message de tipo string, misma que contiene el mensaje enviado por la aplicación origen.

Además de esto podemos especificar los dominios válidos de los que puede recibir mensajes este objeto!

Modelo Publicador-Subscriptor

Es a través de este modelo publicador-subscriptor por el cual podemos implementar comunicación entre diferentes aplicaciones de Silverlight 3 en la misma página, o en diferentes pestañas del Navegador… incluso entre diferentes instancias de Navegadores, INCLUSO entre diferentes tipos de Navegadores (IE, FF, GC, etc.!).

Es importante mencionar además que una aplicación de Silverlight no está limitada a ser únicamente publicador o subscriptor, sino que puede ser ambos!  Esto es, podemos establecer una comunicación local bidireccional entre aplicaciones.  El único requisito es tener los objetos LocalMessageSender y LocalMessageReceiver en cada aplicación de manera correcta.

 

La Solución

La solución que crearemos estará compuesta de dos aplicaciones Silverlight.  La aplicación Origen permitirá la captura de contenido Xaml dentro de un TextBox e incluirá un botón para enviar el Xaml a la aplicación Destino.

La aplicación Destino por su parte estará escuchando nuevos mensajes que le envíe la aplicación Origen.  Cuando llegue efectivamente un mensaje, interpretará el Xaml convirtiendo todo el árbol de contenido en los elementos visuales correspondientes al código, y los dibujará dentro de un Grid llamado LayoutRoot.

Ambos proyectos de Silverlight estarán contenidos en una misma solución, la cual también incluirá una Aplicación Web para poder probar la funcionalidad.  Además ambos proyectos estarán relacionados a la misma Aplicación Web para que nos cree automáticamente las páginas de prueba.  La siguiente figura muestra la estructura de la solución:

Origen

La aplicación Origen contiene un TextBox para escribir una cadena de Xaml válida que se enviará al destino.  Además contiene un botón que hará efectivamente el envío del mensaje.  El siguiente fragmento de código muestra la implementación de la aplicación Origen:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Messaging;
 
namespace SL3ConexionLocal.Origen
{
    public partial class MainPage : UserControl
    {
        LocalMessageSender sender;
        public MainPage()
        {
            InitializeComponent();
 
            sender = new LocalMessageSender("SL3ConexionLocal");
            
            SendXamlButton.Click += (s, a) =>
            {
                sender.SendAsync(XamlTextBox.Text);
            };
            
            sender.SendCompleted += (s, a) =>
            {
                if (a.Error != null)
                {
                    MessageBox.Show(a.Error.Message);
                }
            };
            
        }
 
    }
}

Destino

La aplicación Destino recibirá el mensaje enviado por el Origen:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Messaging;
using System.Windows.Markup;
 
namespace SL3ConexionLocal.Destino
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
 
            //Receptor/Receiver
            //Podemos especificar los dominios válidos de los que podrás recibir mensajes!
            //We can specify the domains where this object can receive messages from!
 
            LocalMessageReceiver receiver = new LocalMessageReceiver("SL3ConexionLocal");
            receiver.MessageReceived += (s, a) =>
            {
                string message = a.Message;
                try
                {
                    UIElement newContent = (UIElement)XamlReader.Load(message);
 
                    LayoutRoot.Children.Clear();
                    LayoutRoot.Children.Add(newContent);
                }
                catch (Exception)
                {
                    MessageBox.Show("No es un Xaml válido");
                }
                
            };
            receiver.Listen();
        }
    }
}

Noten cómo se establece el nombre del receptor como “SL3ConexionLocal”.  Posteriormente se comienza a escuchar por mensajes usando el método Listen() y cuando uno es recibido efectivamente se interpreta a un objeto de tipo UIElement a través del método XamlReader.Load().

Al ejecutar la aplicación Origen en un Navegador y la aplicación Destino en otro (usando las páginas de prueba creadas automáticamente para cada aplicación) podemos comprobar esta funcionalidad:

El siguiente ScreenCast muestra la solución construida en este artículo ejecutándose incluso usando un segundo publicador (aplicación Origen corriendo en FireFox).  También es notable el uso de tres diferentes tecnologías de Navegadores lo cual muestra la capacidad que tiene Silverlight para ejecutarse en múltiples ambientes.

Silverlight 3 - Conexión Local

Resumen

La Conexión Local incorporada en Silverlight 3 permite comunicarnos de una aplicación a otra a través de un mecanismo de publicación-subscripción.  Esta interesante y poderosa funcionalidad abre nuevos paradigmas en el desarrollo de aplicaciones RIA, ya que su modelo de programación es bastante sencillo y sus alcances en soluciones con Silverlight son innumerables.

Silverlight 3 Beta 1: Conciencia de Conexión

Silverlight 3 Beta 1:  Conciencia de Conexión

El nuevo espacio de nombres System.Net.NetworkInformation de Silverlight, incorporado en Silverlight 3 Beta 1 nos permite implementar una funcionalidad de “conciencia” de conexión en nuestras aplicaciones, esto es, saber en un momento dado si la aplicación está ejecutándose en un ambiente conectado o ha perdido la conexión; para poder determinar un comportamiento correcto en cada uno de esos escenarios.  Esta funcionalidad nos sirve tanto para aplicaciones que se estén ejecutando dentro del Navegador como en aplicaciones Fuera del Navegador, es por eso que dejé este tema como un artículo por separado (ver el artículo Silverlight 3 Beta 1:  Fuera del Navegador para más información al respecto de este tipo de aplicativos).

Clase NetworkInterface

Esta clase abstracta incluye el método estático GetIsNetworkAvailable(), el cual nos indica si hay una conexión de red o no.

Es muy importate mencionar que este método NO indica si hay una conexión a Internet, es decir, no está directamente relacionado una conexión de red disponible a una conexión en Internet efectivamente.  Una manera para conocer si tenemos una conexión a Internet es hacer ping a un sitio conocido y con alta disponibilidad (ejemplo: www.microsoft.com, o www.yahoo.com) y/o utilizar las clase WebClient para descargar un archivo conocido en nuestro servidor donde esté hospedada la aplicación, por ejemplo: un archivo de texto pequeño que podamos descargar y leer para determinar si efectivamente tuvimos acceso a través de Internet.

El siguiente fragmento de código muestra cómo podemos utilizar NetworkInterface.GetIsNetworkAvailable() para determinar si tenemos una conexión de red:

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
 
        btn.Click += (s, a) =>
        {
            txt.Text = NetworkInterface.GetIsNetworkAvailable().ToString();
        };
    }
}

Clase NetworkChange

Un paso más adelante en esta funcionalidad está la clase NetworkChange la cual incluye el evento NetworkAddressChanged

Lee todo el artículo completo en mi blog

Silverlight 3 Beta 1: Aplicaciones Fuera del Navegador

Silverlight 3 Beta 1:  Aplicaciones Fuera del Navegador

Introducción

Una de las características nuevas incluidas en la última versión de Silverlight: Silverlight 3 Beta 1 es el soporte a que nuestras aplicaciones puedan ejecturse fuera del navegador (OOB por sus siglas en inglés Out Of Browser), esto es, que no tengas que navegar a página equis de sitio ye para poder correr dicha aplicación.  Más que un simple código que debemos agregar a nuestra aplicación, esta característica tiene muchos detalles que vale la pena explicar paso a paso.  El objetivo de este artículo es precisamente eso.

Elemento Deployment.ApplicationIdentity

Para que nuestra aplicación pueda ser ejecutada fuera del navegador necesitamos habilitar esta opción modificando el manifiesto (implementado en el archivo AssemblyManifest.xml) de nuestro proyecto de Silverlight 3 agregando el elemento ApplicationIdentity.  Con este elemento podemos establecer diversas propiedades para nuestra aplicación como el nombre, el título de la ventana, la descripción y los iconos a mostrar cuando esté la aplicación como acceso directo en el escritorio, en la barra de tareas, etc.

Cabe mencionar que las plantillas de Silverlight 3 Beta 1 para Visual Studio .NET 2008 ya incluyen el elemento ApplicationIdentity encerrado en un bloque de comentario, para simplemente “descomentarlo” y habilitar la opción de una manera sencilla.  Por el otro lado, si estás convirtiendo un proyecto de Silverlight 2 a Silverlight 3 Beta 1 –como es el caso de este artículo-, el Asistente de Conversión NO agregará de manera automática el elemento ApplicationIdentity y lo tendrás que agregar manualmente.  A esto debemos añadir que no hay actualmente soporte de Intellisense para este elemento cuando lo estamos editando en Visual Studio.

Ahora para que este artículo esté basado en una aplicación real voy a utilizar el ejemplo del Silverlight Fred (sencillo juego de memoria que asemeja al Fabuloso Fred: famoso juguete en la década de los 80) publicado hace algunos días y le agregaremos la característica de ejecutar Fuera del Navegador.

Iconos

El elemento Deployment.ApplicationIdentity soporta el subelemento ApplicationIdentity.Icons en el cual podemos establecer los iconos que nuestras aplicación requiera.  Podemos establecer cuatro tamaños para los iconos:

  • 128x128
  • 48x48
  • 32x16
  • 16x16

El tamaño de 128x128 es utilizado por la caja de diálogo cuando estemos “instalando” la aplicación Fuera del Navegador, el resto son utilizados por el Sistema Operativo para el acceso directo del escritorio (en Windows), el icono para la ventana de la aplicación, el taskbar, etc.)

Lee todo el artículo completo en mi blog

Recordatorio: WebCast de La Liga Silverlight el miércoles 15 de Abril

Les recuerdo que el próximo 15 de Abril a las 7:00pm (-06:00 GMT) tendremos la Primer Reunión Virtual de La Liga Silverlight, en donde @jluisestrada y un servidor estaremos hablando de la comunidad, de Silverlight y de cómo construir Gadgets para Windows Vista con Silverlight 2

  +

Agenda

7:00pm – 7:15pm : Introducción a La Liga Silverlight e Introducción a Silverlight

Expositor: Rodrigo Díaz Concha

7:15pm – 7:50pm : Desarrollo de Gadgets para Windows Vista con Silverlight 2

Expositor:  José Luis Estrada

7:50pm – 8:00pm : Sesión de Preguntas y Respuestas. Invitaciones y Anuncios

Expositores:  José Luis Estrada y Rodrigo Díaz Concha

Registro

http://msevents.microsoft.com/CUI/EventDetail
.aspx?EventID=1032413178
&Culture=es-MX

 

Los esperamos!!!

Cómo agregar contenido Silverlight en tu blog de WordPress

Si bien este artículo está totalmente basado en el hecho de que mi blog está implementado en WordPress, de fondo son los mismos conceptos si es que utilizas cualquier otro motor de blogging.

WordPress cuenta con una vasta galería de Widgets que podemos utilizar en nuestro sitio para extender su funcionalidad.  Uno de estos Widgets, que ya viene incluído de manera predeterminada es el Text/HTML.  Este componente te brinda la oportunidad de implementar cualquier tipo de código HTML arbitrario incluso Javascript.

Por el otro lado, hay diferentes maneras de instanciar el plugin de Silverlight en una página Web, una de ellas es utilizar el elemento <object> de HTML indicando los parámetros correctos para su inicialización.  Además, una de las características que tiene Silverlight es que podemos tener nuestro archivo .XAP en un dominio diferente a la página que donde lo vamos a instanciar; por lo tanto el único requisito es que tu archivo .XAP esté accesible.

 

Así que:

  1. Sube tu archivo .XAP
  2. Agrega el Widget de Text/HTML en tu página
  3. Instancia el plugin de Silverlight usando el elemento <object> indicando como fuente el archivo .XAP
  4. Si tu aplicación hace uso del Puente HTML de Silverlight, habilítalo por medio del parámetro enablehtmlaccess y establécelo en “true”

El siguiente código es el que estoy utilizando para instanciar el Widget del Silverlight Tour Workshop en Español, noten cómo el archivo .xap vive efectivamente en el dominio silverlight-tour.com.mx y no en rdiazconcha.com.  También vale la pena notar que se está habilitando el Puente HTML y además se está estableciendo un parámetro necesario para la aplicación con initparams.

<div id="silverlightControlHost" style="width:100%; height:400px;">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="http://silverlight-tour.com.mx/ClientBin/DevMasters.SilverlightTour.xap"/>
    <param name="onerror" value="onSilverlightError" />
    <param name="minRuntimeVersion" value="2.0.31005.0" />
    <param name="autoUpgrade" value="true" />
    <param name="initParams" value="widget=true" />
    <param name="enablehtmlaccess" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
</div>

También recuerda que tienes la opción de modificar la imagen que les aparece a los usuarios que no tienen instalado Silverlight simplemente cambiando el atributo src del <img> en el código de arriba.

Ahora bien, también puedes instanciar el plugin de Silverlight utilizando la función createObjectEx() del archivo Silverlight.js incluído en la plantilla de Visual Studio, pero tendrías que subir el archivo .js a tu servidor, referenciar el script, y utilizar la función.  <object> parece ser mejor opción si lo único que necesitas es ejecutar una aplicación en tu página.

Sea una opción u otra, instanciar una aplicación de Silverlight en tu sitio es una tarea muy sencilla. 

 

Salu2!

Microsoft Translator Widget

En el MIX09 nos fue regalado un código de invitación para probar de primera mano el Widget para páginas Web de Microsoft Translator.  Este componente brinda el servicio de traducción de Microsoft Translator en tu sitio / página Web sin  necesidad de instalar algo extra en tu servidor.  Simplemente agregas el script necesario para que su invocación en alguna parte de tu sitio (en mi blog, que está implementado en WordPress podrán checar que está implementado usando un widget de Texto/HTML que el mismo WordPress ofrece). 

Es una gran oportunidad para que tus amigos y lectores que no tengan la misma lengua materna que tú puedan leerte, claro está, la traducción no es perfecta pero resulta bastante entendible.

Si están interesados en obtener un código de invitación, simplemente solicítenlo en la página de Microsoft Translator.

Salu2!

Fabuloso Fred en Silverlight : Silverlight Fred

Si fueron niños en la década de los ochenta como yo, podrán recordar que en aquel entonces en México un muy codiciado juguete era el Fabuloso Fred, el cual tenía varios juegos en uno siendo el juego de la memoria su principal característica (tenía otras funciones como piano y otras más que ignoro ya que nunca lo tuve :()  Ayer en la noche decidí hacer una implementación básica de este juguete usando Silverlight 2.

El código fuente está disponible para que lo descarguen y modifiquen a su gusto.  Algunas de las áreas de oportunidad que tiene son:

    • Diferentes sonidos para cada botón
    • Incremento de velocidad según vayas pasando de nivel
    • Fuera del Navegador (portándolo a Silverlight 3)

 

El código fuente lo pueden descargar aquí y el demo en vivo lo pueden ver en la sección “Ejemplos” de La Liga Silverlight.

Salu2!

Plantillas de Visual Studio .NET 2008 para Silverlight 3 y Silverlight 2

Una de las *desventajas* que tiene hoy el desarrollar aplicaciones para Silverlight 3 Beta, es que no soporta una instalación de lado a lado con las plantillas de Visual Studio .NET 2008 de Silverlight 2, es decir, o tenemos las plantillas de Silverlight 3 o tenemos las plantillas de Silverlight 2: pero no al mismo tiempo.  Esto será resuelto en Visual Studio .NET 2010 ya que permitirá efectivamente seleccionar la versión de Silverlight a la que queremos apuntar.

No obstante hay una manera rápida de pasarnos de una versión a otra, y es ejecutar un archivo de procesamiento por lotes incluido en un archivo .zip que podemos descargar de aquí.  Básicamente lo que hace el archivo es crearnos un par de archivos .bat (VS_2-TO-3.BAT y VS_3-TO-2.BAT) que podremos ejecutar posteriormente cuando necesitemos tener activa una versión de Silverlight en específico. Estos archivos .bat no hacen más que desinstalar la versión actual e instalar la otra; por lo tanto necesitamos tener los siguientes archivos en un mismo fólder en nuestra máquina:

Al ejecutar Setup_SLTools_Util.bat se crearán los archivos .bat necesarios para pasarnos de una versión a otra (tanto para Visual Studio como para Visual Web Developer):

Figura 1: Fólder con todos los archivos necesarios

Tomen en cuenta que deberán ejecutar los archivos .bat con permisos elevados para que no tengan ningún problema.  Además no deberá estar ejecutándose Visual Studio / VWD en el momento que ejecuten los .bat

Otra cosa importante mencionar es que el cambio de una versión a otra no es silenciosa, es decir, aparecerán las cajas de diálogo para la instalación y tendrán que aceptar la licencia, etc.

Figura 2: Herramientas de Silverlight 2 habilitadas en Visual Studio

Figura 3: Herramientas de Silverlight 3 habilitadas en Visual Studio

Supongo que un futuro no muy lejano tendremos mejores opciones que esta, pero por el momento funciona y es un camino rápido para cuando necesitemos desarrollar aplicaciones de Silverlight 3 sin perder la opción de desarrollar para la versión 2.

Salu2!

Silverlight Spy

Silverlight Spy es una herramienta que no debe faltar en nuestros equipos de desarrollo cuando construímos aplicaciones con Silverlight.  La herramienta nos permite inspeccionar el contenido de una aplicación en su totalidad, desde la IU, el XAML que lo constituye y también el código fuente de la aplicación (siempre y cuando registremos Reflector en la herramienta).

Para que puedan apreciar más su funcionalidad chequen este video que fue grabado durante el MIX09:

Get Microsoft Silverlight

Segundo Simposio Latinoamericano de SharePoint

El Simposio

Tengo el honor de invitarles a todos ustedes al 2do Simposio Latinoamericano de SharePoint, que se llevará a cabo el día 23 de Abril del 2009 de 9:00 a 19:00 hrs. en el Auditorio Telmex  Hotel Fiesta Americana Reforma (Av. Paseo de la Reforma No.80) de la Ciudad de México.  Este es un evento realizado por la Comunidad de SharePoint México en conjunto con Microsoft México y demás banda ruidosa! :)

La cuota de recuperación es de 250.00 pesos M.N. (Fe de erratas:  El día de ayer en Byte Me con el mismísimo FerGlo mencioné que la entrada era libre.  Mil disculpas por esta omisión :P)

(Haz clic para ver el poster más grande)

 

Los Expositores

Haaron Gonzalez, Luis Du Solier, Misael Monterroca, Rodrigo Díaz Concha, Mauricio Angulo, Hector Insua, Ruben Colomo

 

Por mi parte estaré compartiendo escenario con Mauricio en el tema:

 

“Experiencia de Usuario en sitios de SharePoint 2007:  Conozca cómo puede mejorar la experiencia del usuario con Silverlight” a las 11:20 a.m.

(sí niños y niñas…. Silverlight sobre SharePoint!, leyendo los datos de las listas de SharePoint para mostrarlos de una manera menos fea más agradable!) ;)

Además… estaré obsequiando / rifando tres Vales de Descuento de 50% para asistir al Silverlight Tour Workshop en alguna de las ciudades destino durante el 2009 !!!!!!!!! :D

 

El Registro

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032413075&Culture=es-MX

Es muy importante que se registren al evento en la página y lleven su registro impreso el día del evento para ingresar al mismo, ya que les servirá para entrar en la rifa de los premios, tenemos 2 teléfonos con Windows Mobile y una licencia profesional de Kaldeera Workflow 2009.

Además el cupo es limitado a 250 personas… así que regístrate ya!

 

La Cuota

La cuota de recuperación es de: $250 pesos M.N.

(La cuota se pagará ahí mismo)

 

Las Ligas y Más Información

Únete a la comunidad en: http://mssharepoint.multiply.com/

Síguenos en Facebook: http://www.facebook.com/group.php?gid=56850858767

 

Los esperamos!!!

 

[UPDATE 08 de abril 2009]

El Simposio será en el Hotel Fiesta Americana Reforma

Av. Paseo de la Reforma No. 80

Si van por transporte público vayan al Metro Hidalgo o al Metro Auditorio y tomen el autobús

La Liga Silverlight – Desarrollo de Gadgets para Windows Vista con Silverlight 2 (Web Cast)

Les invito cordialmente a que asistan a la 1er Reunión Virtual de La Liga Silverlight la cual se llevará a cabo el próximo miércoles 15 de abril a las 7:00pm (GMT –06:00) a través de un Web Cast que será impartido por un servidor y por mi buen amigo y colega José Luis Estrada (o el “Jocho” para los cuates ;)). 

Esta será la primer reunión que tendremos de esta índole en los próximos meses y que dará inicio a los eventos virtuales que La Liga Silverlight persigue desde su fundación.

No está por demás decirles que la entrada es totalmente libre :)

Agenda

7:00pm – 7:15pm : Introducción a La Liga Silverlight e Introducción a Silverlight

Expositor: Rodrigo Díaz Concha

7:15pm – 7:50pm : Desarrollo de Gadgets para Windows Vista con Silverlight 2

Expositor:  José Luis Estrada

7:50pm – 8:00pm : Sesión de Preguntas y Respuestas. Invitaciones y Anuncios

Expositores:  José Luis Estrada y Rodrigo Díaz Concha

Registro

http://msevents.microsoft.com/CUI/EventDetail
.aspx?EventID=1032413178
&Culture=es-MX

Descarga los Web Casts de Windows Azure

Ya están disponible para descarga la serie de Web Casts acerca de Windows Azure que realicé en conjunto con Microsoft México los días pasados.  Hubo cambios de último momento en la agenda ya que se realizaron 2 Web Casts con 3 temas cada uno (en vez de 3 con 2 temas).

Aquí les dejo las ligas para que puedan descargar los videos:

Espero que les sean de utilidad!

Posted: Mar 29 2009, 12:07 PM by rodrigo | with no comments
Filed under:
Evento de La Liga Silverlight y la Comunidad Puebla .NET

Sé de las primeras personas en conocer Silverlight 3…

Tengo el gusto de invitarles a una reunión que tendremos La Liga Silverlight y la Comunidad Puebla .NET en la ciudad de Puebla, Pue. el próximo 30 de abril.

Agradezco la invitación de mi buen amigo Miguel Muñoz, líder de la comunidad Puebla.NET y MVP para la realización de este evento en donde los asistentes podrán apreciar cómo Silverlight es una magnífica opción para la construcción de aplicaciones RIA y además podrán conocer algunas de las nuevas características y funcionalidades de la nueva versión de esta tecnología:  Silverlight 3!

Estás interesado en conocer qué es Silverlight y saber qué tiene para ti y tu empresa esta tecnología?  Estás en la ciudad de Puebla o sus alrededores?  Si respondieron “Sí” a las anteriores preguntas este evento es simplemente para ti !

La entrada es totalmente gratuita.

Fecha y horario

30 de abril de 10:00 a 13:00 hrs.

Dirección

Auditorio de la Universidad Madero
Camino Real a Cholula 4212
Col. Exhacienda La Concepción Buenavista
Puebla, Pue.
CP. 72150.
http://www.umad.edu.mx/ubicacion.html

Agenda

10:00 – 12:45 Silverlight 3 como plataforma de desarrollo – Expositor:  Rodrigo Díaz Concha

12:45 – 13:00 Rifa de regalos

Y hablando de regalos precisamente, regalaremos algunas playeras oficiales de La Liga Silverlight:

Los esperamos!!!!

Rock Band @ MIX09

Además de estar al pendiente del mundo de tecnologías Web y sobre todo de Silverlight 3, me di el tiempo a enrolarme en el concurso de Rock Band del Mix 2009.  Hubo contrincantes bastante buenos y fue una experiencia muy divertida.

Aunque quedamos en 3er. lugar valió la pena haber compartido el escenario con mis camaradas de Penny 4 Your Thoughts!  See you next year Rock’n’Roll mates!  We ROCK!

Posted: Mar 23 2009, 12:34 PM by rodrigo | with no comments
Filed under:
Novedades en Silverlight 3

Novedades en Silverlight 3

 

No obstante a que el Mix09 estuvo lleno de grandes anuncios y noticias por parte de Microsoft al mundo de tecnologías Web, fue de particular interés el conocer de antemano las grandes características que la nueva versión de Silverlight 3 tendrá. 

A continuación enlisto las características que a mi parecer son las más relevantes.  Cabe mencionar que no es la lista completa de nuevas características y funcionalidades, solo aquellas que más destacan:

 

Para leer el artículo completo haz clic aquí

Silverlight 3 se acerca

Solo si han vivido debajo de una piedra no sabrán que el día miércoles arranca la edición 2009 de la conferencia MIX de Microsoft.  El evento MIX es el evento magistral de tecnologías Web y cuna de las diferentes versiones de Silverlight.  Es bien sabido que esta edición del evento girará alrededor de Silverlight 3: la nueva versión de esta fabulosa plataforma de desarrollo con la cual podemos desarrollar experiencias en línea, además de ser multi-plataforma y multi-navegador.  El día de mañana estaré viajando a la ciudad de Las Vegas en el estado de Nevada, USA para participar como asistente en este importantísimo evento.  Como siempre, las noticias y anuncios relevantes serán posteados en este lugar por un servidor.

Señoras y Señores: Silverlight 3 se acerca!

Serie de WebCasts: Windows Azure para Desarrolladores

Les invito cordialmente a una serie de Web Casts que impartiremos Omar Avilés y un servidor los próximos días 25 al 27 de marzo 2009 acerca de Windows Azure.  Estos Web Casts están enfocados a desarrolladores profesionales y entusiastas que deseen conocer por qué Windows Azure es una excelente plataforma de desarrollo y opción para realizar aplicativos modernos que hagan uso del poder del Cómputo en la Nube.

Agenda

Día 1: 25 de Marzo (17:00 a 19:00 hrs. (GMT-06:00))
      Introduction to Windows Azure           
      SQL Services Overview           

Día 2: 26 de Marzo (17:00 a 19:00 hrs. (GMT-06:00))
      Introduction to Live Services           
      Introduction to .NET Services           

Día 3: 27 de Marzo (17:00 a 19:00 hrs. (GMT-06:00))
      Windows Azure Storage Services           
      Building Mesh-enabled Web Applications

 

El registro ya está abierto y lo pueden realizar en esta dirección.

 

Los esperamos!

2da Reunión Presencial de La Liga Silverlight: 16 de Marzo 2009

Se les invita cordialmente a todos/as a asistir a la segunda reunión presencial de la comunidad La Liga Silverlight que se llevará a cabo el próximo 16 de marzo 2009 a las 18:00 hrs. en la sala 2 del Centro del Software.

La entrada es totalmente gratuita.  El registro se puede llevar a cabo en el momento.

 

Lugar y Hora

16 de Marzo 2009 18:00 hrs.

Centro del Software (Sala 2) – Guadalajara, Jalisco, México

Agenda

18:00 – 18:30  Registro

18:30 – 20:15  Animaciones con Silverlight.  Expositor: Arturo Molina

20:15 – 20:30  Rifa de regalos y premios

Personalización condicional del DataGrid de Silverlight 2

Personalización condicional del DataGrid de Silverlight 2

Introducción

El control DataGrid de Silverlight 2 ofrece a los desarrolladores un mecanismo para presentar datos tabulares de una manera sencilla, ya que al ser un control atable a datos podemos indicar como fuente de datos cualquier objeto que implemente IList o IEnumerable.  Por este motivo y por el hecho de que automáticamente se ata a todas las propiedades del objeto se crearán las columnas correspondientes sin esfuerzo extra.

No obstante a lo anterior es un escenario común cambiar los colores de las filas de manera condicional, esto es, a partir de un valor o rango de valores de los datos cambiar sus características visuales de cada fila para resaltarlos.

En este artículo veremos cómo modificar la apariencia visual del DataGrid de manera condicional.

Desarrollo

Crearemos una nueva aplicación de Silverlight por medio de la plantilla en Visual Studio .NET 2008.  A esta aplicación le pondremos el nombre de EjemploDataGridCondicional.

Como fuente de datos para nuestra aplicación utilizaremos las clases Album y Albumes descritas en el artículo “Introducción a los Convertidores en Silverlight 2”.

Ya que el control DataGrid está implementado en un ensamblado externo (System.Windows.Controls.Data) necesitamos referenciar este ensamblado en nuestro proyecto y además importar el espacio de nombres xml asignándole un alias para poder identificar las clases incluídas en él de manera única. 

Para leer el artículo completo haz clic aquí

Introducción a los Convertidores en Silverlight 2

Introducción a los Convertidores en Silverlight 2

Introducción

Los Convertidores en el contexto de Silverlight, específicamente en el atado a datos son un mecanismo poderoso para poder cambiar un valor cuando de una fuente de datos se esté atando a un destino, pudiendo ser este destino por ejemplo un control.  El atado de datos en Silverlight funciona a partir de cuatro conceptos:  una fuente, la propiedad de la fuente de la que “leeremos” el dato, el destino y la propiedad del destino al que ataremos el dato.

Un ejemplo claro es cuando una fuente de datos incluye un campo tipo DateTime.  Debido a que el tipo de dato DateTime incluye día, mes, año, horas, minutos, segundos y milisegundos, frecuentemente necesitamos únicamente presentar la fecha y quitar la hora.  O por ejemplo cuando a partir de un campo bool deseamos mostrar las palabras ‘Sí’ o ‘No’ en vez de True y False.

Es aquí cuando los Convertidores son una solución natural, ya que nos permiten transformar (convertir) el dato inicial a otro que represente mejor lo que necesitamos mostrar.

Desarrollo

Iniciemos creando una nueva aplicación Silverlight utilizando la plantilla correspondiente en Visual Studio .NET 2008.  A nuestra solución le llamaremos EjemploConvertidores.

En esta solución tendremos como fuente de datos una lista de álbumes musicales, tal y como lo muestra el siguiente código:

using System;
using System.Collections.Generic;
 
namespace EjemploConvertidores
{
    public class Album
    {
        public string Titulo { get; set; }
 
        public string Banda { get; set; }
 
        public DateTime FechaLanzamiento { get; set; }
    }
 
    public class Albumes : List<Album>
    {
        public Albumes()
        {
            Add(new Album() { Titulo = "Broken", Banda = "Nine Inch Nails", FechaLanzamiento = DateTime.Parse("1992-09-22") });
            Add(new Album() { Titulo = "The Fragile", Banda = "Nine Inch Nails", FechaLanzamiento = DateTime.Parse("1999-09-21") });
            Add(new Album() { Titulo = "Broken", Banda = "Nine Inch Nails", FechaLanzamiento = DateTime.Parse("1994-03-08") });
            Add(new Album() { Titulo = "OK Computer", Banda = "Radiohead", FechaLanzamiento = DateTime.Parse("1997-06-16") });
            Add(new Album() { Titulo = "The Bends", Banda = "Radiohead", FechaLanzamiento = DateTime.Parse("1995-03-13") });
            Add(new Album() { Titulo = "In Rainbows", Banda = "Radiohead", FechaLanzamiento = DateTime.Parse("2007-10-10") });
            Add(new Album() { Titulo = "Black Celebration", Banda = "Depeche Mode", FechaLanzamiento = DateTime.Parse("1986-03-17") });
            Add(new Album() { Titulo = "Ultra", Banda = "Depeche Mode", FechaLanzamiento = DateTime.Parse("1997-04-14") });
            Add(new Album() { Titulo = "Music For The Masses", Banda = "Depeche Mode", FechaLanzamiento = DateTime.Parse("1987-09-28") });
        }
    }
}

Claro está, nuestra fuente de datos puede provenir de un Servicio Web, un Servicio REST, un archivo XML,etc.  Por efectos de simplicidad he modelado directamente en la aplicación las clases Album y Albumes.  Albumes es de tipo List<Album>.  La clase List<T> implementa las interfaces IList y IEnumerable por lo tanto podremos usar Albumes como fuente de datos.

Para leer el artículo completo haz click aquí

Pasar parámetros a una aplicación Silverlight desde ASP.NET

Pasar parámetros a una aplicación Silverlight desde ASP.NET

Introducción

Un requerimiento muy común al desarrollar aplicaciones con Silverlight 2 es poder pasar parámetros a la aplicación Silverlight desde ASP.NET.  Esto obedece a diferentes motivos entre los cuales podemos destacar:

  • Parámetros de inicialización
  • Parámetros para un reporte
  • Parámetros para recordar el estado
  • Parámetros de configuración

Sea cual fuese tu requerimiento, esta tarea se puede lograr de una manera muy sencilla.  En este artículo veremos cómo mandar parámetros a un objeto Silverlight usando el control de ASP.NET AJAX.

El control de Silverlight de ASP.NET AJAX cuenta con la propiedad pública InitParameters la cual representa los parámetros que deseamos enviar.  Esta propiedad es de tipo string no obstante podemos mandar diferentes parámetros siempre y cuando tengan el siguiente formato:

llave=valor,llave=valor,llave=valor,…

Esto debido a que la clase StartupEventArgs es un IDictionary<string, string>.  Esta clase es

Lee el artículo completo aquí

Creando un lector de feeds RSS con Silverlight 2

Creando un lector de feeds RSS con Silverlight 2

Introducción

En este artículo veremos cómo crear un lector de feeds de RSS 2.0 usando Silverlight 2 como interfaz de usuario, para crear una aplicación que muestre las últimas actualizaciones de una fuente sindicalizada con el formato RSS 2.0.  Este tipo de formato es muy utilizado en los motores de blogging como WordPress, en las plataformas de portales como SharePoint o DotNetNuke entre otro tipo de plataformas; no obstante, no es el único formato para hacer la difusión de contenidos ya que también existe Atom: otro formato similar para la exposición de actualizaciones.

Los formatos RSS como Atom están basados en XML, cada uno con un esquema en particular que los diferencia.  La especificación de RSS (en inglés) la podrán encontrar haciendo clic aquí.

Por otro lado, a partir de la versión 3.5 del .NET Framework se incorporó el namespace System.ServiceModel.Syndication el cual contiene todas las clases necesarias para interpretar y crear este tipo de fuentes de información.

Para leer completo este artículo haz clic aquí

Recordatorio: Primer reunión presencial de La Liga Silverlight

1er Reunión presencial de la comunidad La Liga Silverlight

Ya está todo listo para que mañana tengamos la primer reunión de la comunidad La Liga Silverlight – la primer comunidad MSDN en español acerca de Silverlight y tecnologías relacionadas.

Ya que es el evento inaugural como comunidad habrá muchos regalos y sorpresas como:

  • Libros técnicos de Microsoft Press
  • Llaveros
  • Playeras de La Liga Silverlight
  • Windows Vista Ultimate (con licencia)
  • Windows 2008 (con licencia)
  • … y más!

Lugar y Hora

Centro del Software (Sala 2) – Guadalajara, Jalisco, México

Hora: A las 6:00 p.m. comienza el registro y a las 6:15 p.m. el show

Agenda

 

18:00 – 18:15  Registro

18:15 – 18:30  Bienvenida e Introducción a La Liga Silverlight

18:30 – 20:30  Tema:  Silverlight como plataforma de desarrollo

20:30 – 21:00  Rifa de regalos y sorpresas

 

Los esperamos!

Silverlight Tour Workshop – Madrid, España

Curso de Silverlight 2 en Madrid, España

Aún quedan lugares para el curso Silverlight Tour Workshop en Español para la ciudad de Madrid, España.  Este curso se llevará a cabo del 24 al 26 de febrero 2009 en el centro de la ciudad.

El Silverlight Tour Workshop es un curso de tres días completamente en Español y de alta profundidad técnica acerca de Silverlight 2. Incluye los comos y por qués de XAML, el hospedaje en el navegador, las herramientas y el uso de Silverlight 2 en el servidor.  El curso utiliza Silverlight 2 así como las últimas herramientas tecnológicas de Microsoft (incluyendo Visual Studio .NET 2008 y Expression Studio).

Si estás interesado en aprender a desarrollar en esta plataforma, y cómo Silverlight te puede ayudar a crear aplicaciones enriquecidas de Internet (RIA), esta es una excelente opción.

!Los esperamos!

Construyendo aplicaciones de última generación con Silverlight y Windows Azure: Silverlight + Live Search

Introducción

Incorporar un mecanismo de búsqueda adecuado en las aplicaciones es un escenario muy común hoy en día para construir soluciones con alta funcionalidad, usando diversos servicios especializados que estén al alcance de nuestra mano.  Live Search es un buen ejemplo de este tipo de servicios, el cual podemos utilizar efectuar búsquedas en sitios, imágenes, foros, etc.

En este artículo veremos cómo utilizar el servicio de búsqueda de Microsoft Live Search e incorporarlo en nuestras aplicaciones Silverlight.

API de Live Search

El API de Live Search está disponible hoy en día para implementar características de búsqueda en nuestras aplicaciones de cualquier tipo:  Windows, Web, Móvil, o RIA; como es el caso de este ejemplo ya que usaremos Silverlight.

Para poder usar esta API es necesario crear una cuenta, la cual te dará una llave única relacionada a tu cuenta de MSN.  Esta llave es requerida para crear la petición al servicio y obtener los resultados encontrados. 

El API de Live Search soporta 3 tipos diferentes de protocolos:

  • JSON
  • XML
  • SOAP

La decisión de utilizar uno u otro depende directamente del tipo de aplicación en donde usarás esta API.  En nuestro caso utilizaremos SOAP aunque XML o JSON son también opciones bastante viables.

La dirección para obtener una llave es para Live Search es: http://search.live.com/developers/default.aspx

Creando la solución

Crearemos una nueva aplicación Silverlight utilizando la plantilla de Visual Studio .NET 2008 llamada SLSearch.  Esta aplicación será de tipo Application.

Creando el XAML

La aplicación necesita básicamente los siguientes controles:

  • Un control para que el usuario escriba la búsqueda que desee realizar
  • Un control para iniciar esa búsqueda
  • Un control para desplegar los resultados apropiadamente

El siguiente XAML crear un TextBox, Button y ListBox acomodados en un contenedor de tipo Grid.  El resultado de la búsqueda la desplegaremos como una serie de hipervínculos.

<UserControl x:Class="SLSearch.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <!--Caja de texto para escribir el texto de búsqueda-->
            <TextBox x:Name="txtConsulta" Height="26" Width="250" HorizontalAlignment="Left" Margin="2" />
            <!--Botón para consultar-->
            <Button x:Name="btnConsulta" Height="30" Width="100" HorizontalAlignment="Right" Content="Consultar" />
        </StackPanel>
        <Border Grid.Row="1" BorderBrush="Black" BorderThickness="1">
            <StackPanel>
                <!--ListBox que desplegará los resultados-->
                <ListBox x:Name="resultados" Height="300">
                    <ListBox.Resources>
                        <Style x:Key="titulo" TargetType="TextBlock">
                            <Setter Property="FontSize" Value="20" />
                        </Style>
                        <Style x:Key="liga" TargetType="HyperlinkButton">
                            <Setter Property="FontSize" Value="18" />
                            <Setter Property="Foreground" Value="Navy" />
                        </Style>
                    </ListBox.Resources>
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <HyperlinkButton Style="{StaticResource liga}" Content="{Binding Titulo}" NavigateUri="{Binding PaginaUrl}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </Border>
       
    </Grid>
</UserControl>

Referenciando el servicio

A nuestra aplicación Web (la cual es creada automáticamente por la plantilla de Silverlight) agregaremos una referencia a http://api.search.live.net/search.wsdl?AppID=nuestroAppId  el cual es el URL del servicio Web de búsqueda de Live Search.  Como se podrá observar necesitamos pasar como parámetro el AppID el cual es la llave mencionada con anticipación en este artículo.  A esta referencia le pondremos el nombre ServicioLiveSearch tal y como lo muestra la siguiente figura:

Ahora en nuestra aplicación Web agregaremos una clase llamada Resultado la cual represente un resultado al ejecutar la búsqueda:

public class Resultado
{
    public string Titulo { get; set; }
 
    public string PaginaUrl { get; set; }
 
    public string ImagenUrl { get; set; }
 
 
}

El siguiente paso será agregar un nuevo Servicio Web de tipo ASMX (también lo podríamos hacer con un Servicio WCF) a nuestra aplícación Web.  Este servicio tendrá el método Web Buscar() el cual recibirá como parámetro la cadena que deseamos encontrar y regresará un objeto de tipo List<Resultado> como valor de retorno tal y como se muestra en el siguiente código:

[WebMethod]
public List<Resultado> Buscar(string cadena)
{
    List<Resultado> resultados = new List<Resultado>();
 
    ServicioLiveSearch.LiveSearchPortTypeClient client = new SLSearch.Web.ServicioLiveSearch.LiveSearchPortTypeClient();
    SearchRequest request = new SearchRequest()
    {
        AppId="TU APP ID",
        Sources=new SourceType[]{ SourceType.Image, SourceType.Web}, 
        Adult= AdultOption.Moderate,
        AdultSpecified=true,
        Query=cadena
    };
 
    SearchResponse response = client.Search(request);
    if (response.Errors == null)
    {
        foreach (WebResult result in response.Web.Results)
        {
            resultados.Add(new Resultado() { 
                Titulo = result.Title, 
                PaginaUrl = result.Url
            });
        }
    }
 
    return resultados;
}

En el código anterior estamos instanciando la clase proxy para comunicarnos al Servicio Web de Live Search.  Posteriormente creamos un objeto de tipo SearchRequest el cual representa la petición que deseamos efectuar en el servicio de búsqueda.  Es a este objeto al cual le pasamos todos los parámetros necesarios para realizar la búsqueda.  Posteriormente, una vez ejecutada la búsqueda obtenemos los resultados en la propiedad Web.Results (o Image.Results según sea el caso).

El API de Live Search contiene toda la información acerca de los parámetros que podemos enviar al servicio según el comportamiento deseado.  Los únicos parámetros totalmente necesarios para realizar una búsqueda con Live Search son los siguientes:

  • AppID : Nuestro AppID único que se nos otorga cuando nos registramos en la liga anteriormente descrita
  • Sources :  Esta propiedad indica el tipo de búsqueda a realizar.  Es un arreglo de objetos de tipo SourceType entre los cuales podemos destacar SourceType.Web o SourceType.Image para búsquedas normales o para búsqueda de imágenes respectivamente.
  • Query : La cadena a buscar

Asimismo podemos definir algunas otras propiedades según el comportamiento que deseemos para nuestra búsqueda.  La documentación del API de Live Search contiene toda la información necesaria al respecto.

Invocando el servicio

Finalmente, en nuestra aplicación Silverlight agregamos la referencia al Servicio Web que acabamos de crear para que Visual Studio haga por nosotros todas las clases necesarias para su invocación.

Una vez realizado esto ligamos el evento Click del botón a un manejador de eventos el cual invoque el servicio pasando como parámetro la cadena a buscar.  Si la búsqueda es exitosa ataremos los resultados al ListBox que definimos en el XAML con anterioridad.  El siguiente ejemplo hace uso de expresiones Lambda en vez de definir el cuerpo de los métodos dentro de la definición de la clase:

public Page()
        {
            InitializeComponent();
 
            btnConsulta.Click += (s, a) =>
            {
                MiServicio.LiveSearchSoapClient client = new SLSearch.MiServicio.LiveSearchSoapClient();
                client.BuscarCompleted += (sender, args) =>
                {
                    if (args.Error == null)
                    {
                        resultados.ItemsSource = args.Result;
                    }
                };
                client.BuscarAsync(txtConsulta.Text);
            };
 
        }

Resultado

Listo.  Nuestra aplicación está lista para ser utilizada.  La aplicación XAP fácilmente puede ser llevada a otra aplicación en donde necesitemos este tipo de funcionalidad.

 

Para hacer uso de los resultados de búsqueda de imágenes necesitamos un ligero cambio en nuestro XAML en el DataTemplate del ListBox para atar el Url de la imagen encontrada a un elemento de tipo Image:

<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding ImagenUrl}" Width="100" />
        <HyperlinkButton Style="{StaticResource liga}" Content="{Binding Titulo}" NavigateUri="{Binding PaginaUrl}" />
    </StackPanel>
</DataTemplate>

Y en el Servicio Web usamos Image.Results:

SearchResponse response = client.Search(request);
if (response.Errors == null)
{
    foreach (ImageResult result in response.Image.Results)
    {
        resultados.Add(new Resultado() { 
            Titulo = result.Title, 
            PaginaUrl = result.Url,
            ImagenUrl= result.MediaUrl
        });
    }
}

Resultado:

 

Pueden descargar el código fuente de este ejemplo haciendo clic aquí o directamente en la sección “Contenido” de La Liga Silverlight.

Presentando: rdiazconcha.com

El día de hoy tengo el gusto de anunciarles el lanzamiento oficial de mi sitio rdiazconcha.com en donde podrán encontrar el mismo tipo de contenido que he llevado a lo largo de mucho tiempo en este blog tecnológico, pero sumándole otros temas que en lo personal me apasionan como: música, cultura, viajes, gastronomía y fotografía entre otras cosas.

Desde hace mucho tiempo me había planteado el objetivo de lanzar mi propio sitio y hoy es ese día :) estoy bastante contento con la implementación inicial ya que estoy utilizando un motor de blogging muy rápido, confiable y estable como lo es WordPress.  Su sinnúmero de características y plugins son realmente asombrosos, si no lo han usado los invito a que lo prueben.

En fin, sin más presentaciones los invito a que se inscriban al RSS Feed de mi sitio ya que lo utilizaré como blog raiz para “crosspostear” a todos mis demás blogs como este.

Salu2!!!

El Silverlight Tour Workshop en Español se va a Sudamérica, Caribe y España!

[Para más información del Silverlight Tour Workshop en Español haz clic aquí]

Mapa de México en XAML !!!

Acabo de terminar la primer versión del mapa de mi querido país México en versión XAML (de hecho, creo que es el primer mapa de México con sus estados en XAML :)) para todos aquellos desarrolladores y entusiastas de las tecnologías Silverlight o Windows Presentation Foundation –principalmente mexicanos- que deseen incorporarlo en sus soluciones.  Este mapa puede ser punto de inicio para nuevas y emocionantes interfaces de usuario para brindar a los usuarios de nuestras aplicaciones una mejor experiencia en su uso.  Incluso para aplicaciones didácticas novedosas que deseen mostrar información relacionada con cada estado de la República, o para aplicaciones que necesiten filtrar información para cada estado, etc.  (Atención INEGI) ;).  Crearlo me llevó algunas horas de trabajo y el uso de diversas herramientas como Expression Design, Photoshop y Expression Blend.

El mapa incluye los 32 estados de la República Mexicana, cada uno implementado en un <Canvas> con el nombre de estado para poder identificarlos apropiadamente cuando deseemos programar algún tipo de comportamiento o funcionalidad en ellos.

Visual Studio .NET 2008 mostrando el mapa de México hecho XAML

Haz clic en la imagen para ver la versión completa

Asimismo, para aquellos desarrolladores que deseen tener un código de ejemplo de cómo podemos utilizar este mapa, aquí les dejo a continuación el código necesario para identificar por medio de un color diferente el estado que esté seleccionado (que esté obteniendo el foco por medio del cursor del mouse):

namespace Rodrigo.Maps
{
    public partial class Mexico : UserControl
    {
        Brush original;
        public Mexico()
        {
            InitializeComponent();
 
            original = (Brush)this.Resources["brochaVerde"];
 
            foreach (UIElement estado in this.mexico.Children)
            {
                if (estado is Canvas)
                {
                    RegisterEvents(estado as Canvas);
                }
            }
 
            //Español: También podemos hacer esto:
            //English: We could do this as well:
            //RegisterEvents(Aguascalientes);
            //RegisterEvents(BC);
            //RegisterEvents(NuevoLeon);
            //...
        }
 
        /// <summary>
        /// Español: Registra los manejadores de eventos para el estado especificado en el parámetro
        /// English: Register the event handlers for the state specified in the parameter
        /// </summary>
        /// <param name="estado"></param>
        void RegisterEvents(Canvas estado)
        {
            estado.MouseEnter += new MouseEventHandler(this.Estado_MouseEnter);
            estado.MouseLeave += new MouseEventHandler(this.Estado_MouseLeave);
            estado.MouseLeftButtonUp += new MouseButtonEventHandler(this.Estado_MouseButtonUp);
        }
 
        /// <summary>
        /// Español: Muestra el nombre del estado en una alerta al hacer clic
        /// English: Displays the state name when clicked
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Estado_MouseButtonUp(object sender, MouseButtonEventArgs e)
        {
            HtmlPage.Window.Alert(((Canvas)sender).Name);
        }
 
        /// <summary>
        /// Español: Cambia el color del estado que está recibiendo el foco
        /// English: Changes the state color when the mouse cursor hovers
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Estado_MouseEnter(object sender, MouseEventArgs e)
        {
            ((Path)((Canvas)sender).Children[0]).Fill = new SolidColorBrush(Colors.Magenta);
        }
 
        /// <summary>
        /// Español: Regresa el color original del estado al perder el foco
        /// English: Rolls back to the original color when the mouse cursor leaves
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Estado_MouseLeave(object sender, MouseEventArgs e)
        {
            ((Path)((Canvas)sender).Children[0]).Fill = original;
        }
        
    }
}

Y claro está, no olviden modificar la propiedad RootVisual de la aplicación para ejecutar correctamente Mexico.xaml:

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new Rodrigo.Maps.Mexico();
}

El mapa de México en XAML lo pueden descargar aquí

Próximamente estaré escribiendo un artículo de cómo podemos hacer un control reutilizable para Silverlight utilizando este mapa de México hecho XAML.

Espero les sea de utilidad.

Salu2!

Posted: Nov 04 2008, 11:38 PM by rodrigo | with 10 comment(s)
Filed under:
PodWorx emisiones 4 y 5

Ya llegaron… ya están aquí:  las emisiones 4 y 5 de PodWorx: El PodCast de DevWorx en donde platicamos Misael, Miguel y yo acerca de nuestras primeras impresiones de Windows 7, Windows Azure y Visual Studio 2010 / .NET Framework 4.0.  Asimismo tuvimos una amena charla acerca de los lenguajes dinámicos y su implementación en las próximas versiones de C# y VB.

Que los disfruten!!!

 

Ligas:

PodWorx: 4ta emisión

PodWorx: 5ta emisión

Windows Azure anunciado
Hace akunos minutos Ray Ozzie acaba de anunciar Windows Azure, el cual sera la plataforma central para hospedar aplicaciones y servicios en "la nube".

Asimismo se anuncia un grupo de servicios iniciales:

  • Live Services
  • .NET Services
  • SQL Services
  • SharePoint Services
  • Dynamics CRM Services
DevWorx Squad @ PDC 2008 => PodWorx

La próxima semana estaremos transmitiendo directamente desde la segunda ciudad con más mexicanos en el mundo: Los Ángeles, California para asistir al evento más importante de desarrolladores de la plataforma Microsoft: El Professional Developers Conference o PDC.  El DevWorx Squad estará presente grabando el PodWorx Live! para llevarles a ustedes los “highlights” del evento así como chismes, entrevistas a talentosos colegas entendidos en el tema tecnológico y noticias de este mundo que nos apasiona tanto.

A final de cada día estaremos grabando el show para platicarles acerca de los puntos más interesantes de la jornada.  El PodWorx lo podrán descargar aquí.

Asimismo (si no estaban ya enterados…) ustedes podrán ver los keynotes y diversas sesiones breakthru en línea en el sitio del PDC 2008.

Windows 7? Cloud Services? Oslo? Silverlight? Windows Cloud? SharePoint? Windows Dublin? Windows Live Services? ASP.NET MVC? ASP.NET 4.0? C# 4.0? Cuál será el desenlace de Lost?

Todos estos y otros tópicos serán platicados de una manera amena y sencilla (se recomienda un buen diccionario de mexicanismos para aquellos podescuchas no-mexicanos :)).  Escúchennos la próxima semana en las nuevas emisiones de: PodWorx: El PodCast de DevWorx.

Salu2!

Posted: Oct 21 2008, 05:09 PM by rodrigo | with 1 comment(s)
Filed under: ,
Silverlight 2 Final liberado

El día de hoy 14 de octubre ha sido liberada la versión 2 final de Silverlight según me acabo de enterar los blogs de Jesee y ScottGu.  Para todos aquellos que han asistido a los diferentes Silverlight Tour Workshop les invito a que descarguen ya la última versión y comiencen a portar todo su código a esta nueva plataforma ya que hay algunos cambios (mínimos por cierto) entre la versión Beta 2 y RTW.  El documento de cambios lo pueden descargar aquí.

Así que, Silverlight es de signo Libra por haber visto la luz este día de octubre esto significa que Silverlight:

  • Tiene encanto
  • Es elegante
  • Tiene buen gusto
  • Le gusta la armonía
  • Permite trabajar en equipo
  • Es imparcial (por aquello del Cross-browser y Cross-platform:))

En fin, Silverlight:  Todo un software de signo Libra 8-)

 

Salu2!

PDC 2008 : No podría estar mejor

Además de ser el evento de desarrollo de la plataforma Microsoft más importante… además de la gran cantidad de sesiones con alta profundidad técnica… además de que los asistentes recibiremos los primeros bits de Windows 7… el día de ayer se ha anunciado que cada asistente recibirá un disco duro externo USB de 160GB con todas las sesiones y materiales del evento

PDC 2008 : No podría estar mejor

Nos vemos en el L.A.!

Evento de la Comunidad Gdl.NET: Servicios de Windows Live para Desarolladores

Como ya había comentado algunas semanas atrás y tal y como el buen Mucio lo menciona en su blog, el día de mañana la Comunidad Guadalajara .NET se viste de gala ya que tendremos una reunión especial en donde trataremos el tema de los Servicios de Windows Live y cuáles beneficios podemos encontrar en ellos para nuestras aplicaciones.  La agenda es la siguiente:

- Introducción a los Servicios Windows Live
- Windows Live ID
- Windows Live Messenger Control
- Windows Live Data
- Windows Live Spaces
- Silverlight Streaming
- Rifa de libros y sorpresas

Sin duda un evento que valdrá la pena.  Los esperamos!!!  La entrada es totalmente libre y gratuita.

No participas en la Comunidad Guadalajara .NET y deseas hacerlo?  !Inscríbete!

Silverlight Tour Workshop en Español F.A.Q.

[Para ver la versión más reciente del FAQ haz clic aquí] 

Clínica pausada

Como ya casi todos se habrán dado cuenta, la Clínica Gratuita para presentar el examen de certificación 70-536 está pausada -mas no olvidada-.  Esto debido a que los temas de la Clínica los desarrollamos por medio de nuestro tiempo libre (si es que queda alguno), por amor al arte y por medio de un espíritu de ayudar a las personas que deseen obtener el conocimiento por medio del autoestudio.

Por lo anterior quiero resumir: La Clínica NO está olvidada ni muerta ni cerrada, simplemente está pausada y la continuaremos a la brevedad.

De antemano les agredecemos a todos su comprensión, apoyo y comentarios que nos han hecho al respecto.  Es muy fructificante saber que hay personas a las que les ha ayudado esta iniciativa por parte de nosotros para presentar su examen.

 

Salu2!

Innovation Tour 08 Guadalajara, Jal. - Epílogo e invitación de la Comunidad Guadalajara .NET

El pasado día miércoles 20 de agosto a la ciudad de Guadalajara, Jalisco le tocó el turno de ser la ciudad sede del Innovation Tour 08 en donde decenas de participantes pudieron conocer la nueva estrategia tecnológica y de negocios que Microsoft ofrece a todas las empresas ISV y desarrolladores que estén interesados en ello, por medio de dos tracks: de negocio y de desarrollo; por la mañana y por la tarde respectivamente.

Por mi parte participé como conferencista en la sesión de Web 2.0 en donde tuve la oportunidad de presentar a los asistentes la plataforma Windows Live y demostrar qué tan sencillo es implementar poderosas y sofisticadas funcionalidades en nuestras aplicaciones Web y de escritorio con esta plataforma.  Primeramente la plática inició con un recorrido de las diversas etapas que ha tenido la Web a lo largo de 13 o 14 años aproximadamente hasta convertirse en lo que conocemos hoy...  el Web 2.0: una red de aplicaciones y servicios en donde la piedra angular somos nosotros: los usuarios y consumidores finales.  Platicamos cómo por medio de poderosos conceptos como Wikis, Weblogs, Social Media, Redes Sociales, RSS, etc. la red de redes se ha convertido en una pieza clave para llevar a cabo nuestro día con día, en nuestros trabajos, escuelas y hogares.  Para todos aquellos asistentes y no asistentes que deseen conseguir el contenido expuesto, este estará disponible en el sitio oficial del Innovation Tour 08 en las próximas semanas.

Asimismo, y como lo anuncié en la conferencia del tour:  tendremos un evento especial de la Comunidad Guadalajara .NET el próximo día 11 de septiembre a las 18:00 horas en la Sala 2 del Centro del Software para profundizar más en el tema de la plataforma Windows Live y de los Windows Live Services

Por favor no falten, la entrada es totalmente libre y sin duda alguna será muy edificante para todos los que estén interesados en aprender acerca de esta excelente gamma de productos y servicios.  Estaremos exponiendo temas como:

 

Los esperamos!

Una gadgetita?

No soy muy partidario de estar blogueando acerca de gadgets, pero definitivamente no podía dejar pasar la oportunidad de postear acerca de este nuevo juguete el cual me parece una maravilla ya que con su peso de 999grs. y su tamaño de un cuaderno de forma francesa el Asus Eee 900 es una micro laptop que puede servir para cubrir todas las necesidades cuando uno anda de viaje, y es que el motivo principal de su adquisición fue ese precisamente: el no cargar mi laptop desktop replacement de 17", con su cargador que pesa como 1Kg, con la mochilota, los cables, cuadernos, etc.etc. cuando ando viajando.  

En esta monada puedo tener toda la funcionalidad que necesito: navegador, procesador de textos, hoja de cálculo, mensajero, cliente de mail, newsgroups, lector de feeds RSS, lector de archivos PDF, reproductor de medios, grabador de audio, Skype y un largo etcétera ya que cuenta con 20GB de Solid State Drive y 1GB de RAM expandible a 2GB.  Ya que no encontré la versión con Windows XP, opté por la versión con Linux lo cual me parece bien para probar MonoDevelop, pero el único problema que le veo es que no puedo usar sitios con Silverlight :(, tal vez sea hora de echarle un vistazo a MoonLight.  Pero al fin de cuentas si necesitase trabajar cuando ando de viaje me llevaré la otra que tiene instalado el dúo dinámico: Vista & VS.NET 2008 ;).

Ya me estaré pareciendo a aquellos presentadores de Microsoft que llegan con su MacBook o traen su Iphone, o a los de Google que llegan con su laptop con Windows y usan Windows Live Messenger?

Posted: Aug 22 2008, 01:27 PM by rodrigo | with no comments
Filed under: , ,
Silverlight Tour Workshop en Español
     

  

Es para mí un verdadero honor el anunciar oficialmente que DevWorx en asociación con Wildermuth Consulting Services será la encargada de impartir el Silverlight Tour Workshop totalmente en Español en toda Latinoamérica y España.

El Silverlight Tour Workshop en Español es un curso intensivo de tres días y de alta profundidad técnica acerca de la tecnología Silverlight.

Personalmente me da mucho gusto trabajar con personas de la categoría de Shawn Wildermuth para la difusión y entrenamiento de nuevas tecnologías, como lo es esta plataforma y lo mejor de todo: en nuestro idioma.

 

English? Français? Español?  Revisa la agenda de próximos cursos aquí

Quieres ver el temario de este curso?  Haz click aquí

Las cursos iniciales serán en la Ciudad de México, Guadalajara y Monterrey en este país.  Registrate ya!  Más fechas próximamente.

 

 

Salu2!!!

Windows Live Translator

Gracias a un post que leí en el blog de Fernando García Loera (FerGlo para los entendidos) se ha puesto a disposición del público en general el servicio de traducción Windows Live Translator el cuál lo pueden ver implementado ya en este blog.

El único detalle que le veo es que para el Español solo hay traducción al Inglés, ojalá el equipo de Windows Live agregue más opciones para nuestro idioma.  No obstante, es muy buena alternativa para todos mis buenos amigos y conocidos alrededor del mundo que siempre me piden que postee más en inglés :).  There you are!

Salu2!

DevWorx == Microsoft Gold Certified Partner

No quería dejar pasar la oportunidad de anunciar con gran orgullo que nuestra empresa DevWorx apenas a ocho meses de haber sido fundadada, ha sido certificada como Microsoft Gold Certified Partner, acreditándonos inicialmente cuatro competencias como lo muestra nuestro flamante nuevo logotipo (más la competencia de Business Intelligence que está cocinándose).

Asimismo, quiero externar mi más sincera gratitud a todas aquellas personas que han hecho posible este logro (you know who you are ;)).

Un objetivo más cumplido.  Más por venir :D

 

Salu2!

ASP.NET MVC Framework Preview 4 liberado

Excelente! el Preview 4 del ASP.NET MVC Framework ha sido liberado hace algunos minutos y está disponible para descargar aquí.  Entre las novedades incluídas se encuentra el soporte de errores a través de un ActionFilter, otro para manejo de OutputCache, algunos métodos helpers para Ajax entre otras monerías más.  Quién mejor para explicar a detalle estas nuevas características que The Gu.

Por otro lado, a 30 minutos de mi plática en la Comunidad Guadalajara.NET precisamente acerca de esta plataforma creo que mi material está oficialmente desactualizado... x). <NiHablar>Así es esto de la tecnología</NiHablar>

Reunión de la Comunidad Guadalajara.NET

Quiero aprovechar este espacio para invitarlos a todos/as a la próxima reunión de la Comunidad Guadalajara.NET este miércoles en donde estaré exponiendo el siguiente tema:

ASP.NET MVC Framework Parte I

Ven y conoce este nuevo paradigma para desarrollar aplicaciones Web y entérate del gran potencial y la facilidad que esta nueva plataforma ofrece para crear robustas y sofisticadas aplicaciones.

La cita:

Fecha: Miércoles 16 de julio 2008

Lugar: Sala 2, Centro del Software

Hora: 18:30 - 20:30 hrs.

 

Los esperamos!

Posted: Jul 11 2008, 02:10 PM by rodrigo | with no comments
Filed under: ,
TechEd Developers 2008 - Epílogo

TechEd Developers 2008 USA ha sido un evento extraordinario en muchos sentidos.  En lo personal, fue muy satisfactorio ser parte del staff Microsoft y sobre todo haber tenido la oportunidad de presentar. De estar al frente.  De ser instructor y orador en un evento de esta escala e importancia internacional.

Me regreso con muchas energías -lo cual es paradójico ya que estoy muy cansado física y mentalmente- de seguir trabajando y aprendiendo en esto que realmente me apasiona.  Tuve la fortuna de conocer a grandes personalidades, convivir con personas altamente talentosas, y sobre todo: de compartir.  Compartir es lo que nos hace y hará fuertes en cualquier rubro y en cualquier camino que emprendamos.

 

Goodbye Orlando.  Hello New Orleans!

Posted: Jun 09 2008, 04:54 PM by rodrigo | with no comments
Filed under:
TechEd Developers 2008 - Crónica III

Es un día caluroso y húmedo en la ciudad de Orlando, Fl.  El día de hoy viernes muchos asistentes regresan a su lugar de origen ya que es el día final del evento.  Aunque todavía es día normal de sesiones, la agenda es mucho más holgada.

Por mi parte, tuve mi 2da presentación de "Building an Application with ASP.NET MVC" y me alegra decir que estuvo mucho mejor que la primera y recibí aun mejor feedback por parte de los asistentes.  Surgieron algunas preguntas bastante interesantes -en ocasiones complejas- relacionadas con esta tecnología lo cual causó una charla muy edificante para todos.  No cabe duda que el MVC Framework es una tecnología que -aunque sea preview del preview (no es ni CTP aun)- no hay que perderla de vista.

Después de esto, apegándome a mi agenda, estuve hasta el final del día en el área de Hands-On Labs la cual estuvo bastante llena a pesar de ser las últimas horas del evento.  Y de hecho no me sorprende ya que tuvimos la oportunidad de ofrecer a todos los asistentes una gran variedad de laboratorios extremadamente interesantes acerca de las últimas tecnologías Microsoft.

Finalmente, dadas las 6:00pm el TechEd Developers 2008 USA había terminado.  En el equipo, recibimos las últimas noticias y comentarios acerca del performance del evento y al parecer fue todo un éxito especialmente el área en el que estuvimos colaborando.

Hora de descansar los pies.

Posted: Jun 09 2008, 04:32 PM by rodrigo | with no comments
Filed under:
TechEd Developers 2008 - Crónica II

El día jueves mi buen amigo Chris Sutton hizo su segunda aparición en el escenario al presentar a una gran cantidad de asistentes su tema relacionado también con el ASP.NET MVC Framework.

Asimismo tuvimos la fiesta general para todos los asistentes la cual se llevó a cabo en Universal Studios lo que me hizo recordar que la visita que hicimos mi buen amigo Misa y yo a esos estudios pero en Los Angeles, Ca. el año pasado.

El único detalle que no me gustó mucho es que fue muy poco tiempo -por cuestiones de seguridad muy probablemente-, y sumándole a la mala coordinación en los autobuses para llevarnos del hotel a los estudios...  pero eso no fue motivo para no pasar un excelente rato en las atracciones y cóooomo no: comerse una buena piernota de pavo tipo Los Picapiedra y una Heineken (no Budweiser please).

Una de las grandes atracciones de este parque de diversiones es sin duda alguna The Simpsons, el cual me dejó realmente satisfecho ya que está bastante divertido.  Me recordó mucho al ride de Back To The Future de Universal Studios en L.A. debido a que es el mismo concepto, pero a mi singular punto de vista el de los Simpsons es superior.  Eso sí: Si llegan a ir... eviten a toda costa el ride de Men In Black a menos que lleven a niños menores de 8 años; de lo contrario les parecerá muy aburrido.

Finalmente, todos de regreso al hotel a las 11:00 pm ya que algunos (léase: YO) tenemos que trabajar el día viernes.  Será mi segunda aparición en el escenario pero esta vez será mucho más temprano.

Salu2!

Posted: Jun 09 2008, 03:23 PM by rodrigo | with no comments
Filed under: ,
TechEd Developers 2008 - Crónica I

El día de hoy fue mi presentación en el TechEd Developers 2008 :)  Estoy muy contento por los resultados.

Salu2!

Posted: Jun 04 2008, 06:48 PM by rodrigo | with 18 comment(s) |
Filed under:
TechEd Developers 2008 - Inauguración

El día de hoy se inauguró por la mañana oficialmente el TechEd 2008 por medio del keynote de Bill Gates.  Definitivamente como lo mencioné en los posts anteriores este será un evento de muchas noticias y la de hoy y yo creo que la más importante y emotiva es que este keynote fue el último evento público del señor Gates como Chairman de su empresa Microsoft. No cabe duda entonces que este día es histórico en todos los sentidos para los que trabajan directa o indirectamente con esta compañía.

En la recta final de su keynote, el señor Gates junto con Somasegar ofrecieron 20 minutos de preguntas y respuestas lo cual me pareció un detalle bastante interesante; pudimos escuchar algunas preguntas buenas otras no tanto pero lo peor de todo -para mí- es que la sesión acabó justo con la persona que estaba parada enfrente de mí. 

 

Te salvaste Bill Gates! Mi lista de posibles preguntas eran:

  • Por qué Windows Vista apesta corre TAN lento?
  • Quisiera invertir en DevWorx ?
  • Cuántos puntos hace en batería en la canción  Tom Sawyer de Rush en el Rock Band en Expert level?
  • ...y la más importante :) cual es el futuro de la tecnología WinFS?

En fin, ya será en otra ocasión ;)

Por otro lado hoy comenzaron los Instructor-Led Labs en donde mis buenos amigos y compañeros Chris y Andy partieron plaza, exponiendo sus respectivos temas en la sala que tenemos asignada.

En otras noticias, pues me encontré al mismísimo Haarón ya disfrazado de Staff de SharePoint y parece ser que precisamente en ese stand habrá mucho de qué hablar en esta semana ;).  Por otro lado, al final del día pude asistir a una de las pláticas de Scott Hanselman precisamente de MVC en donde pudimos ver algunas cosas bastante interesantes y sofisticadas del nuevo Preview que se acaba de distribuir.

En fin, mañana será otro día de muchas actividades y sobre todo para mí ya que mañana presento mi laboratorio!

Salu2!

TechEd Developers 2008 - Preparación

El día de hoy fue dedicado a difundir la estrategia con la que se llevará a cabo el evento; hacer networking con todos los trainers que estamos presentes, además hoy todavía se estuvieron montando los mostradores y mobiliario necesario para llevar a cabo la expo.  Asimismo hoy tuvimos los Technical Learning Guides la oportunidad de probar y jugar de antemano con las máquinas virtuales y los escenarios finales para todos los laboratorios que se ejecutarán durante la semana.

Con agrado encuentro que en esta edición todos los equipos de cómputo tienen una configuración bastante buena para llevar a cabo los laboratorios y hasta donde pude ver y probar corren muy bien así que eso es una preocupación menos para todos los que estamos involucrados en el evento.  Asimismo el software que se encarga de manejar los hands-on labs en cada máquina se ve intuitivo y con muchas características muy productivas para los asistentes.

 

En fin, ya mañana arranca oficialmente uno de los eventos más esperados por todo.  Será una semana muy interesante, de mucho aprendizaje, mucho trabajo, mucho estrés pero sin duda alguna: de muchas satisfacciones para todos y cada uno de los que estamos en él.

 

Salu2!

Posted: Jun 01 2008, 08:56 PM by rodrigo | with no comments
Filed under:
TechEd Developers 2008 - Prólogo

"Geek es un término para indicar a la persona que presenta una gran fascinación por la tecnología, informática y temas relacionados" - Wikipedia

El evento tecnológico por excelencia en donde se encuentran nos encontramos cara a cara esta clase de personas que gustan gustamos de usar la plataforma Microsoft es, sin lugar a duda, el TechEd.  En este año la sede es en la calurosa ciudad de Orlando, Florida y personalmente creo que esta edición será bastante especial por dos cosas:  la primera porque es la primera vez en la edición de TechEd USA en la que se darán los tracks de Developers y ITPro de manera separada (cada una tendrá su propia semana) basándose en el formato de los TechEd EMEA tal y como lo comenté hace algunos meses.  La segunda es porque tenemos en estos momentos grandes y prometedoras herramientas nuevas y algunas otras que continúan en fase beta pero que seguramente (espero) habrá muchos y muy buenos anuncios de ellas a lo largo de toda la semana.

Por otro lado, tengo el orgullo de haber sido invitado para participar como Technical Learning Guide para este evento en el área de Hands-On Labs, y lo más importante es que tengo el honor de participar por primera vez como ponente de un tema, ya que llevaré a cabo la siguiente sesión de laboratorio "Instructor-Led":

WUX19-ILL Building an Application with ASP.NET MVC

In this lab, build a sample application using the ASP.NET MVC framework. See how controllers, views, and your own data models interact to create a maintainable Web application with clean URLs and loose coupling.

El catálogo completo de sesiones del TechEd 2008 lo pueden checar aquí.

En futuros artículos extenderé el tema de ASP.NET MVC Framework porque además de ser muy interesante, es una manera muy diferente de diseñar y desarrollar nuestras aplicaciones Web.

Si están en la ciudad para el evento y si gustan de una buena charla o solo para saludar, no duden en buscarme: me dará un enorme gusto encontrar banda hispanoparlante por aquí.  De hecho, el buen Haarón González anda en estos lares también así que el geekismo está a todo lo que da ;)

Por último quiero comentar que Keiko no estaba muerto(a?), sino andaba de parranda (o se les fue por el caño durante la filmación de sus infames películas).  Aquí está la prueba contundente:

Salu2!

Posted: Jun 01 2008, 12:45 AM by rodrigo | with 4 comment(s)
Filed under: ,
PodWorx: 3ra Emisión

Ya está disponible la tercera emisión del PodWorx, en donde platicamos muy a gusto la verdad  con el mismísimo Mario Contreras a.k.a. Nazul acerca de SQL Server 2008 y un poquitito de LINQ.  Yo definitivamente me escucho como si estuviera encerrado en el baño (y no,... no lo estaba.  Lo juro :), eso me pasa por estar podcasteando con el micrófono del Rock Band :/).  El PodWorx lo pueden descargar aquí.  También pueden subscribirse al feed del propio PodWorx para recibir las últimas actualizaciones.

Salu2!

Posted: May 26 2008, 10:51 AM by rodrigo | with 1 comment(s)
Filed under:
Microsoft Source Analysis para Visual C# .NET

El día de hoy ha sido liberado Microsoft Source Analysis para C#, la cual es una herramienta que nos sirve para reforzar mejores prácticas en "layout, readability and documentation" según se menciona en la liga aquí expuesta.

La descarga no es muy pesada y la instalación es transparente.  Por mi parte, la instalación en Visual Studio .NET 2008 fue muy rápida y sin contratiempos.  Como se muestra en la siguiente imagen esta herramienta se auto-monta en el IDE de VS, brindándonos la oportunidad de analizar el código de nuestros proyectos:

Al probarlo en un proyecto sencillo de tipo consola, en donde creé un archivo .dbml de LINQ que incluye las entidades Orders y Customers de la base de datos Northwind y posteriormente analizando el código con esta herramienta el resultado fue el siguiente:

Ooops! Muchas advertencias en código creado automáticamente.  Será cierto que reealmente la usan internamente en Microsoft? :)

No obstante a que no es 100% infalible, es cierto que esta herramienta nos puede ayudar a descubrir y potencialmente corregir errores de layout en nuestro código, convenciones de nombres para métodos y variables, uso adecuado de tipos, etc.  Vale la pena echarle un vistazo.

Salu2!

Posted: May 23 2008, 04:09 PM by rodrigo | with no comments
Filed under:
La adopción de SharePoint

Con respecto al interesante post que mi buen amigo Luis Du Solier publicó en su web log debo decir que estoy totalmente de acuerdo en sus comentarios relacionados a estar preparados técnicamente y que SharePoint es y será una gran oportunidad de negocio en lo que a TI y desarrollo se refiere.  Por otro lado considero que las cifras y datos a los que se refieren los artículos que nos compartió Luis definen una tendencia que de alguna manera ya ha sido dada a conocer desde hace tiempo:  SharePoint es una plataforma que está multiplicándose en su uso y son cada vez más las empresas que desean implementarlo. Creo que han sido pocas las plataformas que han tenido tanto impulso como lo ha tenido SharePoint.  Para complementar los comentarios de Luis, me gustaría decir que deberían ocurrir las siguientes cuestiones:

  1. Microsoft debe seguir impulsando esta magnífica tecnología y por lo tanto, la próxima versión de esta plataforma deberá ser mucho más robusta; brindándole más herramientas a nosotros desarrolladores y arquitectos para que podamos crear soluciones confiables basadas en ella. 
  2. Debería abrirse el código fuente para depuración tal y como sucedió con el .NET Framework hace algunos meses (ver punto número 1)
  3. Una mejor total integración con la nueva tecnología que nos invade hoy en día: ASP.NET MVC, LINQ, Silverlight, ASP.NET Data Services, etc.
  4. Mejorar la experiencia del usuario en el navegador para complementar el hecho de una verdadera transformación en el modo en el que trabajamos.  IE8 deberá corregir todas las deficiencias que tiene la actual versión 7.
  5. Sharepoint deberá soportar totalmente otros navegadores

SharePoint es una gran tecnología, de eso no me cabe la menor duda.  Sin embargo tiene diversas áreas de oportunidad las cuales estoy seguro serán sanadas a corto-mediano plazo.  No obstante, estoy totalmente convencido que aquellas empresas que estén implementando hoy en día SharePoint están en terreno firme: terreno de una plataforma para crear aplicaciones y portales colaborativos sofisticados de una manera sencilla.

Salu2!

PodWorx : 2da emisión

Ya está disponible la segunda emisión de PodWorx: el PodCast de DevWorx en donde se trataron temas como los Lenguajes funcionales, el MVP Summit y algunas otras monadas del mundo de .NET.  Esperamos que lo disfruten.

 

Salu2!

Too much Rock

Esto me pasa por tocar como Neil Peart :/

Posted: May 05 2008, 09:44 AM by rodrigo | with 5 comment(s)
Filed under:
Transportando datos de archivos de texto plano a tablas de SQL Server con BizTalk Server 2006 paso a paso. Parte 2 de 2.

Resumen

En la primer parte vimos cómo crear los esquemas necesarios para leer los archivos de texto plano de nuestra tienda.  Vimos también cómo configurar un pipeline de recepción que incluya los esquemas creados para poder desensamblar los archivo correctamente.  En este artículo continuaremos con el escenario y juntaremos todas las piezas del rompecabezas.

Creación de la Orquestación

El siguiente paso es crear la orquestación dentro de nuestro proyecto.  Para realizar esto hagamos clic derecho sobre nuestro proyecto y seleccionemos Add New Item.  A la orquestación le asignaremos el nombre Tienda_Orchestration.odx tal y como lo muestra la siguiente figura:

Ahora necesitamos un puerto de recepción por medio del cuál podamos obtener los archivos de texto plano.  Agreguemos el puerto a la orquestación haciendo clic derecho sobre el area denominada Port Surface y seleccionemos la opción Configured Port.  El nombre del puerto será Tienda_Recepcion:

En la siguiente ventana seleccionemos la opción de crear un nuevo tipo de puerto definiendo el nombre Tienda_Recepcion_Tipo y su tipo de comunicación como One-Way:

En la siguiente ventana seleccionemos la dirección de comunicación de tipo recepción y el port binding a Specify later.  Una vez hecho esto hagamos clic en siguiente y luego finalizar.

El paso anterior creará el puerto de recepción en la orquestación.  A la operación llamada Request del puerto debemos definir cuál será el tipo de mensaje que recibirá.  Seleccionemos Tienda_Album en la propiedad Message Type usando la ventana de propiedades

Agreguemos una actividad de tipo Receive a la orquestación y asignemos su propiedad Activate igual a True.  Su tipo de mensaje será Tienda_Input_Album (consultar la sección "Anexos" en este artículo para más información acerca de los mensajes y variables que deben ser creados) y su operación relacionada será Tienda_Recepcion.Operation_1.Request

Agreguemos una actividad de tipo Construct Message justo debajo de la actividad Receive recién incorporada.  En su propiedad Messages Constructed seleccionemos Tienda_Input_Artista ya que es el tipo de mensaje que deseamos construir.  Además le agregaremos una sub-actividad de tipo Message Assignment para poder construir el mensaje. 

Usando la ventana de propiedades modifiquemos Expression para que tenga el siguiente código:

headerDocString = Tienda_Input_Album(XMLNORM.FlatFileHeaderDocument);
headerDocXml = new System.Xml.XmlDocument();
headerDocXml.LoadXml(headerDocString);
Tienda_Input_Artista = headerDocXml;

El anterior código obtiene el artista del archivo recibido (gracias a que ese esquema está definido como header en el pipeline de recepción) y lo guarda en una variable de tipo XmlDocument.  Posteriomente, esta variable es usada para inicializar el mensaje de tipo Tienda_Input_Artista.

Bien, ahora necesitamos agregar un puerto de tipo Send usando la ventana de BizTalk Explorer con las siguientes consideraciones:

  • El tipo de puerto será Static-One-Way
  • Nombre: Tienda_Router_Sql
  • El tipo de transporte será SQL
  • La cadena de conexión deberá configurarse para conectarse a la base de datos Tienda usando el usuario biztalkuser definido en la parte 1 de este artículo.
  • Document Target Namespace: http://tienda.router/sqloutput
  • Response Document Root Element: alb
  • Send Pipeline: PassThruTransmit

Una vez agregado el puerto de tipo Send, hagamos clic derecho sobre la carpeta SPSchema y seleccionemos Add-Add Generated Items... e indiquemos la plantilla Add Adapter Metadata en la caja de diálogo.

Seleccionemos el puerto Tienda_Router_Sql en la siguiente ventana y hagamos clic en el botón Next.

En el siguiente paso del asistente llamado Database Information hagamos clic en el botón Next.  En el siguiente paso definamos los siguientes valores y despúes hagamos clic en el botón Next.

  • Target namespace:  http://tienda.router/sqloutput (el mismo que cuando creamos el puerto de tipo Send)
  • Port type: Send port
  • Request document root element name: alb_request
  • Response document root element name: alb_response

En el siguiente paso seleccionemos la opción Stored Procedure y hagamos clic en el botón Next.  En el siguiente paso seleccionemos InsertaArtista y en seguida hagamos clic en Finish.  Repitamos estos mismos pasos para el procedimiento almacenado InsertaAlbum.

Creación de los mapas de transformación

Hagamos clic derecho en la carpeta Map y seleccionemos la opción Add->New Item... y seleccionemos la plantilla Map de la caja de diálogo.  El nombre del mapa será Tienda_Artista.btm.

Seleccionemos el data source del esquema origen a Tienda_Artista:

Seleccionemos el data source del esquema destino a SqlService_sqloutput.  A continuación, seleccionemos alb_request como root node.  Realicemos el mapeo necesario tal y como lo muestra la siguiente figura:

Agreguemos una nueva actividad de tipo Construct Message a la orquestación y dentro de ella una actividad de tipo Transform.  Hagamos doble clic sobre Transform_1 y configuremos de la siguiente manera la transformación:

  • Existing Map
  • Fully Qualified Map Name: Tienda.Map.Tienda_Artista
  • Source: Tienda_Input_Artista
  • Destination: Tienda_Output_Artista

Agreguemos una actividad de tipo Send a la orquestación y le asignamos su propiedad Message a Tienda_Output_Artista.

Agregar un nuevo puerto de envío a la orquestación haciendo clic derecho sobre el Port Surface del diseñador con los siguientes parámetros:

  • Name: [Empresa]_Envio_Header
  • Tipo: [Empresa]_Envio_Header_Tipo
  • Comunicación: One-Way
  • Dirección: Send
  • Binding: Especificar después

Configurar su operación llamada Request con la propiedad Message Type como Tienda.SQLService_sqloutput.alb_request.  Una vez hecho esto, conectamos el shape Send_1 al nuevo puerto tal y como lo muestra la siguiente figura:

Repitamos los pasos anteriores para el mensaje Tienda_Output_Album.

Podemos usar una actividad de tipo Parallel para que el envío del artista junto con sus albumes relacionados sea al mismo tiempo en vez de secuencial.

Deployment

Como último paso debemos hacer Deploy de nuestro proyecto haciendo clic en la opción Deploy del menú Build de Visual Studio .NET.

Una vez hecho el deployment debemos configurar los puertos de recepción y envío usando la herramienta BizTalk Server 2006 Administration Console haciendo clic derecho sobre la orquestación en la lista de aplicaciones.

  • El pipeline del puerto de recepción debe ser de tipo Tienda_ReceivePipeline
  • El puerto de recepción debe tener relacionado un folder que tenga el suficiente nivel de permisos de acceso para poder leer los archivos (en este demo se agregó Everyone Full Control a un folder llamado C:\Archivos)
  • El filtro para el puerto de recepción debe ser *.txt
  • Configurar adecuadamente el polling interval. En esta demo se configuró a 15 segundos (15000 ms)
  • El puerto de envío debe ser de tipo SQL y su pipeline de tipo PassThruTransmit
  • El puerto de envío debe tener configurada la cadena de conexión correcta para poder ejecutar los stored procedures relacionados

Lo último que resta es iniciar la orquestación haciendo clic sobre ella y seleccionar la opción Start del menú contextual.  Para probar, copiemos un archivo de texto a la carpeta en donde se configuró el puerto de recepción y listo!  Nuestras tablas son actualizadas correctamente en SQL Server.

Anexos

Mensajes

Nombre del mensaje Tipo Observaciones
Tienda_Input_Artista Tienda.FFSchema.Tienda_Artista

Creado por medio del Flat File Schema Wizard

Tienda_Input_Album Tienda.FFSchema.Tienda_Album

Creado por medio del Flat File Schema Wizard

Tienda_Output_Artista Tienda.SQLService_sqloutput.alb_request

Creado por medio de la opción Add Adapter Metadata (cambiar el nombre apropiadamente por medio de la ventana de propiedades si es que ya existe un archivo con el mismo nombre)

Tienda_Output_Album Tienda.SQLService_sqloutput_1.alb_request

Creado por medio de la opción Add Adapter Metadata (cambiar el nombre apropiadamente por medio de la ventana de propiedades si es que ya existe un archivo con el mismo nombre)

Variables

Nombre de la variable Tipo
headerDocString String
headerDocXml System.Xml.XmlDocument

Conclusión

BizTalk Server 2006 es una poderosa herramienta para la integración entre aplicaciones incluso de diferentes plataformas.  En este artículo dividido en dos partes vimos cómo enviar los datos de archivos de texto planos a tablas de SQL Server por medio de una orquestación de BizTalk Server 2006.

Posted: Feb 28 2008, 04:30 AM by rodrigo | with no comments
Filed under:
PodWorx 01 - Presentación, noticias y demás

 

Ya está disponible la primer emisión de PodWorx, el podcast de DevWorx conducido por Mike, Misa y su servidor y en el cual platicamos de diferentes noticias y temas con perfil técnico, condimentado con un poco de humor y una pizca de sarcasmo.

En esta edición platicamos principalmente acerca de la Clínica gratuita para el examen 70-536 y claro está, de otros temas también.  El resumen de esta emisión y otras emisiones lo podrán leer directamente del blog de PodWorx.

Lo pueden descargar de esta dirección.

 

 

Salu2!

Posted: Feb 14 2008, 11:39 AM by rodrigo | with 5 comment(s)
Filed under:
Gran respuesta

Y efectivamente!!!, acabo de bajar mis correos y me encuentro que el número de personas que amablemente han solicitado su inscripción a la clínica en línea asciende a ya casi 200!!!.  Muchas gracias por su interés;  en pocos días recibirán un correo confirmando su registro para que puedan entrar a la información privada de la clínica y sus materiales.  Les agradecemos a todos(as) la gran respuesta que han mostrado.  Por favor lean el post de Misael para más información acerca del proceso de registro.

Salu2!

Posted: Feb 13 2008, 12:46 PM by rodrigo | with no comments
Filed under:
Clínica gratuita para el examen 70-536

Se invita a todas las personas interesadas a participar en la clínica para presentar el examen de certificación 70-536, la cual comenzará el próximo día 03 de marzo del 2008 y será llevada a cabo de manera online; siendo su duración aproximada de 2 meses.  Se extiende esta invitación también a todas aquellas personas ya certificadas que deseen reforzar sus conocimientos acerca de los temas que toca el temario para este examen.  La clínica es totalmente gratuita y será impartida por:

  • Rodrigo Díaz (Ineta Speaker)
  • Miguel Ángel Morán (MVP C#)
  • Misael Monterroca (Ineta Speaker)

El temario lo pueden consultar aquí.

 

Nos vemos en línea!

DevWorx Learning Center

Como parte de la misión de esta empresa, hemos creado DevWorx Learning Center: una iniciativa para la creación de material de aprendizaje y entrenamiento audiovisual para difundir la plataforma tecnológica .NET de Microsoft a todas aquellas personas de habla hispana que deseen conocer o aprender más acerca de estas maravillosas herramientas.  Esperando que les sea de gran utilidad, sean ustedes bienvenidos.

http://learning.devworx.com.mx/default.aspx

 

Saludos!

Posted: Feb 12 2008, 12:30 PM by rodrigo | with no comments |
Filed under:
Transportando datos de archivos de texto plano a tablas de SQL Server con BizTalk Server 2006 paso a paso. Parte 1 de 2.

No es raro hoy en día encontrarnos con aplicaciones que integran datos de diferentes plataformas para obtener la información necesaria y poder explotarla adecuadamente.  Son bastantes los escenarios que nos podemos encontrar como consultores en los que determinada empresa cuenta ya con un sistema de tipo legacy y que debido a su gran importancia histórica es imposible tirarlo a la basura incluso resultaría bastante caro y arriesgado adentrarse en el largo y sinuoso camino de la migración total -incluso parcial- de su código a una plataforma moderna y escalable como es .NET.  Por lo anterior es muy común que las empresas requieran de alguna forma u otra seguir obteniendo o procesando los datos que sus sistemas legacy arrojan y a la vez renovar su plataforma y arquitectura tecnológica a nuevos horizontes. 

Así que, en este artículo aprenderemos a procesar archivos de texto planos para leer su contenido y posteriormente escribirlo a tablas de SQL Server 2005 por medio de una orquestación de BizTalk Server 2006.  Una vez terminado de leer este artículo podrán apreciar lo sencillo que puede ser esta tarea al ser coordinada y procesada con esta magnífica pieza de software.

El escenario

Nuestro sistema legacy es un sistema de compras e inventarios de una cadena de gran importancia a nivel nacional de venta de discos compactos musicales.  No obstante, la empresa requiere que el catálogo de discos sea replicado a una base de datos de SQL Server 2005 por medio de una orquestación de BizTalk Server 2006 una vez que un nuevo título llegue a su inventario.

El sistema legacy escribirá un archivo de texto plano con extensión .txt por artista una vez que nuevos álbumes lleguen al inventario.  El archivo de texto plano tendrá el siguiente esquema:

ARTISTAID | NOMBRE | GENERO

ARTISTAID | ALBUMID | TITULO_DEL_ALBUM | ANIO | CANTIDAD

ARTISTAID | ALBUMID | TITULO_DEL_ALBUM | ANIO | CANTIDAD

ARTISTAID | ALBUMID | TITULO_DEL_ALBUM | ANIO | CANTIDAD

...

Con lo anterior podemos deducir que en un solo archivo podrán incluirse diferentes albumes del mismo artista.  Además, podemos observar que los archivos incluyen el pipe (|) como separador de cada atributo.

Por otro lado, tenemos una base de datos de SQL Server 2005 llamada Tienda la cual cuenta con las tablas Artista y Album que son donde se depositarán los datos de los archivos de texto plano y su esquema es el siguiente:

La solución

La solución está basada en una orquestación implementada con BizTalk Server 2006 la cual será capaz de detectar la existencia de un nuevo archivo y procesará su contenido apropiadamente para escribir los datos en las tablas del servidor de SQL Server 2005.

Para iniciar, implementemos los procedimientos almacenados encargados de escribir los datos en las tablas de la base de datos.  Los procedimientos almacenados serán llamados spInsertaArtista y spInsertaAlbum para las tablas Artista y Album respectivamente y su código es el siguiente:

create procedure dbo.InsertaArtista
@ArtistaID int,
@Nombre varchar(50),
@Genero varchar(50)
as
Set nocount on
Insert into Artista (ArtistaID, Nombre, Genero)
Values (@ArtistaID, @Nombre, @Genero)
 
go
 
create procedure dbo.InsertaAlbum
@ArtistaID int,
@AlbumID int,
@Titulo varchar(50),
@Anio smallint,
@Cantidad int
as
Set nocount on
Insert into Album
(ArtistaID, AlbumID, Titulo, Anio, Cantidad)
Values
(@ArtistaID, @AlbumID, @Titulo, @Anio, @Cantidad)

También necesitamos un login de SQL para poder conectarnos a SQL Server 2005 desde BizTalk y poder ejecutar los procedimientos almacenados.  Claro está que será más recomendable usar autenticación de tipo Windows en vez de usar usuarios de tipo SQL pero para este artículo lo dejaremos así.  La cuenta que crearemos será biztalkuser con el password Pa$$W0rd y le asignaremos el rol de dbo_owner sobre la base de datos Tienda:

Muy bien, tenemos los elementos básicos para comenzar.  Lo primero que vamos a hacer es abrir Visual Studio .NET y crearemos un nuevo proyecto de tipo Empty BizTalk Server Project y le pondremos el nombre Tienda, tal y como lo muestra la siguiente figura:

 

Una vez creado nuestro proyecto es buena idea cambiarle las propiedades Application Name y Restart Host Instances para poder identificar nuestra aplicación en la consola de administración de BizTalk y para reiniciar todas las instancias cuando despleguemos el proyecto respectivamente.  La siguiente figura muestra las propiedades de nuestro proyecto:

Por efectos de orden y limpieza en nuestro proyecto crearemos los siguientes fólders:

Nombre Descripción
FFSchema Aquí guardaremos los esquemas para el pipeline que lee los archivos de texto planos
Map Aquí guardaremos los mapas de transformación
Pipeline Aquí guardaremos los pipelines de recepción para los archivos de texto planos
SPSchema Aquí guardaremos los esquemas necesarios para ejecutar los procedimientos almacenados en SQL Server 2005

Creación de los esquemas

El siguiente paso será la creación de los esquemas apropiados para interpretar el esquema de los archivos de texto plano.  Para el tipo de archivo que procesaremos en este ejemplo crearemos dos esquemas: uno para el header que contiene información básica del artista y otro para el detalle el cual como mencionamos anteriormente puede contener uno o varios albumes del mismo artista.  Los siguientes pasos muestran la creación del esquema para los álbumes, sin embargo serán los mismos pasos para la creación del esquema para el artista.  Para hacer esto agreguemos al fólder FFSchema un nuevo elemento de tipo Flat File Schema Wizard y asignemos el nombre Tienda_Album.xsd tal como lo muestra la siguiente figura

Al hacer anterior Visual Studio nos muestra el asistente de creación de esquemas para archivos de texto planos.  En la primer ventana asignaremos un archivo muestra de los cuales necesitamos procesar y asignaremos algunos parámetros como Record name y Target namespace.  La siguiente figura da ejemplo de esto:

La siguiente tarea será seleccionar las líneas en el archivo de texto que representan el detalle tal y como lo muestra la siguiente figura:

Hagamos clic en siguiente para aceptar la opción "By delimiter symbol".  La siguiente ventana nos solicita indicar el delimitador para cada registro, en nuestro caso será el default {CR}{LF} ya que cada registro está indicado en una línea por separado.  La siguiente figura muestra esta ventana:

Al hacer clic en el botón Siguiente en la ventana anterior se nos muestra la opción de indicar cuáles son los elementos hijos.  En el caso específico de este ejemplo seleccionaremos el primer registro como Repeating record y le asignaremos el nombre Album mientras que al resto de registros les asignaremos el tipo Ignore ya que son exactamente iguales que el primero en estructura.  La siguiente figura muestra los elementos configurados:

La siguiente ventana nos muestra un resumen del esquema, sin embargo aun falta terminar de configurar los registros así que haremos clic en siguiente.  La siguiente ventana llamada "Select Document Data" nos solicita seleccionar los datos que definen un registro dentro del archivo de texto plano.  De manera predeterminada el asistente es lo suficientemente inteligente para seleccionar el registro tal como lo muestra la siguiente figura, posteriormente haremos clic en Siguiente.

Tal y como hicimos anteriormente, en la ventana "Select Record Format" aceptaremos la opción "By delimiter symbol" y haremos clic en el botón Next.

Ahora se nos presenta de nueva cuenta la ventana "Delimited Record", en ella especificaremos en la lista desplegable llamada "Child delimiter" el caracter que delimita cada columna dentro de nuestro archivo en este caso se trata del pipe (|).  Al hacer clic en el botón Next se nos muestra la siguiente ventana en donde podemos definir el nombre de cada elemento (columna) que representa un registro de cada álbum:

Al hacer clic en siguiente se nos presenta el resumen del esquema y para terminar haremos clic en el botón Finish.

Una vez terminada la creación del esquema modificaremos la propiedad Element FormDefault del nodo <Schema> para tener el valor "Qualified":

No olvidemos el esquema para el Artista!  Sigamos todos los pasos anteriores que usamos para crear el esquema de los álbumes con la única diferencia que a la propiedad Max Occurs en Artistas/Artista le asignaremos un valor de 1.

Creación del Pipeline de recepción

Nuestra siguiente tarea será la creación del pipeline de recepción para nuestro proyecto.  Para hacer esto agreguemos un nuevo elemento de tipo Receive Pipeline dentro de nuestro fólder Pipeline y asignemos el nombre Tienda_ReceivePipeline.btp tal como lo muestra la siguiente figura:

Para diseñar nuestro pipeline usaremos el componente Flat file disassembler y lo colocaremos en la sección "Disassemble" del diseñador la cual permite indicar la funcionalidad a ejecutar cuando queremos desensamblar nuestro archivo.  Además le asignaremos las propiedades Document schema y Header schema a Tienda_Album y Tienda_Artista respectivamente, además de poner en True la propiedad Preserve header.  La siguiente figura muestra el componente Flat file dissasembler configurado:

Wuf! Vamos muy bien pero aún falta camino por recorrer.  La segunda parte de este articulo explicará la orquestación de BizTalk y demostrará cómo todas las piezas de este rompecabezas se unen.

Posted: Feb 08 2008, 12:44 AM by rodrigo | with no comments |
Filed under:
Ocultar la opción "View All Site Content" de un sitio de WSS 3.0

Para realizar la tarea que indica el título de este post podríamos hacerlo de diferentes maneras, una de ellas abriendo el sitio usando SharePoint Designer 2007 y simplemente borrando el control.  No obstante esta opción es demasiado radical ya que ni siquiera los usuarios administradores podrían ver ese control una vez borrado.  Por lo tanto el escenario más común buscado sería: Ocultar la opción "View All Site Content" pero solo para los usuarios X o los usuarios Y.  Bien pues una manera de solucionar esta duda sería editar el master page de nuestro sitio y encapsular el mencionado control View All Site Content (que técnicamente es un SPLinkButton) con un control SPSecurityTrimmedControl especificando su propiedad PermissionsString a un permiso que sepamos que solamente tienen los usuarios a los que queremos que se les despliegue el control.

Veamos lo anterior ahora en código:  A continuación se muestra un fragmento de código que pertenece al master page de mi sitio al que le quiero ocultar el control View All Site Content.  El fragmento muestra la barra de navegación izquierda que es donde comunmente se encuentra ese control: (los números son de referencia únicamente)

   1: <asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
   2:     <div class="ms-quicklaunchouter">
   3:         <div class="ms-quickLaunch" style="width: 100%">
   4:             <h3 class="ms-standardheader">
   5:                 <label class="ms-hidden">
   6:                     <SharePoint:EncodedLiteral runat="server" text="<%$Resources:wss,quiklnch_pagetitle%>"
   7:                         EncodeMethod="HtmlEncode" /></label>
   8:                 <div class="ms-quicklaunchheader">
   9:                     <SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx"
  10:                         Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>" /></div>
  11:             </h3>

En la línea número 9 está nuestro objetivo.  Pongamos el control SPLinkButton dentro de un SPSecurityTrimmedControl tal como lo muestra el siguiente código ya modificado:

   1: <asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
   2:     <div class="ms-quicklaunchouter">
   3:         <div class="ms-quickLaunch" style="width: 100%">
   4:             <h3 class="ms-standardheader">
   5:                 <label class="ms-hidden">
   6:                     <SharePoint:EncodedLiteral runat="server" text="<%$Resources:wss,quiklnch_pagetitle%>"
   7:                         EncodeMethod="HtmlEncode" /></label>
   8:                 <SharePoint:SPSecurityTrimmedControl runat="server" PermissionsString="ManageWeb">
   9:                     <div class="ms-quicklaunchheader">
  10:                         <SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx"
  11:                             Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>" /></div>
  12:                 </SharePoint:SPSecurityTrimmedControl>
  13:             </h3>

Debemos hacer notar que estamos usando el permiso ManageWeb.  Esto qué significa? Que unicamente aquellos usuarios que tengan ese permiso podrán ver el control View All Site Content.  Y ya que se trata de un permiso -comunmente- asignado a administradores, un usuario normal no debería tenerlo (en mi caso, por ejemplo).  Claro está, esto dependerá de la implementación de cada quién; por lo tanto aquí está la lista de permisos que podemos usar.

Asimismo, esto también aplica para la barra de navegación o "Top link bar" de los sitios de SharePoint, solo busquen en el master page el control TopNavigationMenu de tipo <SharePoint:AspMenu> y repitan la receta.

 

Espero que esto les sea de ayuda.

 

Salu2!

Lugares que tienes que visitar en Guadalajara, Jalisco
 
  • Toyo (Restaurante).  Si te gusta la comida japonesa no dudes en pisar este lugar ya que la comida está deliciosa, además de que podrás encontrar una gran variedad de cervezas nacionales e internacionales.  Si llegas y estás en un modo muy "inter" pide una Duvel.  Está en la "Glorieta de los Caballitos", justo al lado de la Honda.
  • Chai (Restaurante).  Lugarcito bastante plascentero para ir a comer un sandwich o una baguette, o de plano tomar el café mientras lees tu blog favorito o el tu diario.  Ofrecen servicio de Internet inalámbrico y si el clima te favorece, por qué no... pide terraza.  Está sobre Av. Vallarta casi esquina Chapultepec.
  • Pipiolo (Restaurante).  Típico restaurante mexicano en donde preparan alambres, brochetas, quesadillas y carnes.  El Filete tipo Pipiolo es su especialidad y por cierto: está buenísimo.  Hay diversas sucursales, pide a tu taxista de confianza que te lleve al más cercano.
  • La Terraza de la Abuela (Restaurante).  Restaurante de cocina mexicana con muy buen sabor.  Pide el caldo tlalpeño y alguna especialidad de la casa.  Hay varias sucursales, pero la sucursal que está por el Centro Magno brinda un servicio de primerísimo nivel y sabe mejor.
  • Carnes en su Jugo De La Torre (Restaurante).  La especialidad de la casa "Carne en su Jugo" (obvio verdad?) no dudes en pedirla.  Está super bueníiiiiiiiiiiisima.  Tu platillo vendrá en compañía de algunas tostadas, huacamole, frijoles refritos y cebollitas asadas.  Está sobre la Av. López Mateos entre la Glorieta de La Minerva y la Glorieta de los Caballitos.  (Muchas gracias Blu, por la recomendación).
  • El Santo Coyote (Restaurante).  Cocina Mexicana de primer nivel en donde puedes probar suculentos platillos típicos y cortes de carne.  Las instalaciones son de primer nivel y los platillos son exquisitos como para comer hasta reventar.  No me acuerdo exactamente como llegar pero como es bastante famoso tu taxista favorito te llevará sin contratiempos.
  • El Scratch (Bar).  Si gustas del Blues este es el lugar para ti.  Localizado en el centro histórico de la ciudad de Guadalajara, en este bar podrás disfrutar de un excelente grupo que toca como los grandes, también podrás ver videos rarísimos de este género musical.  El ambiente es propicio para disfrutar tu cerveza  favorita, y es bastante buena opción si andas cerca y ya es tarde.
  • La Bodeguita del Medio (Restaurante-Bar).  Uno de los restaurante-bares cubanos más famoso (sino el más famoso) el cuál no necesita descripción.  Ningún Mojito sabe como en La Bodeguita del Medio.  También llevate tu plumón para plasmar ese momento en la pared más cercana a tu mesa, en la del baño o de plano en tu ropa si ya andas de mala-copa.
  • Red Pub (Bar).  El concepto de este bar es de mis favoritos:  Pequeño, barra con grifos de cerveza, cerveza artesanal riquísima y sobre todo... excelente música.  Si te late el Grunge, Alternativo, Brit, Indie, Trip-hop, Industrialelectrónico ... este lugar sin duda es para ti.  Localizado por Av. México... no me acuerdo muy bien dónde :D (mencioné que la cerveza está RIQUÍSIMA?)
  • La Cantina de Los Remedios (Restaurante-Bar).  Cantina a su máxima expresión (con estilo y calidad por supuesto), aquí puedes comer unos deliciosos tacos de arrachera, un corte de carne o una ollita de queso fundido con chorizo, acompañado de tu(s) cerveza(s) favorita(s).  Es el típico lugar que regularmente visitaría por ejemplo Andrés de 2 a 2 (2pm a 2pm del siguiente día).  Localizada cerca de Av. de las Rosas casi esquina con Av. López Mateos en la Colonia Chapalita aunque hay varias.
  • Lonches Gemma (Restaurante).  Si de tortas ahogadas o más bien de lonches se trata, en Lonches Gemma comerás delicioso.  Si bien la original torta ahogada es de carnitas de cerdo ahogada -literalmente- en salsa roja, aquí podrás encontrar opciones menos agresivas para esa gastritis tan dulce que traes.  Puedes encontrar de pierna, pollo, etc. con salsas menos picantes.  Excelente opción cuando tienes poco tiempo para comer o cuando de plano andas muy bruja.  Si no mal recuerdo hay varias sucursales, pero en La Gran Plaza (Av. Vallarta cerca del Men's Club (quéeeeeeeeee???)) hay un local en la planta alta.
  • El Sax (Bar).  Barcito pequeño, muy casero pero de buen ambiente en donde puedes escuchar a un vato (Gus) que toca bastante bien la lira y sobre todo que sabe de buena música.  Está en la Colonia Minerva cerca de la Glorieta de los Naranjitos.
  • La Matera (Restaurante).  La Matera es un restaurante de cocina argentina en donde puedes disfrutar unas fabulosas empanadas de queso roquefort, de carne o de queso con cebolla, acompañadas del tradicional chimichurri, -el cuál preparan riquísimo en este restaurante-.  Como plato fuerte puedes elegir un corte argentino (te recomiendo el Bife).  Eso sí, si tu hotel está lejos es necesario que te regreses caminando ya que con 500grs. de carne sales con la pupila dilatada.  S