|
Spaces home .Net Adventure CenterProfileFriendsBlogMore ![]() | ![]() |
.Net Adventure CenterAdventures in .Net
June 09 Silverlight 2 Beta 2 y los archivos XAPLeyendo el ultimo post de Scott Guthrie sobre las nuevas features de Silverlight, note que no se hablo del cambio en el modelo de “deployment” usado para las aplicaciones Silverlight, como sabrán cuando compilamos una solución Silverlight se crea un archivo .xap el cual no es más que un zip que contiene todas las DLLs necesarias para correr nuestra aplicación, este .xap viaja hasta el browser y luego es manipulado por el engine de Silverlight el cual se encarga de correr nuestra solucion, en la siguiente imagen pueden observar el contenido de dicho archivo compilado con la Beta1. Notaran que además de la dll de nuestra aplicación, en este caso Anim.dll, también están incluidas un par de dlls con los controles usados por Silverlight. En cambio en la siguiente imagen la cual corresponde a la misma solución pero ccompilada con la Beta2 solo se puede apreciar que se incluye en el .xap la dll correspondiente a nuestra solución y su correspondiente manifest. Este approach hace que el runtime crezca un poco en tamaño, pero como contraparte tenemos que nuestras aplicaciones son más livianas, me parece un cambio inteligente, pero espero que el tamaño del runtime se mantenga controlado. En próximos posts les iré mostrando algunas de las nuevas features que se incluyen en esta Beta de Silverlight 2. June 08 TechNight: Desarrollo de aplicaciones RIA distribuidas con WCF y Silverlight
El pasado 6 de Junio junto a Edgardo Rossetto estuvimos presentando en las oficinas de Microsoft Argentina sobre desarrollo de aplicaciones RIA utilizando Silverlight y WCF, tal como prometí les dejo el código de las demos que estuvimos mostrando como así también algunos links que pueden ser de interés. Technight Demos April 18 MIX Essentials Buenos Aires
Desde su lanzamiento en 2006 MIX ha ido creciendo a paso firme, primero en Estados Unidos, el año pasado con los diversos ReMIXs en diversos lugares del planeta; este año la tendencia continua y una de las ciudades en donde se realizara una conferencia MIX Essentials será Buenos Aires. Por ahora no hay mucha información acerca de la agenda, los expositores y el lugar, lo que sí se sabe es que será el 3 y 4 de Junio, para mantenerse al tanto de lo relacionado al evento, pueden ingresar a su grupo en Facebook, revisar periódicamente la página oficialo el blog de Miguel Ángel Sáenz, por mi parte a medida que se vayan conociendo más datos los estaré compartiendo con todos ustedes. Manténganse atentos y nos vemos en MIX Essentials. April 15 Charts en Silverlight, fácil con VisifireVisifire es una suite de componentes Silverlight para la visualización de datos, los mismos son muy fáciles de implementar y pueden ser utilizados en la mayoría de las plataformas para desarrollo Web. La forma más fácil de comenzar a probar Visifire y comprobar el poder de esta suite es utilizando el Chart Designer, el cual es una herramienta online que permite la creación de charts interactivamente y cuyo resultado podemos embeber en cualquier pagina. También como es de suponer, podemos programáticamente crear charts y configurar su apariencia, ya que contamos con una gran cantidad de elementos visuales para personalizar y elegir el tipo de chart cuyo número también es muy amplio. public Page() { this.Loaded
+= new RoutedEventHandler(Page_Loaded);
public class Vendor
void
Page_Loaded(object sender, RoutedEventArgs e)
public void
CreateChart()
//Configuración de las características
visuales
//DataSource List<Vendor> people = new
List<Vendor>(); people.Add(new Vendor("Paulo", 55)); people.ForEach(delegate(Vendor v) dataSeries.RenderAs
= "Doughnut"; } Las siguientes imágenes muestran algunos de los resultados que podemos obtener al utilizar el código arriba expuesto. Doughnut Charts Pie Charts Bars & Columns Charts Para más información acerca de Visifire visiten su sitio donde encontraran gran cantidad de ejemplos, el código de la solución para bajar y su documentación.
April 10 PowerShell everywhereSi eres de esas personas que se han encariñado con PowerShell, y yo conozco muchas, pero lo echas de menos cuando trabajas en otro entorno, Pash puede ser lo que buscas, porque Igor Moochnick esta trabajando en una implementación open source de PowerShell, para que podamos usarla en Linux, MacOS X y hasta en Windows Mobile, en su blog se pueden ver algunas screenshots con ejemplos de Pash corriendo en varios ambientes. Pash está escrito para correr con .Net 2.0 y Mono, hasta el momento se encuentran implementadas cerca del 50% de las clases definidas por PowerShell y un 40% de sus funcionalidades.
Si desean colaborar, ir siguiendo el progreso del proyecto o probarlo, pueden bajar del repositorio en SourceForge las últimas versiones del código vía SVN. April 07 Heroes happen in Buenos Aires
El próximo jueves 10 de Abril se realizara en el Estadio Obras a las 19 horas el lanzamiento en Argentina de SQL Server 2008, Visual Studio 2008 y Windows Server 2008, en el siguiente link pueden registrarse al evento http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032374617&Culture=es-AR También se ha creado un evento en Facebook para poder socializar un poco antes de ir. http://www.facebook.com/event.php?eid=12445377011&ref=nf Para ir entrando en calor pueden ir dándole una mirada a los siguientes Hands on Labs. December 10 ADO.NET Data ServicesYa se encuentra disponible la primera entrega de ASP.NET 3.5 Extensions Preview, la cual pueden descargar desde aquí, seguramente el centro de todas las miradas va a estar con ASP.NET MVC, por eso no voy a hablar de él en este post, ya que tanto en los QuickStarts como en el blog de Scott Guthrie hay bastantes ejemplos e información sobre el mismo. De lo que si les voy a hablar es de ADO.NET Data Services el cual es el nuevo nombre del antes conocido proyecto Astoria, el mismo cuenta con varios cambios desde la CTP anterior, pero para mostrárselos nada mejor que comenzar con un proyecto desde cero. Antes que nada debemos tener instalado además de ASP.NET 3.5 Extensions Preview, ADO.NET Entity Framework Beta 3 y ADO.NET Entity Framework Tools Dec 07 CTP. Vamos a comenzar creando un nuevo proyecto Web como se ve en la siguiente imagen.
Luego crearemos nuestro modelo de datos
Seleccionamos la opción Generate from Database
Elegimos la base de datos a utilizar
Seleccionamos las tablas que usaremos para el ejemplo y hacemos click en Finish.
Concluido este paso ya tenemos listo nuestro modelo de datos
Luego seleccionamos la opción Add new ítem y creamos un nuevo ADO.NET Data Service
Si recuerdan mi post anterior sobre Astoria, al llegar a este punto solo debíamos indicar a nuestro WebDataService que utilice nuestro Entity Model y ya estaba todo listo para exponer nuestra data al mundo, pero en esta versión esto ha cambiado, ahora debemos autorizar explícitamente cuales tablas y qué tipo de permiso utilizara nuestro ADO.NET Data Service. En la siguiente imagen podrán ver como he referenciado a Microsoft.Data.Web y a mi modelo de datos, también pueden observar como inicializo el servicio, elijo las tablas a utilizar y el tipo de permiso que deseo asignarle.
Para este ejemplo voy a dejar que todas las tablas puedan ser expuestas es por ellos que he puesto un asterisco en lugar del nombre de una tabla en particular.
using System;
using System.Web;
using System.Collections.Generic;
using System.ServiceModel.Web;
using System.Linq;
using Microsoft.Data.Web;
using OranjeModel;
namespace OranjeDataService
{
public class Oranje : WebDataService<OranjeEntities>
{
public static void InitializeService(IWebDataServiceConfiguration config)
{
config.SetResourceContainerAccessRule("*", ResourceContainerRights.All);
}
}
}
Si presiono F5 para correr mi aplicación, podrán ver algo similar a lo expuesto en la siguiente imagen.
Podrán apreciar que el formato en que se está mostrando la información es AtomPub (Atom Publishing Protocol), este es otro de los cambios con respecto a la anterior CTP, también podemos consumir nuestro servicio utilizando JSON. Si desean investigar más sobre como exponer data a través de ADO.NET Data Services, podrán en encontrar más información y ejemplos en los ASP.NET 3.5 Extensions Preview QuickStarts. Bien, ahora que ya tenemos nuestro servicio funcionando, vamos a consumirlo, el escenario más común para hacerlo, seria en una aplicación Web, pero para este ejemplo utilizare una aplicación de consola. Vamos a crear la aplicación de consola para la demo
Luego agregaremos una referencia a Microsoft.Data.WebClient en nuestro proyecto
Como vamos a necesitar representar la entidades definidas por el Data Service, deberíamos crearlas a las mismas en nuestro proyecto, para ello utilizaremos la utilidad WebDataGen que se encuentra en la carpeta donde están instaladas las ASP.NET 3.5 Extensions Preview, ejecutaremos la utilidad y le pasaremos los siguientes parámetros.
Entre los cuales se encuentran el nombre del archivo que generaremos con las entidades y la URI donde se encuentra nuestro servicio
Finalizado el proceso ya tendremos listo nuestro modelo de datos para poder ser añadido a nuestra aplicación de ejemplo utilizando la opción Add existing item. En el archivo Program.cs de nuestra aplicación de ejemplo vamos a crear un referencia a nuestro entity model. using OranjeModel;
Para consumir los datos de nuestro servicio utilizaremos la librería Microsoft.Data.WebClient, la misma cuenta con dos clases, WebDataContext y WebDataQuery, la primera representa el contexto en tiempo de ejecución de un web data service dado, la segunda permite hacer consulta contra un servicio utilizando la sintaxis basada en URIs de ADO.NET Data Service. En el siguiente código podemos ver un ejemplo de WebDataContext y WebDataQuery en funcionamiento. using System; using System.Collections.Generic; using Microsoft.Data.WebClient; using System.Linq; using System.Text; using OranjeModel;
namespace OranjeDataClient { class Program { static void Main(string[] args) { WebDataContext ctx = new WebDataContext("http://localhost:6239/Oranje.svc"); WebDataQuery<Players> players = ctx.CreateQuery<Players>("/Players");
foreach (Players p in players) { Console.WriteLine("Number:" + p.Number + " Name: " + p.Name + " Age: " + p.Age); }
} } }
Presionando Ctrl+F5 deberíamos de obtener un resultado similar al de la siguiente imagen. Además de utilizar WebDataContext y WebDataContext.CreateQuery para consultar un Data Service tambien es posible hacer consultas utilizando LINQ, como verán en el siguiente ejemplo la librería Microsoft.Data.WebClient se encarga de mapear las instrucciones LINQ contra la URI del Data Service y recuperar los recursos especificados como objetos .NET
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OranjeModel;
namespace OranjeDataClient
{
class Program
{
static void Main(string[] args)
{
OranjeEntities ctx = new OranjeEntities("http://localhost:6239/Oranje.svc");
var q = from p in ctx.Players
orderby p.Age
select p;
foreach (var player in q)
{
Console.WriteLine("Number:" + player.Number + " Name: " + player.Name + " Age: " + player.Age);
}
}
}
}
Presionamos Ctrl+F5 y deberíamos de ver los datos de las jugadoras ordenados por edad.
Nuevamente y para finalizar les dejo el enlace a los QuickStarts donde podrán encontrar información más detallada. December 07 Review: The Laws of SimplicityEn la actualidad vemos como proveedores de servicios y fabricantes de productos tratan de lograr que los mismos sean simples de entender, simples de usar, esta tarea no es para nada simple y no quiere decir que los productos o servicios que se ofrezcan deban carecer de funciones o características, si tomamos como ejemplo al iPod el cual es el referente en lo que a simplicidad hablamos, podemos ver que de por sí es un aparato complejo, cargado de características, pero a sus vez no solo es simple de usar sino que también transmite la sensación de simplicidad. Últimamente muchos escriben sobre el concepto de simplicidad, de todo ellos John Maeda se destaca y en su libro The Laws of Simplicity nos proporciona reglas las cuales nos guían en los conceptos que conforman la simplicidad y algunos consejos para aplicarlos en nuestro trabajo diario. The Laws of Simplicity está traducido a muchos idiomas, incluido el español, se puede conseguir en Amazon o en cualquier librería de primera línea, el libro es pequeño, cerca de cien páginas y es de una lectura muy fluida con ejemplos prácticos y de la vida real. Para ir finalizando les dejo el link a la página oficial del libro donde encontraran notas y artículos relacionados con el mismo y un video con una presentación de John Maeda en TED. The Rules of Simplicity Homepage
October 28 Novedades de WPF 3.5 - Viewport2DVisual3DUna de las nuevas características de WPF 3.5 es Viewport2DVisual3D, esta nos permite tomar un objeto 2D y visualizarlo en un espacio 3D, esto lo podíamos hacer anteriormente con 3D Tools for WPF pero ahora al menos algunas de estas características son parte del framework, para mostrarles su uso, voy amigrar la demo que utilice en el Code Camp, cuyo código pueden bajar desde aquí o consultar mas en profundidad en este post, para que pase de usar 3D Tools for WPF por Viewport2DVisual3D. Pasemos a ver el código, verán que aun sigo usando 3D Tools for WPF, pero tan solo para utilizar el TrackBallDecorator, que es quien me permite mover el modelo utilizando el mouse, el resto del código es muy fácil de seguir, en el resource he creado un mesh, luego configuro la cámara, la luz y por ultimo pinto mi mesh con un MediaElement. <Window x:Class="DemoViewport2DVisual3D.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:_3DTools;assembly=3DTools" Title="Viewport2DVisual3D Demo" Height="600" Width="600">
<Window.Resources> <MeshGeometry3D x:Key="3dMesh" Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> </Window.Resources>
<local:TrackballDecorator> <Viewport3D HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Viewport3D.Camera> <PerspectiveCamera Position="0,0,4" FieldOfView="45" /> </Viewport3D.Camera>
<ModelVisual3D > <ModelVisual3D.Content> <AmbientLight Color="#FFFFFFFF"/> </ModelVisual3D.Content> </ModelVisual3D>
<Viewport2DVisual3D Geometry="{StaticResource 3dMesh}"> <Viewport2DVisual3D.Visual> <MediaElement Source="silverlight.wmv" Stretch="Uniform" Volume="0" LoadedBehavior="Play" Width="448" Height="256"/> </Viewport2DVisual3D.Visual> <Viewport2DVisual3D.Material> <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true"/> </Viewport2DVisual3D.Material> </Viewport2DVisual3D>
</Viewport3D> </local:TrackballDecorator>
</Window> Al ejecutar el ejemplo deberíamos de ver algo como lo siguiente. October 26 Code Camp Buenos Aires 2007 – El día después.Tal como prometí ayer, aquí les dejo el código de las demos que estuve presentando y algunos enlaces que les serán de utilidad.
Download Flextreme Color Selector
Espero la hayan pasado tan bien como yo en el Code Camp y nos vemos el año próximo. October 13 Un vistazo a AstoriaAstoria nos permite exponer facilmente datos a través de un servicio WCF, estos recursos los podemos navegar al estilo REST y para manipularlos utilizamos los verbos HTTP, también tenemos la posibilidad de elegir el formato en el que queremos consumir los datos, que puede ser XML, JSON o RDF. Para trabajar con Astoria necesitamos tener instalado Visual Studio 2008 Beta 2, ADO.NET Entity Framework Beta 2, ADO.Net Entity Framework Tools August 07 CTP y por supuesto la ultima CTP de Astoria. Comenzaremos creando un nuevo sitio web, como se ve debajo en la imagen. A nuestro sitio web le agregaremos un ADO.NET Entity Data Model. Seleccionamos la opción Generate from Database. Elegimos la base de datos de la cual obtendremos la data a exponer por el servicio. Seleccionamos los objetos a utilizar. Concluidos estos pasos ya tenemos listo nuestro modelo de datos. Ahora crearemos un nuevo Web Data Service. Al cual configuraremos para que utilice nuestro modelo de datos. using System; using System.Collections.Generic; using System.Data; using System.Data.Objects; using System.ServiceModel.Web; using System.Linq; using Microsoft.Astoria;
namespace AstoriaDemo { public class OranjeService : WebDataService<OranjeDataModel> { } } Para finalizar seteamos como Set As Start Page al mismo, luego abrimos el archivo web.config y agregamos la siguiente línea dentro de la sección appSettings, para poder consultar los datos en formato JSON. <appSettings> <add key="EnableAstoriaJSONP" value="true"/> </appSettings> Presionamos F5 y deberíamos obtener las referencias a nuestras entidades de datos, en este caso Players y Clubs. Si quisiera ver el listado de todas las jugadoras solo debo ingresar la siguiente Uri. http://host/OranjeService.svc/Players También podemos utilizar algunos filtros para procesar los datos, por ejemplo si quisiera obtener el listado de jugadoras ordenadas por posición, solo debo ingresar la siguiente consulta. http://host/OranjeService.svc/Players?$orderby=Position Si queremos ver los datos de la jugadora con el PlayerId 11. http://host/OranjeService.svc/Players[11] Y por ultimo para obtener datos en formato JSON lo hacemos de la siguiente manera. http://host/OranjeService.svc/Players[11]?$format=json [ { __metadata: { Type: "Players", Base: "http://localhost:49183/OranjeService.svc", Uri: "Players[11]" }, Age: 28, Caps: 242, Clubs: { __metadata: { Uri: "Players[11]/Clubs" } }, Description: "Minke Smabers (born March 22, 1979 in Den Haag, Zuid-Holland) is a field hockey midfielder from the Neth | |||