Archive

Posts Tagged ‘Silverlight 3’

Utilizar Autenticación de ASP.NET desde Silverlight

March 24th, 2010 2 comments

En este artículo muestro como utilizar la autenticación de ASP.NET desde Silverlight a través de sus servicios web y WCF.
Ver el artículo completo aquí

Categories: General Tags: , , ,

Photosynth en nuestra app de Silverlight

March 11th, 2010 4 comments

Photosynth es una herramienta muy interesante que nos ayuda a crear panoramas semi tridimensionales de una manera muy sencilla (solo seleccionas un conjunto de fotos de un mismo lugar y las subes).

El otro día mi amigo Jorge Levy estaba desarrollando una aplicación de Silverlight para una empresa de Tamales. Dicha aplicación cuenta con una página de contacto, donde muestra un control de Bing Maps y una opción para ver la fachada del local. Lo malo de esto es que para ver la fachada, el link te lleva a la página de Photosynth donde puedes ver el synth del local.

Me pareció una buena idea, pero no me gustó el hecho de que no pudieras ver el synth dentro de la aplicación. Me di a la tarea de investigar una forma de hacer esto. Primero pensé, en Silverlight 4 beta es posible poner contenido HTML, pero esto tiene dos problemas actualmente. Primero, ¡Es BETA! por lo que para ver la página estarías obligando al usuario a buscar el runtime de SL4Beta (pues en la página te dan la liga para instalar la última versión estable). Segundo, esta funcionalidad solo funciona fuera del navegador, lo cuál tampoco queremos, pues no queremos forzar al usuario a instalar una aplicación nada más para esto.

Pues bien, después de buscar y buscar, encontré este post donde aprendí sobre la existencia de un control gratuito llamado HtmlHost. Todo lo que hay que hacer es descargar el zip y descomprimirlo en su lugar predilecto para librerías.

Para una pequeña demostración, vamos a crear un proyecto nuevo de Silverlight, y vamos a agregar como referencia el emsamblado que acabamos de descargar: Divelements.SilverlightTools.dll

image

Después abrimos MainPage.xaml en Blend para hacer una layout rápido:

image

Aquí tenemos una versión resumida del XAML:

En la línea 6 estamos agregando el namespace del control HtmlHost y en la línea 17 es donde colocamos y nombramos nuestro control.

Ahora necesitamos asignar un valor a la propiedad SourceHtml del HtmlHost. Vamos a usar el mismo código que nos da Photosynth como si lo fueramos a poner en una página Html común y corriente:

image

image

Y en el code behind vamos a asignar esa cadena a la propiedad antes mencionada:

Como podemos ver tuvimos que hacer unos cambios a la cadena, primero tenemos que cambiar todas las comillas dobles, por comillas sencillas. También cambiamos el parámetro delayLoad a false y el with y height a 100%.

Si en este momento corren el proyecto, funcionará bien, pero verán un cuadro de dialogo con la siguiente advertencia:

image

Para corregir esto solo tenemos que ir a nuestro aspx de nuestro proyecto web:

image

Y en la sección del div llamado silverlightControlHost vamos a agregar un parámetro:

Pueden ver un demo en vivo aquí y descargar el código aquí.

[Artículo orignal aquí.]

Globalización y localización en Silverlight

January 8th, 2010 No comments

En este artículo comento cómo crear una aplicación Silverlight con distintos formatos de fecha, números, textos, etc. según el idioma del usuario, y cómo establecer esos textos directamente en el XAML de forma similar a como lo hacemos en ASP.NET.
Ver el artículo completo aquí

Silverlight3: WCF Ria Services.- Mostrar datos (Parte 3)

December 29th, 2009 12 comments
Una vez que nuestra aplicación web esta configurada y exponiendo los datos desde la base de datos, ahora si veremos como consumir el servicio que nos ofrece y como mostrar datos en nuestra aplicación Silverlight. Indice:
Introducción (Parte 1)
Obtener datos desde la BD (Parte 2)

Aplicación Silverlight

