3.29.2007

Evento ProNet Code Camp de la Comunidad. NET del D.F.

El Lunes pasado tuve el honor de dar una conferencia dentro de la gira ProNet Code Camp de Microsoft en el evento organizado por Developers Dot Net en la UNITEC campus Coyoacán. Esta plática la voy a volver a dar el próximo Martes 24 de Abril en el siguiente evento de la gira que será en el ITAM organizado por la Comunidad .NET del D.F.

Registrate aquí para el evento del 24 de Abril en el ITAM.

Entretanto, a solicitud de algunos de los asistentes que amablemente me contactaron, pueden bajar los ejemplos de código de aquí. Estos ejemplos fueron desarrollados en la Comunidad .NET del D.F. por Raúl Guerrero y un servidor. Espero que les sean de utilidad.

3.25.2007

¿Qué es Aero en Windows Vista?

Windows Vista es el primer sistema operativo de Microsoft diseñado para aprovechar el hardware de aceleración gráfica de las PCs recientes para todas las ventanas. En versiones anteriores este hardware únicamente era explotado por aplicaciones de 3D que utilizaran las interfaces de programación de DirectX o de OpenGL. Este hardware es tan poderoso que en algunos modelos de PC rivaliza o incluso supera en poder al procesador central.
Windows Vista ofrece dos niveles de interfaz gráfica. La más simple se llama “Aero Basic“ y ofrece mejoras relativamente menores con respecto a Windows XP. La principal es el nuevo explorador de archivos y diálogos como los que vimos en la sección anterior. La versión más completa de la interfaz se llama “Aero Glass” e incluye una reingeniería completa del motor de despliegue gráfico de Windows. Esta versión está disponible en todas las versiones de Windows Vista excepto la “Home Basic”, siempre y cuando el hardware de video sea suficientemente poderoso[1]. Las principales ventajas que ofrece “Aero Glass” son:

· Ventanas con bordes translúcidos
· Animaciones de ventanas completas al minimizar y maximizar
· Vistas preliminares “en vivo” de todas las ventanas desde la barra de herramientas de Windows
· Windows Flip y Windows Flip3D sustituyen al Alt+Tab tradicional ofreciendo una vista preliminar del contenido de cada ventana, en 3 dimensiones en el caso de Flip3D (Tecla Windows + Tab)

Para soportar estos efectos nuevos en Windows Vista, fue necesaria una reingeniería completa de la arquitectura de dibujo del sistema operativo. Vista introduce el WDDM (Windows Display Driver Model). Por esta razón, para soportar los efectos de Aero Glass necesitamos estar utilizando un controlador de video específicamente diseñado para Windows Vista. Los controladores WDDM soportan la virtualización de los recursos de hardware de video. Es decir, los recursos pueden ser compartidos y negociados entre las diferentes aplicaciones que se están ejecutando.

Además del nuevo modelo de controladores de video, Windows Vista introduce al mercado DirectX10, una interfaz de programación para controlar las funciones más recientes del hardware de video que permitirá construir juegos de video aún más realistas. DirectX10 no es compatible con DirectX9. Sin embargo, las versiones 9 y 10 pueden coexistir en un solo equipo. DirectX10 no es necesario para ejecutar “Aero Glass”.

El componente de Windows Vista que se encarga de soportar la funcionalidad de Aero es el Desktop Windows Manager (DWM). DWM es un motor de composición muy poderoso que se encarga de dibujar el contenido de cada ventana del sistema operativo en un mapa de bits distinto en su propia sección de la memoria de video que después “compone” en la pantalla final que ven los usuarios. DWM está implementado en el ejecutable dwm.exe de Windows Vista. Funciona con una arquitectura cliente/servidor que permite incluso que el procesamiento o rendering de una escena en 3D sea realizado en un equipo, mientras que la presentación final se hace en otro. Así Vista ofrece soporte de primer nivel a funciones como el escritorio remoto[2]. A diferencia de versiones anteriores de Windows, con “Aero Glass” cuando movemos una ventana las ventanas que estaban detrás de esta no se invalidan ni se tienen que redibujar. El DWM puede entonces mezclar el contenido de una ventana con el de las ventanas que se encuentran detrás, permitiendo así el efecto translúcido de la interfaz “Aero Glass”. Lo más interesante es que es posible solicitarle al DWM que una parte del área cliente de nuestra ventana queremos que se dibuje con este efecto translúcido. El DWM controla todos los efectos “Glass” y restringe el acceso a ellos. Dado que el efecto translúcido se presenta en el área no cliente de todas las ventanas en Vista, en el momento en el que una aplicación no compatible intenta dibujar dentro de esta área, Vista regresa temporalmente al modo “Aero Basic” para todas las aplicaciones.

