Silverlight al fin!!!

|

Desde hoy esta disponible Silverlight 1.0 en su version final, MS decidio al fin liberarlo, pero lgo que no esta disponible es el mini CLR que va dentro, este va a estar incluido en su version 1.1, tendremos que esperar un poco, pero tambien se anuncio que MS si esta colaborando con Novel para la version para Linux Moonlight a pesar de que no es un producto de MS...

Mis aventuras con AutoCAD MAP 3D 2008 y .NET 2.0

|

En estos meses he estado desarrollando un proyecto para uno de nuestros clientes, y por esas cosas de la vida he incursionado en el mundo GIS, ahora tengo muy claro todo el panorama pero al principio no tenia ni por donde irme!! Fue realmente dificil salir del apuro, por cuanto tenia que poner a funcionar AutoCAD MAP 3d 2008 e integrar datos graficos y de otros tipos en una sola interfaz, afortunadamente este paquete CAD soporta que ejecutes codigo .NET en su ambiente, claro sujetandose a ciertos wrappers que te provee el mismo vendedor, y no puedes bajarlos vienen con el paquete, y a cierta interoperabilidad COM....
Primero que nada quiero referenciarlos a otro blog que me salvo la vida: Through the Interface, http://through-the-interface.typepad.com/ este pertenece a un miebro de AutoDesk y claro tiene acceso de primera mano a todo lo relacionado con el CAD y de paso es un muy buen conocedor del .NET lo cual ayuda mucho...

Tambien he decidido hacer varios post sobre el tema tratando de seccionar los temas en un orden adecuado para explicar las relaciones y conceptos de Acad MAP con .NET 2.0, esto es para no asimilar mucha informacion de golpe!!

Los temas que tratare van a dividirse asi:

AutoCAD sus versiones y su relacion con .NET
AutoCAD MAP 3d 2008 y sus caracteristicas .NET
GIS con AutoCAD MAP 3d 2008 y .NET usando Oracle Spatial

Espero que estos siguientes posts les sirvan!!!

SDK para OpenXML

|

Hace unos meses tuve el gusto de ir a Bogota a recibir un entrenamiento sobre OpenXML, fue realmente interesante pero en ese momento me asalto una gran duda, como hago para que la construccion del documentos basados en OpenXML sea facil para un programador?? Claro como ustedes saben OpenXML se basa en un paquete Zip que contiene archivos XML para describir todo lo que contiene el documento, pero claro generar esto solo con las funciones XML de .NET era algo bastante duro, pero mis plegarias fueron atendidas!!
Se ha generado ya un SDK que esta en CTP para poder construir documentos basados en OpenXML con un modelo de objetos fuerte, lo cual quiere decir que no tenemos que conocer todos los tags y estructuras de la espcificacion y menos aun construir a mano los archivos XML!!!
Es cierta tanta maravilla?? Compruebenlo ustedes mismo!!

http://blogs.msdn.com/erikaehrli/archive/2007/06/04/announcing-the-new-open-xml-object-model.aspx

Traductor OpenXML a ODF

|

Conocen de los formatos OpenXML y ODF?? Pues OpenXML es el formato que usa Office 2007 para almacenar sus documentos, este es de especificacion abierta y es muy sencillo de usar, ODF es similar pero es una iniciativa de la comunidad Open Source, no hay que negar que hay una batalla por la aceptacion de estos 2 formatos, MS claro esta facilitando la adopcion de estos con iniciativas como el Traducto de OpenXML a ODF, este lo puedes encontrar aqui:

http://sourceforge.net/projects/odf-converter

Tambien es un proyecto Open Source y ya tiene un buen avance, pruebalo!!!

El CTP de Visual Studio Team System "Rosario" ha sido liberado!!

|

Este release apunta a mejorar el manejo del ciclo de vida del desarrollo de las aplicaciones incluyéndole muchos features en cuanto al manejo de WorkItems, manejo de requerimientos y mejora en las pruebas y manejo de dependencias, esto agregado a Orcas mejora increíblemente la predictibilidad de un proyecto en todos los aspectos sin dejar de brindar una espectacular visibilidad a quienes manejan el proyecto...

Un whitepaper con detalles mas completos puede ser encontrado aquí:
http://www.microsoft.com/downloads/details.aspx?familyid=0ADE6C5D-BE17-4168-B57B-4C2FA36EAD3E&displaylang=en

Y el VPC bajalo aqui:

http://www.microsoft.com/downloads/details.aspx?FamilyId=8450EFF5-24AD-44C3-AB91-1ED88EF2F4F0&displaylang=en

Llamar a un Servicio Web en forma Asincronica

|

Es muy común en nuestros días que se cuide mucho de la apariencia de las aplicaciones, una de las técnicas muy amplia mente empleadas para esto es la llamada asincrónica a los procesos, esto claro le da al usuario la comodidad de que su interface no se bloquee y claro de una buena impresión, también un efecto importante es que el usuario siente la aplicación que funciona mas rápido, aunque esto no sea verdad!!!

Siendo esto así, se han hecho muchos artículos de como usar esta técnica, en algunos de los casos he notado que los hacen de una forma bastante compleja para los principiantes (delegados, métodos anónimos, etc...) entonces decidí mostrar como ejecuto yo esta técnica consumiendo un Servicio Web desde una forma Windows, para lo cual escribí este código:

//Instancia del Servicio Web Referenciado
//Este tambien puede ser agregado como un componente desde el diseño de la forma
MDMQ_BC.Service objService = new Service();

private void Load()
{
//Este metodo debe ser ejeutado una sola ves en la vida de la forma, puede ser en el Constructor
//Event Handler necesario para ejecutar acciones cuando llegue la respuesta
objService.ConsultaNombresCompleted += new ConsultaNombresCompletedEventHandler(objService_ConsultaNombresCompleted);
}

void objService_ConsultaNombresCompleted(object sender, ConsultaNombresCompletedEventArgs e)
{
//Preguntamos si la consulta fue bien
if (e.Error == null)
{
//Si la consulta se ejecuto sin problemas revisamos el resultado de la misma
if (e.Result.Codigo_error == "0")
{
//Si el resultado del proceso es correcto mostramos los datos
MessageBox.Show("Los datos estan correctos");
}
else
{
//Si el resultado del proceso no es correcto mostramos la razón
MessageBox.Show(e.Result.Codigo_error + ": " + e.Result.Texto_error);
}

}
else
{
//Se muestra el error, en una aplicación consistente se debe tambien guradar los detalles del error
//con una estrategia de Loggin correcta (EventLog, Archivos, Mails, etc...)
MessageBox.Show("Ha ocurrido un error realizando la consulta. " + e.Error.Message);
}

}

private void CallAsync()
{
//Lamada al metodo asincronico, este se ejecuta y el Event Handler maneja la respuesta cuando llegue
objService.ConsultaNombresAsync("LOMAS");
}

Aqui unas aclaraciones:
MDMQ_BC es un NameSpace que contiene los objetos que se crean cuando se hace referencia a mi servicio Web de Pruebas, este contiene el Objeto Service que es el proxy que hace las llamadas al Servicio, así mismo tiene métodos que ejecutan las operaciones que posee el Servicio, tanto de modo sincrónico como asincrónico, estos están claramente diferenciados pues el método asincrónico tiene un sufijo "Async"...

Si bien la respuesta va a ser manejada por un método es importante mostrarle al usuario que se esta ejecutando la operación como también que se ha completado, para esto se puede tener un PictureBox con un gif animado que mientras la operación se ejecuta esta visible y cuando esta termina se vuelve invisible al Picturebox, también sería conveniente bloquear controles que ejecuten otras operaciones...

También hay que tomar en cuenta que siempre se deben tener estrategias claras de manejo de excepciones y loging, así la operación de tu aplicación sera consistente y tendrás datos completos y detallados de que sucedió, en este caso del ejemplo hay una estrategia simple que solo muestra el error pero te hace acuerdo que hace falta mas trabajo sobre el tema...

Algo importante que debo mencionar que si se fijan bien no van a encontrar ni una sola estructura try - catch, eso es importante para el performance de la aplicación, en lo posible no se deben usar estos bloques por que aunque no se note siempre degradan el funcionamiento del código, y su finalidad es encontrar EXCEPCIONES no controlar el flujo normal de una aplicación...

Espero que les sirva este codigo y si desean comentar, adelante!!

El nuevo Coldfusion 8 soporta .NET!!!

|

Este servidor de aplicaciones web dinamicas de 12 años de edad en su nuevo release ha incorporado la capacidad de llamar objetos .NET nativamente, antes solo se podía hacer esto con objetos Java, muchos productos de otras compañías han tomado este rumbo hace bastante tiempo, por que tardo tanto Adobe???

El articulo completo aquí:

http://www.ftponline.com/channels/net/2007_07/jwaters/

Visual Studio Beta 2 ha sido liberado!!!

|

La semana pasada se esperaba que sea liberado Visual Studio 2008 Beta 2, Orcas, a diferencia del Beta 1, que contiene updates como LinQ, VSTO para Office 2007, Ajax, etc... Este tiene incluido ya Silverlight y unos updates al Framework 3.5, la entrega final se propone que sea en Febrero del 2008, junto con SQL Server 2008 y Windows Server 2008, pero hay rumores de que estará listo antes!!! Si es así WOW!!!

Quieren bajarlo??? Aquí esta el link!!!

http://msdn2.microsoft.com/en-ca/vstudio/aa700831.aspx

Quieres usar JSON con tus servicios Web??

|

Con la aparicion de Ajax se cambiaron algunos paradigmas y claro se crearon otros, por ejemplo el intercambio de mensajes entre los servidores y clientes es bastante pesado especialmente cuando tienes un viewstate muy grande, y asi por esas cosas de la vida nace JSON (Java Script Object Notation), por default tus servicios web .net no los aceptan, pero aqui esta un articulo que te permite hacer que funcione!!!

http://www.ftponline.com/channels/net/2007_07/dwahlin3/

Data Access Layer con LinQ a SQL

|

Desde hace algun tiempo se viene dando el fenomeno del paso de los objetos planos a capas de acceso a datos mucho mas estructuradas las cuales ahorran tiempo y esconden la logica por detras de acceso a la base de datos, esto ya era posible con NHibernate, ahora con el anuncion de VS 2008 y el Framework 3.5 se ha incluido LinQ, aqui hay un articulo que muestra como se construye una DAL con LinQ a SQL de un modo rapido y sencillo...

http://www.ftponline.com/vsm/2007_07/magazine/features/rjennings/