Como ya lo hemos comentado, la aplicación silverlight que el template ‘Silverlight Business Application’ no entrega ya cuenta con el ‘Framework de Navegación’. En esta ocasión estaremos trabajando únicamente en nuestra página ‘Home.xaml’.

Origen de Datos de Dominio (Domain Data Source)

Lo primero que necesitamos agregar es un control llamado DomainDataSource el cual viene incluido en los asemblies que Ria Services nos entrega.

Dll:System.Windows.Controls.Ria
Namespace: xmlns:riacontrols=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria”
Namespace: xmlns:ds=”clr-namespace:BusinessApplication1.Web.Services”

Este control será el encargado de contener los datos que la aplicación web expone a traves de la Clase de Servicio de Dominio. Le pondremos un nombre (x:Name=”MyData”), indicaremos la cantidad de registros a pedir en cada llamada (LoadSize=”20″), que queremos obtenga el primer bloque de registros cuando sea cargado (AutoLoad=”True”), y que utilice la función de GetAlbums (QueryName=”GetAlbums”)

También le indicaremos que el Origen de Datos será nuestro Contexto de Dominio desde la aplicación web.

*Nota: como este es un control no visible, lo podemos poner justo despues de donde se define el grid principal de la página.

Mostrando los datos en un DataGrid

Una vez que tenemos los datos en nuestro DomainDataSource, estos los podemos mostrar en un control DataGrid.

Dll:System.Windows.Controls.Data
Namespace:xmlns:datagrid=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data”

Nuestro DataGrid tendra un nombre (x:Name=”OrdersGrid”); será solamente de lectura (IsReadOnly=”True”); y lo más importante, el origen de datos estará enlazado con nuestro Domian Data Source (ItemsSource=”{Binding ElementName=MyData, Path=Data}”)

Ejecutando la apliación

Y listo, ahora si ya tenemos nuestra primera aplicación Ria Services lista para ser ejecutada.

Siguientes post…

Aunque ya tenemos una aplicación que correo sobre Ria Services, apenas estamos calentando motores, en los siguientes post estaremos hablando de cómo hacer paginación de los datos mostrado, cómo crear filtros, cómo mostrar los detalles de un registro, etc, etc, etc…

Saludos…

Silverlight3: WCF Ria Services.- Obtener datos desde la BD (Parte 2)

December 24th, 2009 6 comments
Y bien, después de nuestro post de introducción, en este abordaremos como comenzar a trabajar con Ria Services para obtener los datos desde la base de datos, y como mostrarlos en nuestra aplicación Silverlight. Indice:
Introducción (Parte 1)

‘Silverlight Business Application’ template

Lo primero que necesitamos mencionar es que el framework de Ria Services nos ofrece un template que nos entregará una solución totalmente configurada para comenzar a trabajar. Esta solución viene ya incluso con las siguientes características:

  • La solución está compuesta por dos proyectos, una aplicación web y una aplicación Silverlight. La aplicación web será la encargada de la conexión y acceso a la base datos, así como la que proyectará los datos hacia la aplicación silverlight, que será la que le de vista a estos.
  • La aplicación Silverlight que nos entrega esta creada sobre el framework de navegación (para leer sobre el Framework de Navegación puedes ir a estos post)
  • Servicios de manejo de usuarios (membership) ya están incluido. (estos los veremos cómo usar y modificar en un post posterior)

SilverlightBusinessApplication

Y bien, para poder acceder a los datos desde nuestra aplicación Silverlight, es necesario crear “en nuestra aplicación web” un modelo de datos y proyectarlos desde nuestra aplicación web con una clase de servicio de dominio.

Modelo de Datos

Lo primero que haremos es crear un modelo de nuestra base datos. Esto será, como ya lo hemos mencionado, del lado de nuestra aplicación web. En esta ocasión agregaremos un nuevo elemento del tipo ‘ADO.NET Entity Data Model’. Le pondremos por nombre ‘RIAModel.edmx’.

AdoNetEntityDataModel

Esto nos lanzará un asistente. En el primer paso nos permitirá seleccionar el contenido de nuestra modelo, en esta ocasión seleccionaremos que sea generado desde una base de datos.

EntityDataModelWizard1