[1] Con un hardware insuficientemente poderoso, Windows Vista siempre funciona con la interfaz “Aero Basic”.

[2] Los programadores familiarizados con OpenGL podrán reconocer este tipo de arquitectura cliente/servidor.

3.13.2007

El MVP Summit

Esta semana voy a estar en el MVP Summit en Seattle. En particular me llama la atención la conferencia de Anders Heljsberg sobre LINQ....

2.22.2007

Bill Gates va a dar personalmente el premio al mejor gadget mexicano para Windows Vista

Hola, hoy avisó Microsoft México que personalmente Bill Gates va a entregar el premio al mejor gadget mexicano durante su visita a México en Marzo. Así que si te llama la atención estrechar la mano del hombre más rico del mundo, este es tu chance. El consurso se cierra el 28 de Febrero que viene. Las bases están aquí.

2.19.2007

Propiedades Dependientes en WPF

En .NET 3.0 se introduce un nuevo tipo de propiedades que extienden la funcionalidad de las propiedades tradicionales del CLR de .NET. Varias de las clases de WPF exponen este tipo de propiedades. A primera vista, podemos utilizar estas propiedades de la misma forma como utilizamos propiedades cualquiera. Sin embargo, existen diferencias importantes de las cuales debemos estar conscientes para comprender mejor el funcionamiento de WPF. Las propiedades dependientes le ofrecen a la infraestructura de WPF un mecanismo simple para modificar su valor de manera dinámica. Esta capacidad de afectar dinámicamente el valor de una propiedad es utilizada por WPF para soportar la siguiente funcionalidad:

1. Soporte a Recursos

En WPF podemos establecer directamente el valor de una propiedad directamente ligada a un recurso utilizando XAML así:

<dockpanel.resources>
<solidcolorbrush color="Red" key="MiBrocha">
<dockpanel.resources/>
<button content="Soy rojo" background="{DynamicResource MyBrush}">

En este caso la propiedad Background toma su valor del recurso llamado MiBrocha. Para poder fijar una propiedad con el valor de un recurso es necesario que esta sea una propiedad dependiente.

2. Ligado a Datos (Data Binding)

El ligado a datos de WPF se establece igualmente utilizando propiedades dependientes.

<button content="{Binding XPath=Team/@TeamName}"/>

En este ejemplo el contenido del botón está ligado a una ruta específica definida con XPath dentro de una fuente de datos XML. Sin embargo, para el ligado de datos, aunque es necesario utilizar propiedades dependientes, hace falta además que estas implementen la interface INotifyPropertyChanged.

3. Estilos

El manejo de estilos de WPF depende también de las propiedades dependientes. Los estilos están relacionados con el sistema de propiedades porque típicamente contienen setters o triggers que afectan el valor de las propiedades como vimos con anterioridad.

4. Animación

La animación en WPF consiste en cambiar el valor de una propiedad a través del tiempo. Para esto WPF también utiliza las propiedades dependientes.

5. Herencia de Valores

La herencia de valores de propiedades no tiene nada que ver con la herencia tradicional de la programación orientada a objetos. La herencia de valores se trata de propagar el valor de una propiedad desde un objeto hacia sus hijos en un árbol. Por ejemplo, podemos definir una propiedad dependiente a nivel de un Grid. Los elementos que existen dentro del Grid
pueden heredar el valor de la propiedad dependiente del que se ha fijado. Esto simplifica, por ejemplo, que todos los elementos gráficos dentro de un contenedor compartan el color del fondo u alguna otra propiedad similar.

Gracias a la herencia de valores habilitada por las propiedades dependientes, los siguientes dos fragmentos de código producen exactamente el mismo resultado gráfico en WPF:

<window class="EjemplosSimples.PropiedadesDependientesDos" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock fontsize="20">Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

<window class="EjemplosSimples.PropiedadesDependientesUno" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" fontsize="20" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock>Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

¿Encuentras la diferencia? El tamaño de la fuente en el segundo caso se establece a nivel de la ventana mientras que en el primero se establece en el bloque de texto.

2.15.2007

Sáquale Provecho a la Búsqueda Integrada de Windows Vista

Windows Vista incorpora un poderoso motor de búsqueda que indexa todos los documentos existentes en la PC de manera automática. Ofrece la misma funcionalidad que Windows Desktop Search 3.0 pero viene ahora incluido con el sistema operativo. La búsqueda está presente en múltiples puntos del sistema operativo incluyendo:


· El Explorador de Archivos
· El Explorador de Internet
· Los Diálogos de Selección de Archivos
· El Panel de Control
· El Menú de Inicio


Adicionalmente, aplicaciones como Microsoft Outlook 2007 aprovechan el motor de búsqueda y se integran con él.
Como desarrolladores, podemos extender la búsqueda de Windows Vista de dos maneras:


· Podemos desarrollar aplicaciones que consuman el motor de búsqueda de Windows para presentarle resultados al usuario.
· Podemos desarrollar aplicaciones que extiendan el sistema de búsqueda de Windows para permitirle, por ejemplo, buscar nuevos tipos de documentos o con propiedades distintas.

Para desarrollar un consumidor de búsqueda la manera más simple es utilizar el proveedor OLE DB de búsqueda que viene incorporado a Windows. Es muy sencillo buscar utilizando este proveedor. Para establecer una conexión, basta con utilizar la siguiente cadena de conexión:

string connectionString = @"Provider=Search.CollatorDSO;Extended Properties='Application=Windows'";

Necesitamos saber además cual es la sintaxis que acepta este proveedor OLE DB para procesar nuestras consultas. En general, todas las consultas son de la siguiente forma:


SELECT [propiedades] FROM [nombredemaquina.]SYSTEMINDEX..SCOPE() [WHERE [predicados]]

Para nuestra fortuna, el SDK de Windows incluye un excelente ejemplo de desarrollo sobre la búsqueda que contiene una implementación básica. Este ejemplo lo podemos encontrar normalmente en C:\Archivos de Programa\Microsoft SDKs\Windows\v6.0\Samples\CrossTechnologySamples.zip\WindowsIndexSearchApp

En este ejemplo podremos encontrar las piezas más importantes que necesitamos. ¿Que columnas (propiedades) están soportadas? ¿Como especifico los predicados (filtros) de mis búsquedas?

1.17.2007

¿Cual es la relación de .NET 3.0 con .NET 2.0?

El Microsoft .NET Framework 3.0 es una extensión de la versión 2.0. No modifica sustancialmente las áreas funcionales de la versión anterior como Windows Forms 2.0, ASP.NET 2.0, la librería de clases base y el CLR. En ese sentido, el cambio de 2.0 a 3.0 es muy diferente del cambio que se había dado entre versiones anteriores. Se trata de una liberación aditiva donde se agrega funcionalidad nueva más que generacional dónde se evoluciona la funcionalidad anterior.


Image Hosted by ImageShack.us

Los elementos verdes son los que se introducen en esta nueva versión, mientras que los azules se mantienen igual que en la versión 2.0. Es importante considerar que al instalar la versión 3.0 del .NET Framework, siempre se instala también la versión 2.0 de este. Es decir, el instalador de la versión 2.0 está incluido en el de la versión 3.0. Por esta razón, la versión 3.0 es 100% compatible con la versión 2.0.

1.09.2007

Hay que apurarse - Desafío Gadget de Microsoft

Les recuerdo que el "Desafío Gadget" de Microsoft está abierto hasta el 14 de Marzo. Es una buena oportunidad de dar a conocer su talento como desarrolladores Vista. Más información en:

http://www.microsoft.com/spanish/msdn/latam/desafiogadget/terminos.aspx

1.04.2007

Service Pack 1 para Visual Studio 2005 Liberado

Recientemente Microsoft liberó el Service Sack 1 para Visual Studio 2005. Lo pueden descargar de aquí: http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&DisplayLang=en . Tiene muchas correcciones de bugs y además implementa el soporte oficial para que VS2005 funcione en Vista.

10.15.2006

¿De que se trata Windows Communication Foundation (WCF)?

Dentro del proceso de desarrollo de software uno de los aspectos más importantes que han evolucionado constantemente tiene que ver con el reuso de funcionalidad. Las técnicas para el reuso se han venido sofisticando permitiendo cada vez mayor simplicidad:


Image Hosted by ImageShack.us

Windows Communication Foundation (WCF) permite el reuso de funcionalidad y la integración de sistemas distribuidos con una facilidad de desarrollo, operación y mantenimiento antes imposible.

El esquema WCF combina un lenguaje de dominio específico (LDE) con una librería de clases para permitir el desarrollo ágil de software orientado a servicios. El LDE es el modelo de servicio y la librería de clases es la capa de canal.

Un lenguaje de dominio específico permite definir software de una manera más específica y precisa que un lenguaje de modelado general, pero únicamente dentro de un dominio específico. Por ejemplo, UML es un lenguaje de modelado general y el diseñador de Windows Forms es un lenguaje de dominio específico dirigido a la librería de clases System.Windows.Forms .

El modelo de servicio de WCF consiste de clases dentro del namespace ServiceModel y de un lenguaje de configuración basado en XML. La capa de canal se compone de clases dentro del namespace System.ServiceModel.Channel

Como desarrolladores diseñamos la comunicación de nuestros programas utilizando el modelo de servicio y los componentes de comunicación que usaremos son generados a partir de la capa de canal. Si el mecanismo de comunicación que requerimos no existe ya en la capa de canal, es posible extenderla con nuestros propios componentes de comunicación.