En el siguiente paso del asistente configuraremos los datos de conexión de la base de datos.

*Yo usaré la base de datos de Northwind que pueden encontrar en el web para su descarga.

EntityDataModelWizard2

En el tercer paso del asistente, seleccionaremos los objetos que queremos estén incluidos en modelo de datos. Además configuraremos el Namespace del Modelo.

*Para nuestros propósitos por ahora solo seleccionaremos la tabla de órdenes (Orders), y nombraremos el Namespace del Modelo como: RiaModel

EntityDataModelWizard3

Al terminar el asistente tendremos un esquema del modelo de datos como este:

EntityDataModel

Para terminar con esta parte, tendremos que compilar el proyecto. Ya que para la siguiente sección, es necesario tener nuestro modelo de datos ya disponible.

Clase de Servicio de Dominio

El siguiente paso en el que trabajaremos será el encargado de proyectar los datos desde nuestra aplicación web hacia nuestra aplicación silverlight. Y esto lo lograremos agregando un elemento del tipo ‘Domain Services Class’, el cual añadiremos a nuestro proyecto web en la carpeta llamada ‘Services’.

DomainServiceClass

Al agregar este tipo de clases, nos lanzará un pequeño asistente que nos permitirá seleccionar los elementos configurados en nuestro Modelo de Datos que queremos sean proyectados por medio de un servicio, así como una opción para permitir sean editados. Además de que también nos ofrece la opción de crear las clases asociadas para los metadatos de los objetos (dedicaremos un post a este tema).

*Si no se muestra ninguno de los elementos configurados anteriormente es probable que el proyecto no fuera compilado previamente.

DomainServiceClass1

Los elementos que nos entregará serán un par de clases, en mi caso: RiaDomainService.cs y RiaDomainService.metadata.cs. Como lo comente, la segunda de ellas la abordaremos con mayor detalle en un post posterior. Pero de la que si necesitamos hablar es de la de RiaDomainService.cs.

Lo que podemos platicar hasta este momento de esta clase es que:

  1. Como podemos ver, está etiquetada con [EnableClientAccess()], ya que pedimos fuera editable.
  2. Nos crea 4 funciones básicas: GetOrders(), InsertOrders(), UpdateOrders() y DeleteOrders(). El típico ABC de una base de datos.
  3. Esta clases es 100% modificable para nuestros propósitos. Así pues por ejemplo, si quisiéramos que nuestro método GetOrders() nos regrese los registros de manera ordenada, solo bastaría modificarla de tal modo que quedaría:

Continuará…

Ya hemos configurado nuestra aplicación web para proyectar los datos, en nuestro siguiente post ahora si comenzaremos a consumir estos datos y a mostrarlos desde nuestra aplicación silverlight…

Saludos

Silverlight3: WCF Ria Services.- Introducción (Parte 1)

December 24th, 2009 No comments

Este es el primero de varios post que estaré escribiendo referente al tema de Ria Services para Silverlight 3 (también abordare Ria Service para Silverlight 4 Beta). Si bien el tema ha sido abordado en muchas páginas y blogs, la mayoría de ellos están en inglés, así que aquí una propuesta en español. Además de que trataré de hacerlo de manera ordenada y sencilla de tal modo que sea entendible (o al menos en la forma en la que yo he ido aprendiendo sobre el tema).

Que es Ria Services?

Ria Services es un framework que provee una serie de funcionalidades (dlls, templates, etc) que permiten acceder datos en una Aplicación Silverlight desde una Base de Datos. Esto es gracias a su implementación en modelo de capas (n-tier application), donde Ria Services trabaja en las capas intermedias ofreciendo control de acceso, cambios y operaciones definidas por el usuario, así como funciones de de validaciones, autentificación de usuarios y roles en las capas superiores.

Referencia: http://silverlight.net/riaservices/

WCF Ria Services Beta/Preview

Junto con el lanzamiento de Silverlight 4 Beta en el PDC09, el equipo de Microsoft hizo el anuncio de la disponibilidad de WCF Ria Services en su versión Beta para Silverlight 3 y versión Preview para Silverlight 4.

De donde viene el WCF? Esto es debido a que ahora Ria Services es parte de la familia WCF Data Services, en donde WCF = Windows Communication Services (anteriormente ADO.NET Data Services). Dando así a entender que lo que quieres es ofrecer una tecnología basada en hacer servicios en la plataforma .NET.

Si bien el cambio más notorio viene en el WCF, el equipo de desarrollo presume que los cambios en el framework son basados en la retroalimentación de nosotros los usuarios de la tecnología. Cambios como mostrar nuestros servicios en la pantalla de Data Sources y poder arrastrarlos a nuestras formas para ser consumidos (solo disponible para VS2010 beta 2), entre muchos otros.

Referencia: http://blogs.msdn.com/brada/archive/2009/11/18/welcome-to-wcf-ria-services-beta.aspx

Página Ria Services, instaladores y recursos de aprendizaje

La principal página de Ria Services la podemos encontrar en http://www.silverlight.net/riaservices. En donde podemos encontrar los instaladores para WCF Ria Services para Silverlight 3 (VS2008) y Silverlight 4 Beta (VS2010Beta2). Así como una serie de recursos de aprendizaje (videos, documentos, blogs, etc).

Recursos para trabajar en Ria Services

Estos son los recursos que necesitamos para poder trabajar en Ria Services:

WCF Ria Services Beta para Silverlight 3:

Visual Studio 2008 (inclusive la version express)
Silverlight 3 Tools
Silverlight 3 Toolkit November 2009
WCF RIA Services Beta (Incluido en el Silverlight 3 Tools)

WCF Ria Services Preview para Silverlight 4 Beta:

Visual Studio 2010 Beta 2
Silverlight 4 Beta Tools
Silverlight 4 Beta Toolkit November 2009
WCF RIA Services Preview for Visual Studio 2010 Beta 2

Continuará…

Si bien en este primero post no nos hemos adentrado (codificado) en la tecnología. No podemos dejar de lado la información contenida en este.

Para nuestro siguiente post si estaremos trabajando ya con código.

Saludos

Llamar a funciones de JavaScript desde Silverlight y a métodos de Silverlight desde JavaScript

December 12th, 2009 No comments

Al desarrollar con Silverlight muchas veces necesitamos que nuestro control interactúe con el resto de la página, por ejemplo, con un botón de HTML o con un DIV, colocando dentro algún texto, o puede darse el caso que necesitemos llamar a algún método de nuestra aplicación Silverlight al ejecutarse algún evento de la página. En este artículo comento cómo hacerlo.
Ver el artículo completo aquí

Categories: General Tags: ,

Habilitar Assembly Caching en Silverlight 3

October 22nd, 2009 No comments

Una de las muchas nuevas caracteristicas de Silverlight 3, es la posibiildad de habilitar la caracteristica Assembly Caching, la cual nos permite indicarle al navegador que cargue los ensamblados que nuesta aplicación necesita(archivo .xap) bajo demanda y no todos al cargar la página, como funcionaba en la versión 2.0.

Para lograr esto, solo debe seleccionarse la opción “Reduce XAP size by using appication library caching”, en el apartado de propiedades de nuestro proyecto Silverlight. También debemos notar como ahora se crean archivos con extensión.zip para cada uno de los ensamblados que la aplicación ocupa y que serán descargados bajo demanda.  Como se puede observar a continuación:

Cuando la opción no es seleccionada, el archivo resultante xap, es más grande que cuando la opción es seleccionada. Como se puede ver en las siguientes imágenes comparativas.

Opción NO habilitada

Opción habilitada

Pongamos especial atención en el archivo AppManifest.xaml y la sección Deployment.ExternalPart, en la cual se indica cuales son los ensamblados que nuestra aplicación referencia y que serán descargados cuando así se requiera, estos son los ensamblados “cacheados”. Sin embargo noten que hay algunos ensamblados que no son marcados para ser cacheados, como: CachedAssembly.dll o los ensamblados del silverlight toolkit.

Para que esto suceda se debe crear el archivo XXXX.extmap.xml. Y después de crearlo recompilar el proyecto, y automáticamente se creara el archivo XXXX.zip, el cual será copiado a la carpeta ClientBin de la aplicación ASP.Net.  Para facilitar un poco esto, puedes ocupar la utilería Emm, la cual crea automáticamente el archivo XXXX.extmap.xml a partir de tu ensamblado ejecutando un comando como el siguiente:

Nota, para el correcto funcionamiento de esta utilería, el ensamblado debe tener un SN (strong name)

Además también se puede usar para los ensamblados del Silverlight Toolkit, de esta forma solo se descargaría en primera instancia nuestro ensamblado y todos los demás ensambados seria descargados “on demand”. Ejemplo:

En resumen, esta característica es muy poderosa para el mejor desempeño de tus aplicaciones silverlight.

Descargar solución de Ejemplo

Happy Coding!

Visual Studio 2010 Beta 2 y Silverlight

October 20th, 2009 No comments

Con la llegada de VS2010 Beta 2 para subcriptores MSDN a partir del lunes 19 de Octubre y para publico en general a partir del Miercoles 21 de Octubre, lo referente al tema de Silverlight no se puede dejar de lado. Así que aquí algunas notas sobre este lanzamiento desde la perspectiva de Silverlight.

Herramientas Silverlight ya incluidas en el core de Visual Studio 2010 Beta 2

Lo primero que salta a la vista es que VS 2010 Beta 2 YA incluye Silverlight desde su instalación. Lo que podemos encontrar en nuestra instalación es:

  • El SDK de Silverlight (Silverlight 3 SDK)
  • y las hermientas de Silverlight en su build 40818 (Silverlight 3 Tools)

Sin embargo no todo es hojuelas sobre miel, pues no todo lo referente a Silverlight está incluido, aquí lo que se quedó fuera para esta versión:

  • el Toolkit de Silverlight (Silverlight Toolkit)
  • y los Servicios .Net Ria (.Net RIA Services)

Caracteristicas incluidas en VS2010 Beta 2 para Silvelight.- Editor visual de archivos xaml.

Dentro de las caracteristicas incluidas en VS2010 Beta 2 para Silverlight está la de no solamente regresar el visualizador de archivos xaml, sino la de agregarle funcionalidad que nos permitirá editar este tipo de archivos.

Expression Blend seguira siendo el Editor Visual de archivos xaml por excelencia, sin embargo podremos tener la capacidad de hacer pequeñas modificaciones al diseño desde VS2010 Beta 2

Lo que dejaron fuera de VS2010 Beta 2

Como ya se comento fueron dos herramientas las que se dejaron fuera del instalador de VS2010 Beta 2. En lo que respecta al Toolkit de Silverlight, la última version, también liberada el lunes 19 de Octubre, la cual pueden obtener aqui, es totalmente soportada. Así que la podemos bajar y comenzar a utilizar en nuestros proyectos.

Lo que tristemente nos enteramos es que los respectivo a Servicios .Net Ria (.Net RIA Servicces) todavía no esta soportador por esta version de Visual Studio. Sin embargo, ya se tiene planes para incluir este tipo de proyectos en un futuro. Así que estemos atentos a la información que se ira generando entorno al tema.

Licencia “Go-Live”

Aunque no es especificamente referente a Silverlight, si hacer mención que esta version de VS2010, viene con Licencia ‘Go-Live’ lo cual nos permite enviar nuestros proyectos a producción. Y los proyectos Silverlight no son la excepción.

Notas finales

Mucha información se esta generando y se generará en los proximos días respecto a este lanzamiento. Mi recomendación es que bajen el Visual Studio 2010 Beta 2 en cuantos tengan oportunidad y comencemos a picarle, pues como es de esperarse no solo trae mejoras para Silverlight (pero ese es tema de otro foro).

Saludos…

Tip : TreeView (Nodos Expandidos por Default)

September 16th, 2009 No comments

Mostraremos como podemos hacer que un Treeview tenga todos sus nodos expandidos por Default.

En la practica el TreeView nos es muy útil para presentar información agrupada jerárquicamente, el usuario puede navegar de manera ordenada sobre las distintas ramas y sub-ramas de las que se compone el árbol …

Desarrollando una aplicación donde el TreeView solo es de dos niveles 

Padre – Hijo

Me tope con un requerimiento del usuario el cual consistía en  mostrar todas las ramas del árbol expandidas por default ya que la profundidad de árbol es muy corta y  es mas sencillo para el usuario si se le presenta toda la información  para que  no tenga que hacer Expand a cada nodo.

Para cumplir tal requerimiento les recomiendo hacer lo siguiente:

Paso 1.

Creamos dos clases que hereden de las clases TreeView y TreeViewItem respectivamente.


Nota: Si les muestra un error en el atributo IsExpanded , agreguen a sus referencias la librería System.Windows.Controls.

Paso 2.

Agreguen a los ensamblados del Xaml donde utilizaran el árbol los dos siguientes espacios de nombres.

xmlns:Arbol="clr-namespace:ArbolAutoExpandible"

xmlns:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"

Esto para hacer referencia a las clases que creamos en el paso 1.

Paso3.

Declaramos nuestro árbol expandible.


Como podrán darse cuenta en el Xaml estoy declarando en los Resources de la Pagina dos elementos llamados HierarquicalDataTemplate   esto permite crear templates que como contenido tienen otro template.

El primer HierarquicalDataTemplate contiene un TextBlock el cual  esta designado a mostrar en este caso las distintas marcas de automóviles.

Podemos observar que en la propiedad ItemTemplate estamos haciendo referencia al segundo HierarquicalDataTemplate  que a su ves contiene otro TextBlock el cual mostrara los modelos  correspondientes a cada marca de Automóvil.

Nota : Para fines de este post primero declare el HierarquicalDataTemplate Marca  y después el HierarquicalDataTemplate Modelo, para explicarles de mejor manera, pero al momento de compilar inviertan el orden de los templates para evitar un error de ejecución.

 

Ya dentro del LayoutRoot esta declarado nuestro árbol creado en el paso 1 y agregado a los ensamblados en el paso 2,  en su propiedad ItemTemplate debemos hacer referencia al primer HierarquicalDataTemplate (MarcasTemplate), para que al momento de hacerle Binding automáticamente tome como nodos padre las Marcas y como nodos hijos los modelos de los Automóviles.

 

Paso 4.- Mostrando Datos

Ya que tenemos creada toda la estructura del árbol solo queda hacer el atado de los datos que se mostrarán en el árbol ( Con todos los Nodos Expandidos por Default).

Para este ejemplo crearemos dos clases una llamada Marcas y otra llamada modelos.


Marca contiene un atributo para la descripción y una lista de objetos de tipo Modelo  que a su ves tiene un atributo para la descripción del modelo.

Llenamos la lista de objetos


Hacemos el atado de datos al Árbol


Y el resultado es el siguiente.

image

De esta manera el utilizamos la clase HierarquicalDataTemplate y al mismo tiempo forzamos al árbol a mostrar todas las ramas expandidas por default al momento de cargar por primera vez.

Espero les sea útil

Categories: General Tags: , ,

Silverlight 3 GDR2

September 2nd, 2009 2 comments

Leyendo a Tim Heuer leo sobre el lanzamiento de una actualización al runtime y SDK de Silverlight 3, el mismo se llama Silverlight 3 GDR2 (versión 3.0.40818.0).

Esta versión trae algunas mejoras a nivel de multimedia o conectividad, pero lo más importante es GB18030, que es un estándar del gobierno de China sobre el soporte de sus caracteres nacionales.

Esta modificación no trae complicaciones para las aplicaciones ya creadas, salvo que cambiemos el parámetro minRuntimeVersion del objeto a 3.0.40818.0 donde si el usuario necesitará descargar esta nueva versión.

Para los desarrolladores, es necesario actualizarse a la última versión disponible del development runtime. Silverlight Tools no ha sufrido cambio alguno y el SDK tiene pequeños cambios que no son obligatorios instalar si uno así lo desea.

A continuación los links para descargar las nuevas versiones

Developer Runtime

SDK

Categories: General Tags:

Documentación de Silverlight 3 en Español

August 31st, 2009 No comments
Categories: General Tags: ,