Programación y Estrategias de Negocios RSS 2.0
# Saturday, April 11, 2009


Share

Me gusta mucho el conjunto de guías de arquitectura de soluciones .Net del grupo de Patterns and Practices de Microsoft. El documento principal es La Guia de Arquitectura Version 2.0a, una de las principales razones por las que me gusta esta guía es por la definición de cómo encajan los diferentes elementos o tipos de arquitecturas juntas en un esquema que es sencillo pero muy elegante y que se resume en este gráfico:

Elementos Arquitectura

Al segmentar las aplicaciones por tipos (más o menos obvio no?), y separar los conceptos como estilos de arquitectura, atributos de calidad, tendencias etc., se obtiene una forma más sencilla de explicar porque se hace una aplicación de una forma y no de otra, lo que en general podemos decir que es la arquitectura. Una de las secciones más interesante tiene que ver con los estilos de arquitectura (sobre el que profundizare más adelante) ya que establece las diferencias entre elementos que son un poco confusos al seleccionar que tipo de aplicación se quiere construir y nos permite explicar de una manera clara al cliente por que se tomaron estas decisiones de diseño.

Si usted alguna vez se ha preguntado como una arquitectura SOA se integra con una arquitectura por componentes y con el paradigma de Orientación por Objetos este es definitivamente un documento que debería leer.

Juan Peláez

Arquitecto de Software

Publicado en: www.juanpelaez.com

Keywords: Juan Pelaez, Arquitectura de Software, 3Metas, Patterns and Practices, Microsoft, .Net.

Publicidad: Necesita ayuda en la arquitectura de su aplicación .Net?, no está seguro si su desarrollo cumplirá con los requerimientos de escalabilidad, seguridad, requerimientos de negocios o expectativas de los usuarios?, Quiere validar si sus desarrolladores o contratistas siguen las mejores prácticas para el desarrollo de aplicaciones? Los servicios de consultoría en Arquitectura de Soluciones de 3Metas seguramente serán un de las mejores alternativas. Contáctenos al correo electrónico contacto@3Metas.com

Saturday, April 11, 2009 4:18:42 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Arquitectura | Software as a Service
# Monday, December 01, 2008


Share

Por invitación de Luis Linares de Microsoft Colombia el pasado 30 de Noviembre de 2008 presente una sesión sobre gestión de pruebas usando VSTS 2008, durante la presentación realizamos diferentes modelos de pruebas automatizadas, especialmente pruebas unitarias con cobertura de código, pruebas de funcionalidad web y pruebas de carga.

Junto con Miguel Mendoza de Synergy desarrollamos algunos escenarios un poco más profundos, como hacer pruebas de funcionalidad y carga de un portal de Sharepoint usando VS2008 for Testers. Pruebas automatizadas basadas en información de bases de datos contra aplicaciones desarrolladas en PHP y /o corriendo en otras plataformas y generación de datos de pruebas usando DataGenerator de VS2008 for DataBase Professionals.

 

Gracias a todos los participantes por sus preguntas y comentarios, a Miguel Mendoza por su apoyo en las demostraciones y en la preparación de la sesión y a Luis por invitarnos, espero que el evento haya sido productivo para todos.

 

Descargar Presentación: Gestión de Pruebas con VS 2008 for Tester y Team Foundation Server (TFS).

 

Juan Pelaez

Arquitecto de Software.

Publicado en : www.juanpelaez.com/blog

 

Creditos: para la construcción de la PPT he usado información e imágenes de otras presentaciones de expertos en TFS y VS2008, en especial de las siguientes personas:

Juan Carlos Viñas

TFS Competence Administrator

Jorge Ramo López

EPM Manager

Raona http://www.raona.com

Rodrigo Corral

MVP Team System

Plain Concepts

http://www.plainconcepts.com

Blog: http://geeks.ms/blogs/rcorral

Bruno Capuano

MVP

http://www.avanade.es

Blog: http://elbruno.com

 

 

Keywords: VS2008, Visual Studio for Tester Editions, Gestión de Pruebas, Pruebas de Software, Automatización de Pruebas, SharePoint, Pruebas Unitarias, Cobertura de Código, Pruebas de Funcionalidad Web, Pruebas de Carga, Pruebas de Stress.

Monday, December 01, 2008 10:33:21 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Amigos | Gestion de Empresas de Software | Speaker Microsoft | VS2008
# Wednesday, August 20, 2008


Share

Me han preguntado un par de veces como invocar Web Services que tienen certificados digitales desde aplicaciones web (y tambien desde aplicaciones Windows), asi que aqui una nota de referencia rapida y algunos enlaces al respecto:

 

Existen muchas formas de invocar servicios web seguros desde aplicaciones web, pero basicamente dos son rapidas y eficaces y dependen de la tecnología que se este usando para invocar los servicios web. (es decir como los esta llamando), si esta usando framework 2.0 lo mejor es usar Web Services Enhancements (WSE) 3.0 for Microsoft .NET, una serie de extensiones para Visual Studio que implementan mejoras significativas en seguridad, gestión de archivos como parte del mensaje, etc. Con WSE* puede usar muchas de las características más avanzadas de Web Services y hacen parte de los estándares avalados por OASIS y otras sugerencias de Microsoft, incluidos los certificados digitales, mas información de esta técnica aquí. Este complemento es gratuito, no hay que pagar nada por él y se puede descargar del sitio de Microsoft haciendo clic aquí.

 

Ahora si está usando el framework 3.0 puede utilizar Windows Communication Foundation (WCF) que trae incluido desde el core el soporte para esquemas de seguridad como el que menciona, Microsoft ha desarrollado una guía de mejores prácticas de seguridad para servicios de WCF. Y una guía muy completa de casos practicos (how-to) y escenarios que se puede descargar de forma gratuita haciendo clic aquí.

 

 

Juan Peláez

Developer Evangelist

Microsoft Colombia.

Wednesday, August 20, 2008 8:33:57 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Developer Evangelist | Visual Studio | WCF | Web Services
# Tuesday, February 12, 2008


Share

Al usar VS2005, una de las cosas con las que se encuentran los usuarios (que vienen de VS2003) es un nuevo modelo de compilación de los proyectos Web. (Web Site Project).   Hay varias diferencias entre un modelo y otro, desde el sitio donde se seleccionan para crear un nuevo proyecto hasta los resultados de compilación. Para muchas cosas esto es muy importante, así que aunque este no es un tema nuevo vuelvo a él para referencia propia y de otros.

En el modelo Web Application:

·          Toda la aplicación se compila en un solo assembly (dll) que queda en la carpeta bin.

·          Todas las referencias, y archivos se relacionan en el archivo del proyecto.

·          Todo el proceso de compilación usa MSBuild así que se puede personalizar lo que pasa antes, durante y después de la compilación.

En el Modelo Web Project:

Se generan muchos dlls que viven en el directorio bin, es un poco complicado saber para que es cada uno y cual es cual.

Para mi entonces la principal diferencia esta relacionada con la compilación, y aquí es donde esto se vuelve importante hoy. (3 años después de VS2005.)

Ahora estoy desarrollando algunos proyectos para Sharepoint 2007, hay muchas opciones pero una interesante es crear una aplicacion asp.net normal, agregar las referencias a Sharepoint y publicarla en el directorio _layouts.

Para hacer esto y que quede bien es obligatorio que el assembly de la aplicación web sea uno solo, es decir que sea un proyecto Web Application. , hay otros escenarios como usar Enterprise services en los que eso del ensamblado único también es importante. Asi que para mucha gente, esto resulto tan importante que se creo una adición para VS2005 que permite volver a tener los proyectos Web Applications.

A continuación algunas fotos de mi maquina de desarrollo (gracias clo J) que permiten ver las diferencias al momento de creación, los resultados de compilación y el deployment resultante en sharepoint.

Cuando se entra a Visual Studio y se selecciona nuevo web site se ve una pantalla como esta:

clip_image001

si se crea una pagina, un botón, una clase, se compila y se publica (Publish) se obtiene algo como esto:

clip_image002

Como pueden ver hay dos dlls, una llamada application Code y Otra llamada App_web_xxxx.dll.

Para tener el soporte para Web Applications se puede ir al sitio de Microsoft y rápidamente instalarlo siguiendo estos pasos:

1. Primero Aplicar este parche y

2. Luego descargar el complemento de aqui.

Luego de instalar esto se siguen teniendo los web projects, pero también esta ahora la opcion de web applications, solo que se encuentran en otro lado como se puede ver aquí:  (new Project, Web…)

clip_image003

Y al agregar la misma página, el mismo botón, la misma clase que en el proyecto anterior, compilar y publicar se obtiene esto:

clip_image004

Como se ve una sola dll con el mismo nombre del proyecto.

Pues bien, esta dll es la que se puede colocar en el carpeta BIN del directorio virtual del sitio sobre el que se esta creando la aplicación en sharepoint.

asi : (En este caso mi aplicación dentro del Sharepoint se llama ProjectServer)

clip_image005 

Y las páginas del compilado si quedan en el directorio layouts:

clip_image006

 

Personalmente me gustan los proyectos que usan webApplications, y hasta el momento no he encontrado ninguna restricción o algo que no pueda hacer, incluso en otro proyecto que usaba Enterprise Services desde una de las clases del Web Site fue perfecto para registrar con facilidad los componentes en la consola de COM+.

 

espero que sea de ayuda.

 

Juan Carlos Peláez

MCTS

Distributed Applications

 

Keywords: VS2005, Sharepoint, Web Application Projects, Web Projects, Sharepoint Applications, Juan Peláez, MCTS Distributed Applications. Build, deploy, Desarrollo para Sharepoint, Consultor en Sharepoint.

 

Tuesday, February 12, 2008 5:12:22 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Sharepoint | Visual Studio | VS2005
# Wednesday, January 16, 2008


Share

Todos los fuentes del framework de .net se han publicado hace algunos minutos, están disponibles en un buen ejemplo de software + servicios usando el visual studio 2008 como software cliente y el servidor de microsoft reference haciendo de proveedor de servicios en http://referencesource.microsoft.com/symbols

Como una de las mejores prácticas para ser un gran programador es leer mucho código, que mejor que explorar (dentro de Visual Studio, depurando y todo eso) el framework de .Net.

Las instrucciones para hacer que nuestro VS2008 pueda abrir estas fuentes aquí:

http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx

Espero que sea de ayuda

 

 

Juan Carlos Peláez

Arquitecto de Software

MCTS Distributed Applications.

Wednesday, January 16, 2008 7:03:35 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | VS2008
# Wednesday, January 09, 2008


Share

Uno de los Blogs a los que estoy suscrito es el de Janne Mattila quien siempre tiene cosas muy interesantes sobre Sharepoint, generalmente avanzadas y muy pero muy útiles e interesantes, en las últimas semanas Janne publicó un post sobre Silverlight y Sharepoint que va en la misma línea de trabajo que estoy siguiendo en los últimos días. Con el permiso de Janne, traduzco el contenido a continuación para todos aquellos que prefieren el español. J .

(Nota: no me considero traductor, ni espero que esto sea una traducción textual, lo importante es el sentido general, comentarios son bienvenidos como siempre)

Creando aplicaciones de Silverlight 1.1 para SharePoint con VS2008

El título lo dice todo.:-) Mi plan es crear un pequeño instructivo paso a paso de cómo crear una aplicación Silverlight 1.1 con Visual Studio 2008 y luego ejecutarla en SharePoint. Y como no quiero instalar un montón de cosas en mi ambiente de Sharepoint cree una Web part que sirva de host a la aplicación Silverlight. Todo el desarrollo se ha realizado fuera del ambiente de Sharepoint.

Si Silverlight es algo nuevo para usted le sugiero que empiece revisando silverlight.net y un ejemplo muy interesante en Coding4Fun Silverlight 8-Ball example. El primer enlace es el punto de enlace para el desarrollo usando Silverlight y el segundo enlace es un ejemplo muy interesante que muestra cómo crear un juego de 8-bolas usando Silverlight.

Ahora sabe más de Silverlight :-) así que empecemos con el ejemplo:

Tengo VS2008 corriendo en Vista y he descargado e instalado Microsoft Silverlight 1.1 Tools Alpha for Visual Studio 2008 para ayudarme a desarrollar las aplicaciones Silverlight. Esto agrega una nueva plantilla con toda la configuración necesaria para construir aplicaciones de Silverlight 1.1. También tengo SharePoint corriendo en Virtual PC y está configurada para conectarse directamente a mi maquina host (Ej: al escribir http://demo1:1000 en mi maquina host se conecta al SharePoint virtualizado).

Lo primero es modificar el SharePoint de forma que pueda hospedar mi nueva aplicación. Agreguemos algunas carpetas bajo el directorio _LAYOUTS:

image

ClientBin es la carpeta que contendrá todos los archivos .dll requeridos en el cliente por Silverlight (=Si usted compila su proyecto Silverlight automáticamente tendrá en su proyecto la carpeta ClientBin que contiene todos los ensamblados del cliente necesarios para el proyecto.).

La carpeta Silverlight es usada para almacenar los archivos .xaml (=Las páginas Silverlight). También necesito cambiar la configuración de las dos carpetas para que las cosas funcionen. Primero cambiare la configuración de la carpeta ClientBin:

 

image

 

Asigne solo acceso de lectura (Read) y también permisos de ejecución (Execute) a nadie (None) :  

Luego adicionaré .dll para permitir tipos mime (y .pdb para propósitos de depuración en el futuro) :-):

image

Entonces cambiaré la configuración de la carpeta Silverlight para que soporten las extensiones .xaml:

image

Ahora el SharePoint está configurado... pero creemos una web part que sirva de host la aplicación Silverlight en la página. Aquí está el código que hace esto:

   1:  using System;
   2:  using System.Runtime.InteropServices;
   3:  using System.Web.UI;
   4:  using System.Web.UI.WebControls.WebParts;
   5:   
   6:  namespace Silverlight_Web_Part
   7:  {
   8:    [Guid("fc852641-9955-433c-945e-d773f46351eb")]
   9:    public class Silverlight_Web_Part : WebPart
  10:    {
  11:      string xamlFile;
  12:      [WebBrowsable(true), Personalizable(true)]
  13:      public string XamlFile
  14:      {
  15:        get { return xamlFile; }
  16:        set { xamlFile = value; }
  17:      }
  18:   
  19:      public Silverlight_Web_Part()
  20:      {
  21:        this.ExportMode = WebPartExportMode.All;
  22:      }
  23:   
  24:      protected override void Render(HtmlTextWriter writer)
  25:      {
  26:        if (string.IsNullOrEmpty(this.XamlFile) == false)
  27:        {
  28:          writer.Write("<div id='SilverlightControlHost' " + 
  29:            "style='width: 640px; height: 480px;'></div>");
  30:          writer.Write("<script type='text/javascript' " +
  31:              "language='JavaScript' src='/_layouts/Silverlight.js'></script>");
  32:          writer.Write("<script type='text/javascript' " +
  33:            "language='JavaScript' src='/_layouts/SilverlightStarter.js'></script>");
  34:          writer.Write("<script type='text/javascript' " +
  35:            "language='JavaScript'>createSilverlight('" + xamlFile + "');</script>");
  36:        }
  37:        else
  38:        {
  39:          writer.Write("Xaml file is not selected.");
  40:        }
  41:      }
  42:    }
  43:  } 

Mi web part usa los archivos Silverlight.js y SilverlightStarter.js. SilverLight.js es el mismo archivo que se incluye en el proyecto cuando se crea un proyecto Silverlight 1.1 en VS. SilverlightStarter.js es prácticamente una copia del archivo de la plantilla del proyecto pero lo he modificado un poco para que soporte que el archivo XAML sea pasado como parámetro:

   1:  function createSilverlight(filename)
   2:  {
   3:    Silverlight.createObjectEx({
   4:      source: filename,
   5:      parentElement: document.getElementById("SilverlightControlHost"),
   6:      id: "SilverlightControl",
   7:      properties: {
   8:        width: "100%",
   9:        height: "100%",
  10:        version: "1.1",
  11:        enableHtmlAccess: "true"
  12:      },
  13:      events: {}
  14:    });
  15:     
  16:    document.body.onload = function() {
  17:     var silverlightControl = document.getElementById('SilverlightControl');
  18:     if (silverlightControl)
  19:     silverlightControl.focus();
  20:    }
  21:  }

Y si verifica el código del web part en la línea 35 notará que paso como parámetro el archivo XAML que ha sido configurado en las propiedades del web part:

image

Ahora solo tenemos que adicionar algo de código Silverlight y estamos listos. Aquí está el contenido del archivo Page.xaml (=La Aplicación :-):

   1:  <Canvas x:Name="parentCanvas"
   2:      xmlns="http://schemas.microsoft.com/client/2007" 
   3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
   4:      Loaded="Page_Loaded" 
   5:      x:Class="MySilverLight.Page;assembly=/_LAYOUTS/ClientBin/MySilverLight.dll"
   6:      Width="640"
   7:      Height="480"
   8:      Background="White"    
   9:      >
  10:   
  11:   <Rectangle x:Name="MyRectangle" 
  12:         Canvas.Top="25" Canvas.Left="25" 
  13:         Width="50" Height="50" 
  14:         Fill="Gray" MouseLeftButtonDown="MyMouseLeftButtonDown" />
  15:   <TextBlock x:Name="MyText" 
  16:         Text="Click either rectangle or me" 
  17:         MouseLeftButtonDown="MyMouseLeftButtonDown" />
  18:  </Canvas>

 

Y el code behind Page.xaml.cs contiene el siguiente código:

   1:  using System;
   2:  using System.Windows.Controls;
   3:   
   4:  namespace MySilverLight
   5:  {
   6:    public partial class Page : Canvas
   7:    {
   8:      DateTime started = DateTime.Now;
   9:   
  10:      public void Page_Loaded(object o, EventArgs e)
  11:      {
  12:        // Required to initialize variables
  13:        InitializeComponent();
  14:      }
  15:   
  16:      public void MyMouseLeftButtonDown(object o, EventArgs e)
  17:      {
  18:        string runningTime = (DateTime.Now - started).TotalSeconds.ToString("F2");
  19:        System.Windows.Shapes.Rectangle rectangle = o as System.Windows.Shapes.Rectangle;
  20:        if (rectangle != null)
  21:        {
  22:          MyRectangle.Opacity = 1;
  23:          MyText.Text = "You clicked rectangle! Application has been running for " + 
  24:            runningTime + " seconds.";
  25:        }
  26:   
  27:        System.Windows.Controls.TextBlock textBlock = o as System.Windows.Controls.TextBlock;
  28:        if (textBlock != null)
  29:        {
  30:          MyRectangle.Opacity = MyRectangle.Opacity * 0.8;
  31:          MyText.Text = "You clicked text block! Rectangle is fading away...";
  32:        }
  33:      }
  34:    }
  35:  }

Ahora usted probablemente estará ansioso de saber lo que hace la aplicación :-) Aquí esta nuestra aplicación luego de un par de solicitudes (request):

image

Y si el usuario hace click en el rectangulo…

image

Si el usuario hace click en el texto…

image

Ahora tenemos el ambiente de desarrollo listo así que podemos construir y probar la aplicación Silverlight 1.1 y hospedarlo en SharePoint. Aquí están los pasos que tiene que seguir para probarlo usted mismo.

1) Cree un proyecto Silverlight en VS2008
2) Escriba el Código :-)
3) Construya la solución
4) Copie el contenido del folder ClientBin\*.* al folder _LAYOUTS\ClientBin del Sharepoint
5) Copie los archivos *.xaml de su proyecto a la carpeta Silverlight del SharePoint. (Nota: tiene que verificar que este correcto el path en x:Class! Vea mi Page.xaml y la línea 5 en el fuente)
6) Cree la página que usa el web part Silverlight y seleccione su nuevo archivo XAML

Esta fue mi pequeña introducción a Silverlight 1.1 con SharePoint. En este ejemplo yo use archivos .xaml estáticos ubicándolos en el sistema de archivos para hacer todo tan simple como sea posible… solo quería demostrar como usted puede empezar a experimentar con esta combinación. Esto puede ser ampliado y mejorado en muchas formas diferentes y probablemente volveré a este tema en futuros posts.


De todas formas... Happy hacking!
J

Hasta aqui el Post de Jane.

Espero que sea de Ayuda.

Juan Carlos Peláez

MCTS Distributed Applications

Arquitecto de Software.

Keywords: Silverlight, Sharepoint, VS2008, WSS 3.0

Wednesday, January 09, 2008 4:46:18 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Sharepoint | Silverlight | VS2008 | WPF
# Wednesday, December 12, 2007


Share

Gracias a la amable invitación de Rodrigo Corral ahora publicaré algunos contenidos en Geeks.ms una de las comunidades más activas en el mundo Microsoft en Español.

 

Una de las ventajas de Internet: no podemos ser silenciados, podemos compartir nuestro conocimiento, podemos aprender de todos, gracias a comunidades como la de Rodrigo, a los cientos de Bloggers que comparten sus experiencias, problemas y sobre todo soluciones cada vez más personas tienen acceso a respuestas para  sus problemas reales. Espero que algo de la información que comparto ayude a alguien a salvar un par de horas.

 

Juan Peláez.

MCTS.

Miembro del Microsoft Andean Speaker

Miembro del Microsoft Andean Influencers Framework.

Wednesday, December 12, 2007 6:06:51 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Hoja de Vida Juan Pelaez | Speaker Microsoft
# Wednesday, November 21, 2007


Share

 

Gracias a la muy amable invitación de la gente de Plataforma y Desarrollo de Microsoft Andino voy a estar en las próximas semanas en Ecuador, Colombia y Venezuela en el evento Andean Road Show donde dictare una conferencia de una hora y media sobre la migración de aplicaciones PHP a .net y las mejores prácticas para ejecutar aplicaciones PHP en plataforma Windows así como algunas de las mejores prácticas para construir aplicaciones Web usando ASP.net.

Espero que podamos vernos en alguna de las presentaciones cerca a su ciudad.

Las fechas aquí:

Ecuador.

Noviembre 29 Quito

Hora Inicio:15:00 pm
Hora Fin :21:00 pm

Registro :
Auditorio :Universidad de las Américas UDLA

Noviembre 30 Manta

Hora Inicio:14:00 pm
Hora Fin :21:30 pm

Registro :
Auditorio :Paraninfo de la ULEAM, Vía San Mateo y Av. Circunvalación,

Diciembre 01 Guayaquil

Hora Inicio:8:30 am
Hora Fin :14:30 pm

Registro :
Auditorio :AULA MAGNA DEL ESPOL (ESCUELA SUPERIOR POLITECNICA DEL LITORAL)

Colombia.

Diciembre 03  Bogotá

Hora Inicio:8:00 am
Hora Fin :2:00 pm

Registro :
Auditorio :Microsoft Colombia, Auditorio Bogotá, Cra. 7 No, 71-21 Torre B piso 7

Diciembre 03 Bogotá

Hora Inicio:14:00 pm
Hora Fin :21:00 pm

Registro :
Auditorio :Microsoft Colombia, Auditorio Bogotá, Cra. 7 No, 71-21 Torre B piso 7

Diciembre 05 Cali

Hora Inicio:8:00 am
Hora Fin :2:00 pm

Registro :
Auditorio :Universidad Santiago de Cali, auditorio Pedro Elías.

Diciembre 04 Medellín

Hora Inicio:13:00 pm
Hora Fin :19:00 pm

Registro :
Auditorio :Bloque 38 aula 125 Universidad EAFIT (Entrada por la Av. Las Vegas)

Diciembre 05 Neiva

Hora Inicio:8:00 am
Hora Fin :2:00 pm

Registro :
Auditorio : Auditorio del Centro de la Industria, la Empresa y los Servicios - SENA Industrial Dirección: Calle 66 # 8 - 25

Diciembre 06 Cartagena

Hora Inicio:13:00 pm
Hora Fin :19:00 pm

Registro :
Auditorio : Colegio Salesianos San Pedro Claver Plazoleta de las Bóvedas No 9-80 Barrio San Diego

Venezuela.

Diciembre 11 Maracaibo

Hora Inicio:12:30 pm
Hora Fin :18:30 pm

Registro :
Auditorio :Universidad del Zulia

Diciembre 12 Barquicimeto

Hora Inicio:12:30 pm
Hora Fin :18:30 pm

Registro :
Auditorio :Universidad Católica Andrés Bello UCAB

Diciembre 13 Maracay Valencia

Hora Inicio:12:30 pm
Hora Fin :18:30 pm

Registro :
Auditorio :Universidad José Antonio Páez

Diciembre 14 Caracas

Hora Inicio:8:00 am
Hora Fin :14:00 pm

Registro :
Auditorio :Microsoft Venezuela, Salón Venezuela, Avenida Principal de La Castellana, Torre Ing Bank piso 10

Diciembre 14 Caracas

Hora Inicio:15:00 pm
Hora Fin :21:00 pm

Registro :
Auditorio :Microsoft Venezuela, Salón Venezuela, Avenida Principal de La Castellana, Torre Ing Bank piso 10

Mi Sesión: Mejorando tu Aplicación PHP.

En esta sesión veremos cómo aumentar el rendimiento de una aplicación PHP utilizando Fast CGI y cuál es el camino a seguir si deseamos migrarla a ASP.NET.

Espero que sea de Ayuda.

Juan Carlos Peláez

MCTS

Miembro del Microsoft Speakers Group

Miembro del Andean Influencers Framework.

Keywords: Php, Migrando Php a .net, Visual Studio 2005, Eventos Microsoft, Eventos para Desarrolladores, FastCGI, ASP.Net.

Wednesday, November 21, 2007 2:27:41 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | ASP.NET | Eventos Microsoft | FastCGI | PHP | Speaker Microsoft


Share

Durante Noviembre de 2007 y gracias a la invitación de Sandra Marin de Microsoft Andino tuve oportunidad de presentar, junto con Juan Diego Velasco de Gattaca, las conferencias de Bogotá y Medellín sobre los procesos de desarrollo de software entre el Diseñador y el Desarrollador usando la Suite Expression de Microsoft.

En estas conferencias mostramos un ejercicio a dos manos en el que construimos desde cero una aplicación que consume un servicio web que expone los consumos de agua de los habitantes de una ciudad imaginaria.

Durante la presentación Juan Diego exportó desde Ilustrator el logo de la empresa a Expression Design, luego en Expression Design se construyó la interfaz gráfica usando los mejores criterios de usabilidad y experiencia de usuario.

Todo lo anterior se exportó a Expression Blend y se demostraron algunos efectos y propiedades de las herramientas, en este punto interactuamos con el desarrollador y construimos el databind de los controles. Cuando Juan Diego terminó el Diseño, abrimos el proyecto en Visual Studio 2005 (con las extensiones del framework 3.0) y vinculamos una fuente de datos de un web service a la aplicación.

Despues de realizar estos ejercicios usando expression enconder codificamos un video y construimos el player de silverlight, hicimos una disección de silverlight y explicamos sus características y funcionamiento.

Para finaliza con Expression Web creamos un proyecto y usamos el player de Silverlight y las características de integración de Web para demostrar algo de Ajax y del proceso de trabajo conjunto entre el Desarrollador y el Diseñador en proyectos Web.

En el apartado de archivos relacionados publicamos la ppt que usamos ese día y el proyecto resultante.

 

Archivos Relacionados:

Presentación utilizada

Código Fuente (40+ Megas, Incluye Video)

Recursos Necesarios:

Expression Design

Expression Blend

Expression Encoder

Expression Web

Visual Studio 2005 (con extensiones para el Framework 3.0)

Plug-in de Silverlight.

IIS (para correr los servicios Web)

SQL Server 2005 (Para la base de datos que usan los servicios web)

Espero que sea de Ayuda

Juan  Peláez

MCTS

Miembro del Microsoft Speaker Group

Miembro del Andean Influencer Framework.

 

Keywords: Expression, Juan Peláez, Juan Diego Velasco, Desarrollo de Software, Mejores Practicas, Diseño Grafico, Expression Blend, Expression Design, Expression Web, Silverlight, Gattaca S.A., Desarrollo de Software, Colombia, España, Medellín, Bogotá, XML, WPF, Framework 3.0,

Pd:  En las próximas semanas estaré en Ecuador, Colombia y Venezuela presentando el Andean Road Show, un evento para desarrolladores de plataforma Microsoft. Espero verlos en los Show. Más Información en: Andean Road Show Web Site

 

Wednesday, November 21, 2007 1:22:58 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | AJAX | ASP.NET | Blend Expression | Eventos Microsoft | Silverlight | Speaker Microsoft | WPF
# Monday, October 29, 2007


Share

Aunque de esto ya se ha hablado mucho algunas anotaciones importantes sobre paginas maestras:

 

Definición:

Una página maestra es una plantilla de diseño y distribución que se puede aplicar a un sitio, (basicamente un archivo del mismo tipo del aspx, pero que tiene la extensión .master y la directiva @master en vez de la directiva @page de las páginas normales) de esta forma se facilita el control del Look and Feel de todo el sitio en un solo punto y se garantiza que el sitio en todas sus páginas se va a ver igual.  Por ejemplo un menú o cualquier ayuda de navegación que deba estar en todo el sitio es un buen candidato para estar en la página maestra y no en cada página del sitio.

 

La página maestra incluye uno o varios controles de tipo asp:content.:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="server">

 

Creación de la página de contenido:

Las páginas de contenido en el proyecto de VS2005 que van a utilizar las página maestras son páginas del tipo Web Content Form, lo que implica que en la aplicación pueden haber páginas que usan el masterpage y otras que no, lo que dependiendo de cada escenario puede ser útil o no.

Cuando se crea la página Web Content Form, se obtiene algo como esto:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="ReportsApp._Default" MasterPageFile="~/ReportingApp.Master"%> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"  Runat="Server"> </asp:Content>

 

donde se nota que se está usando un master y que como ese contiene todo el código lo único que tengo aquí es mi área de trabajo que es el control asp:content.

En tiempo de diseño se ve la master al fondo más oscura y el área de diseño más clara al frente:

Ej: Web Content Form con Master Page

 

Asignación de la página maestra:

 

1. La página maestra puede asignarse a la página en la línea de directivas (la que empieza por @) usando el atributo MasterPageFile:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="ReportsApp._Default" MasterPageFile="~/ReportingApp.Master"%>

 

2. La pagina maestra puede asignarse a todo el sitio en el web.config de la aplicación web:

<configuration> <pages masterpagefile="~/ ReportingApp.master"> </configuration>

 

VS2008 y las Páginas maestras.

 

Bien, hasta aquí, poco o nada nuevo, pero algo que casi nadie sabe es que en VS2005 (Framework 2.0), se pueden utilizar masterpages anidadas, esto es una master que referencia a otro master page para tener más opciones de diseño, (es decir una masterpage que usa el atribute masterpagefile), por ejemplo se puede tener el master page del sitio, y luego el master del administrador y el master de reportes y que ambos apunten al master del sitio para tener, por ejemplo, encabezados iguales y cosas por el estilo. El problema era que en vs2005 no se tenía soporte gráfico en el editor para esto así que una vez que se ponía el código se perdía el editor. Pues bien, esto ha sido corregido en VS2008 ahora se tiene todo el poder del nuevo editor gráfico con las páginas maestras.

 

Otra cosa buena es que como VS2008 tiene soporte multitarget (para el framework 2 en adelante) no es necesario migrar todo el proyecto, solo se necesita abrir el VS2008, crear un proyecto en Framework 2.0 y usar las características del editor gráfico:

VS2008MultiTarget

 

Espero que sea de ayuda

 

Juan Peláez

MCTS.

Miembro del Microsoft Speakers Group Andino.

Miembro del Microsoft Influencer Framework.

 

Keyword: Paginas Maestras, Master Pages, VS2005, VS2008, Visual Studio 2008, Visual Studio 2005,  MasterPageFile, Como unificar diseño y estilos en sitios Web, ASP.NET 2.0, Microsoft.Net, Framework 2.0, Framework 3.5.

 

Monday, October 29, 2007 11:30:06 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | ASP.NET | Visual Studio


Share

Hace un par de días Miguel Mendoza (El Miguel Mendoza) MVP y uno de los muchachos de DevSynergy me llamo para ofrecerme un pequeño problema con MIIS 2003, después de preguntar MIIS What?, descubrí que no existe mucha información en Internet sobre el desarrollo de Aplicaciones que involucren esta aplicación así que como resultado del trabajo realizado para resolver el problema y la investigación respectiva se genero este Post.

 

1. Que es MIIS?

MIIS es el acrónimo de Microsoft® Identity Integration Server (MIIS) 2003, una herramienta de software extremadamente potente de Microsoft que permite desarrollar soluciones de Single Sign-On en entornos distribuidos, esto significa que los usuarios solo tendrán un nombre de usuario y contraseña para todas sus aplicaciones, el nuevo santo grial de las organizaciones con decenas de sistemas o aplicaciones cada una de ellas con su propio sistema de usuarios.

MIIS permite realizar una sincronización entre los sistemas de usuarios para que cada uno de los sistemas tengan el mismo nombre de usuario y contraseña, el usuario tendrá que seguir ingresando por el login de la aplicación que quiera usar (CRM, SAP, Intranet, Red, VPN, etc) pero ahora solo tendrá una contraseña y usuario sin importar cuantos sistemas tenga, que tipo de sistemas sean y cuando actualizó la contraseña.  Para poder hacer esta maravilla MIIS recolecta información de fuentes externas como el Directorio Activo, SQL Server, SAP, o cualquier otra cosa a la que se pueda conectar y mezcla la información en un repositorio central llamado el Metaverso. Una vez que la información se ha recopilado en el metaverso se puede seleccionar que tipo de información se traslada a cada sistema de información durante el proceso de sincronización.

 

2. Como funciona?

Luego de instalar MIIS (en WK2003 enterprise), se instalan los conectores que requieran sus sistemas, por ejemplo, el del SUN, el de SAP, los de SQL server para sus aplicaciones que almacenan usuarios en SQL, etc. hecho esto se configuran las aplicaciones que quieren compartir usuarios, por ejemplo, en SQL hay una aplicación de Intranet que usa una lista de usuarios con nombre y teléfono, esta SAP y tienen un servicio de Directorio Activo de SUN y de Microsoft. Así que configura esos conectores, crea el metaverso con la información mínima que requiera cada sistema, apunta cada campo del metaverso a los campos del sistema de identidad que tenga, ej: ID (De usuario) es accountname en el directorio activo, mientras que en SAP es user name y en el SQL es CodigoUsuario, con esta información el MIIS se conecta a los sistemas, extrae la información y crea una tabla única (metaverso donde están todos mis id, otros datos y mi información de usuario).

Después de construido el metaverso se configura para que sincronice todos los sistemas con el campo AccountName por ejemplo, y esta aplicación hace un trabajo de sincronización para que en todos los sistemas el usuario sea el mismo.

Cada vendor puede construir conectores para el MIIS de forma que puedan integrarse cada vez más sistemas.

Algunos de los conectores más usados ya los nombramos pero también existen conectores para Live ID, el servicio de Microsoft de identidades centralizadas y que era el objeto de este problema, La nueva versión de MIIS es Microsoft Identity Lifecycle Manager 2007 (ILM 2007)

 

3. Entendiendo la Base de Datos de MIIS 2003

La base de datos de MIIS está en SQL Server y está conformada por un conjunto de tablas medianamente grande de las cuales las tres más importantes son mms_connectorspace, mms_agent, mms_metaverse

De ellas se puede obtener la siguiente información:

a. La lista de todos los agentes cargados en MIIS 

select * from mms_management_agent

b. La lista de todos los conectores (sincronizadores)

select * from mms_connectorspace

c. La lista y los atributos de los usuarios creados por los procesos de consolidación de identidades.

select * from mms_metaverse

 

4. Desarrollando algo para MIIS.

Ahora MIIS tienen un modelo de objetos en unos ensamblados que están disponibles al instalar la aplicación, estos son de la versión 1.1. del framework, así que para desarrollar algo para MIIS se recomienda usar VS2003, una de las clases mas útiles es Utils que contiene una serie de métodos que le permiten ubicar un objeto (usuario).

Sin embargo muchas cosas se pueden hacer realizando una consulta directa sobre el metaverso, (incluso los ejemplos más completos del MSDN usan esta técnica), por ejemplo si quiere saber qué nombre de cuenta de usuario le asigno Live a un usuario que usted creo puede hacer algo como select LiveAccount from mms_metaverse where AccountName = 'jpelaez', importante eso si verificar que exista un índice (se crean en la consola del MIIS) para el campo AccountName para que el rendimiento de la consulta sea efectivo.

 

5.Recursos:

http://www.server-management.co.uk/index.php?option=com_content&task=view&id=130&Itemid=50

http://www.puttyq.com/

 

6.Ejemplos

Aprovisionamiento delegado de grupos de usuarios usando MIIS 2003

http://www.microsoft.com/technet/technetmag/issues/2006/07/Automate/

Flujos de trabajo para aprobación de usuarios usando MIIS 2003

http://www.microsoft.com/technet/technetmag/issues/2007/05/Workflow/default.aspx?loc=es/

 

Espero que sea de Ayuda.

 

Juan Carlos Peláez

MCTS

Miembro del Speaker Group de Microsoft Andino

Miembro del Microsoft Influencer Framework Andino.

 

Keywords: MIIS 2003, Identidad unica, Windows Live ID, mms_metaverse, metaverso, sincronización de contraseñas, sincronización de usuarios, Single Sign-On.

Monday, October 29, 2007 11:28:01 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | MIIS 2003
# Tuesday, October 02, 2007


Share

Hace algunas semanas Miguel Mendoza me encargo un proyecto para autenticar usuarios contra los servicios de Windows Live (ID) y reenviarlos a la página principal de Windows Live donde podrían contar con los servicios de la plataforma  de Servicios de Microsoft.

Como esta es una aplicación web y después de revisar el tema, la mejor alternativa fue utilizar el SDK for Windows Live ID para autenticación Web, que se descargar desde aquí., sin embargo al momento de instalarlo tuvimos muchos problemas, cada vez que tratábamos de ejecutar obteníamos problemas de permisos que impedían la instalación. Reiniciamos con varios roles, promovimos los usuarios, etc, pero nada servía. Luego de una búsqueda por internet encontramos la solución que público aquí con la esperanza de que ayuda a varios a no perder tiempo.

Problema: Al instalar el SDK de Windows Live ID para Web Autentication se reporta problemas de permisos que impiden finalizar la instalación.

Causa del Problema: Por un error en la compilación del archivo, el instalador requiere la existencia de los grupos User y Power User, como mi maquina esta con el sistema operativo en Español  no existen dichos usuarios (por eso siempre se recomienda no referenciar los grupos por nombres si no por el ID del Grupo, parece que este grupo de desarrollo de MS no lee el sitio de Patterns and Practices).

Solución: Crear dos grupos con los Nombres Users y Power Users, agregar su usuario (del dominio y de la maquina local), incluir de las políticas de la maquina los usuarios Autenticados e Interactivo (NT Authority\Interactive).

Cerrar la sesión, ingresar nuevamente y correr el Instalador.

Ahora sí debería poderlo instalar. 

WindowsLiveWebAuth

(despues de 3 días,  finalmente se instalo ;-))

 

Espero que sea de Ayuda

 

Juan Carlos Peláez

MCTS

Miembro del Microsoft Speaker Group Andino

Miembro de Microsoft Influencers Colombia

 

KeyWords: Windows Live ID, Live ID SDK, Problemas, Instalación, Permisos, Autenticación usando Windows Live ID, Autenticación usando Passport

Tuesday, October 02, 2007 12:53:48 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Web Services | Windows Live | Windows Live ID
# Monday, September 24, 2007


Share

En el CodePlex se ha publicado la version 1.0.10920.0 del toolkit de ajax, un conjunto de controles que en conjunto con las extensiones AJAX para ASP.Net facilitan la construcción de páginas web que utilicen los beneficios de AJAX, este conjunto de controles puede descargarse de este link más de 1000 bugs han sido correguidos en esta versión y se han incluido algunas mejoras especificas en controles como el calendario, el control de autocompletar, el slider entre otros.

Si usted viene usando este conjunto de controles no deje de actualizarse para poder tener todos los beneficios de las correcciones, muchas de ellas generadas por la comunidad ya que este proyecto es en la practica un proyecto Open source de Microsoft.

 

Hace poco en un evento de Microsoft Colombia se dió una discusión sobre AJAX y el toolkit, una recomendación importante para que el rendimiento de las aplicaciones AJAX sea eficiente es no solo tener el ultimo toolkit sino usar el toolkit script manager que mejora en casi un 80% el rendimiento de las aplicaciones que usan el script manager de la extension ajax de asp., esto es posible al combinar el script antes de enviarlo al cliente y eliminar todos los espacios en blanco del archivo, lo anterior genera un archivo .js más pequeño que se envia para el cliente. (que es lo que hace el toolkitscriptmanager)

 

Asegurese que la version de la referencia sea 1.0.10920, tambien puede darse cuenta que esta usando una versión más actualizada revisando los iconos en el panel de herramientas (toolbox).  Anexo imagen.

AJAX10920

 

Espero que sea de Ayuda

 

Juan Carlos Peláez

MCTS

Miembro del Speaker Group de Microsoft Andino.

Miembro del Grupo Influencers de Microsoft Colombia.

 

Keywords: AJAX, ATLAS, ASP.Net, Control Toolkit, Version 10920, Microsoft, Juan Peláez, Aplicaciones Web, Framework AJAX, Proyectos Web.

Monday, September 24, 2007 8:44:08 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | AJAX | Articulos de Desarrollo | Java | Visual Studio


Share

Microsoft ha publicado una nueva versión del producto Blend versión 2. El preview de Septiembre, en esta versión se han implementado algunas nuevas funcionalidades que son realmente importantes y que facilitarán la vida de los que están haciendo una transición o están haciendo convivir Flash y Expression.

Algunas de las más notorias características de la versión de Septiembre de Blend 2 son :

 

Integración con Visual Studio 2008 Beta 2.

Con esta versión de Blend pueden abrirse proyectos de Visual Studio 2005 y 2008, sin embargo los proyectos por default no son de VS2008 ya que no es posible abrirlos en VS2005 aunque se tenga Microsoft .Net Framework versión 3.5.

 

Creación de Controles desde objetos existentes.

Ahora Blend incluye una nueva funcionalidad que permite convertir contenido existente en un control que puede ser usados nuevamente (instanciado). El elemento seleccionado, sus recursos y sus animaciones son refactorizados en un nuevo control.

 

Mejoras en el Editor del XAML y una vista Split

El nuevo Blend permite abrir un documento XAML y ver al mismo tiempo el código y el diseño en una vista "Split", también permite modificar la fuente, el tamaño y la indentación del código XAML, en esto se acerca mucho a lo que puede hacerse con VS2008 que contiene esta misma vista Split para HTML y XAML.

BlendSeptiembreSV

 

Selector de StoryBoards.

El selector de StoryBoard (Picker) reemplazo la caja de storyboard anterior, el selector permite salir del modo de grabación, le permite crear una nueva animación, duplicar, reversar o eliminar la animación seleccionada. También puede renombrar la animación seleccionada.

BlendSeptiembreSBP

Propiedades del StoryBoard y KeyFrame.

Blend de Septiembre permite modificar las propiedades desde el panel de propiedades, ahora se puede modificar la dirección de la animación y el modelo de repetición de la misma.

 

Animación Vertex

Blend de Septiembre contiene una nueva funcionalidad para animar vértices individuales (puntos y tangentes) en una línea. Antes si se modificaba el vértice la  forma original se modificaba de forma permanente. Creo que esto resuelve un problema de animación de formas que era muy extraño para los diseñadores de Flash.

 

Barra de "Controles"

Una nueva barra sobre la tabla de arte permite identificar e incluso seleccionar objetos dentro de la jerarquía del template, esto permite cambiar rápidamente el alcance en los procesos de edición de las plantillas y los estilos en WPF.

BlendSeptiembreBC

 

Inserción de Fuentes

Blend 2 contiene nueva funcionalidad para garantizar que las fuentes que se seleccionaron en el proyecto son las mismas que el usuario verá al momento de ejecutar la aplicación, las fuentes ahora se insertan en el proyecto para garantizar su adecuada distribución.  El nuevo menó Font Embeding permite insertar la fuente.

BlendSeptiembreFE

 

 

 

Espero que sea de ayuda

 

Juan Carlos Peláez

MCTS

Miembro de Microsoft Speaker Group Andino

Miembro del grupo Influencers de Microsoft Colombia.

 

Keywords: Expression Blend, Microsoft, .Net, WPF, Nuevas Caracteristicas, StoryBoards

Monday, September 24, 2007 8:35:46 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Blend Expression | SilverLigth | WPF


Share

Extractado del Blog de Jesse Ezell, quien ha tenido una amplia experiencia en desarrollo de herramientas, proyectos y soluciones usando flash.

Comparación entre Silverlight y Flash, principales características diferenciadoras de ambos productos.

(...)

Animaciones

Las animaciones en Flash son del tipo de transformación de matrices, uno puede aplicar una matrix a un elemento basado en frames para generar el movimiento, quiere mover algo a través de la pantalla en 3 segundos?, calcule cuantos frames estos 3 segundos necesitarán, luego calcule las matrices que cada frame requiere. No olvide que el reproductor no mantiene la misma tasa de frames a no ser que se coloque un archivo de audio en blanco, así que los 3 segundos pueden convertirse en 2, 6 o 5, dependiendo de que está haciendo el procesador.

Silverlight soporta el modelo de animaciones de WPF, que no solo es basado en tiempo más que en frames, sino que permite definir las condiciones de principio y fin y él se encargará de llevar la animación a donde se desea, no hay que trabajar con matrices, no hay que calcular posiciones en varios frames. La animación simplemente funciona.

Formas

Flash almacena sus formas usando un registro binario. Para escribir definiciones de forms, se necesita la licencia de un tercero del SDK del archivo flash o construir su propio SDK, no es muy difícil, pero requiere un curva de aprendizaje y la habilidad para manipular cosas al nivel de bit, no es el tipo de cosas que la mayoría de las personas puede escribir y depurar en una tarde.

Silverlight usa XAML, XAML está basado en texto y puede ser exportado usando cualquier simple objeto XAML, no se requiere comprar librerías especiales para escribir los archivos, tampoco hay necesidad de escribir sus propias librerías, solo se coloca algún texto en un archivo y listo, el tipo de cosas que pueden ser depurados y completados en una tarde.

Texto

Flash almacena sus fuentes usando la misma definición que usa para las formas. El reproductor no entiende archivos TTF, así que al final uno termina sumergido en las definiciones del API de Win32 y la vaga definición del formato de archivo de Flash, es posible que uno tarde años tratando de entenderse con todas las complicaciones de las fuentes.

Silverlight le permite a usted insertar la información de las fuentes true type directamente en su proyecto, y descargar esa información con el objeto que se descarga. No se necesita nada especial, no se necesita manejar nada especial, simplemente funciona.

Video / Audio

Flash soporta múltiples formatos de video, el último codec es realmente de alta calidad y con un excelente uso del ancho de banda. El problema es que si usted está creando una herramienta que exporta contenido flash...el formato que usa no está soportado por nadie más. El video codec original, la implementación H.263 propietaria de sorenson es una versión mutante de H.263. La compresion sigue la especificación muy cerca, pero hay un lista de características que se salen de la especificación y no permiten completar la construcción de un encoder propio. el ultimo encoder de On2 lo pone en una posición peor. Licenciar el Codec Sorenson no es muy costoso, pero el de On2 si lo es, la compañía está tratando de aumentar su valor de acción de los 2 dólares actuales a través del modelo de licenciamiento del codec usado por Flash. Los formatos de Audio que soporta flash son todos propietarios, excepto por el ADPCM, que nadie usa por sus problemas de compresion, y MP3 que requiere licencias de terceros para las librerías de conversión.

Comparando eso con la historia de Silverlight, Silverlight implementa el codec VC-1 para video (un estándar de la industria), también soporta WMV and WMA.  Casi todo el mundo tiene Windows Movie Maker, pero si lo no tiene no importa, por que?, porque Microsoft libero un encoder gratuito para producir WMA y WMV. Así que, no solo usa formatos que la gente puede usar comúnmente, sino que Microsoft también provee su producto con SDKs si usted quiere hacer el encoding por sí mismo. La mejor parte de esto es que Microsoft no está basado en el licenciamiento de WMA/WMV para mantenerse. No solo es fácil de integrar sino que es barato.

Scripting

Usted puede reusar clases de C# (o de VB. Nota JCP) de su propia herramienta dentro del contenido exportado. Si se toma la ruta de flash todas las clases deberan escribirse dos veces, usted necesitara clases en .net para manejar la experiencia de tiempo y clases Flash para manejar el tiempo de ejecución. Si tiene componentes de servidor tendrá que volver a .net y escribir todas las clases que el componente de runtime están usando.  Por ejemplo, digamos que uno está escribiendo un herramienta que exporta exámenes con gran contenido gráfico, con Silverligth/.Net las mismas clases y entidades que trabajan con los resultados en el player pueden usarse en el servidor. Con Flash, usted tiene que escribir toda la lógica 2 veces y tenerla sincronizada en cada cambio.

Tools

Se puede crear contenido Silverlight con las mismas herramientas que usted usa a diario. Visual Studio.net es de lejos la más poderosa herramienta de desarrollo y el IDE más popular. Usted puede poner todo el código de los componentes del servidor, los componentes de ejecución del player y las herramientas suyas en el mismo proyecto, no se requiere habilidades extras, no hay que contratar un experto en Flash para hacer  las partes gráficas. Cada desarrollador puede contribuir a completar la aplicación. (...)

Para nosotros en Gattaca la experiencia ha sido muy buena, hemos desarrollado una aplicación que llama por teléfono, imprime, se conecta con servicios web usando WCF y tiene una riqueza gráfica inmensa y todo trabajando en equipo el desarrollador en .net y visual studio y el diseñador en blend.

 

Espero que sea de ayuda.

 

Juan Carlos Peláez

MCTS

Miembro del Speaker Group de Microsoft Andino

Miembro del Grupo Influencers de Microsoft Colombia

 

Keywords: Silverlight, WPF, Flash, Visual Studio, .Net, Video, Audio, Encoders, Comparación

Monday, September 24, 2007 8:30:27 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Blend Expression | SilverLigth | WPF
# Thursday, September 20, 2007


Share

Durante el desarrollo de nuestro proyecto Real en Blend, hemos entrado en la fase final de pruebas e instalación en el cliente. A pesar de nuestra recomendación de comprar una maquina con Windows Vista, se han comprado una maquina Dell bien bonita pero con Windows XP, por lo que nos enfrentamos a diversos problemas que serán objeto de otro post, pero este me pareció bastante especial y aburridor como para ser publicado inmediatamente.

El Problema: Al instalar la aplicación desarrollada con Blend Expression (preview de agosto) y Visual Studio 2008, los efectos de sonido asociados al StoryBoard se perdieron.

Aunque los archivos se encontraban en la misma carpeta del ejecutable, con el mismo nombre, y con todo bien creado y configurado no se ejecutaban cuando llegaba el momento. Tocándolos por aparte si estaban sonando.

La solución: Buscando en Internet encontramos que uno de los workarounds detectados de Blend (incluso publicados en la página de readme en internet que no leímos y que anexamos aqui el link: Blend) indican que tiene que tenerse la versión 10 de Windows media player o superior , asi que bajamos la version 11, y funciono perfecto, ahora nuestros storyboard tienen audio.  (y lo más increíble, es un control, es animado, tiene audio y es una camiseta!!!, adjunto una foto, Juan Diego después hablará más del tema, pero la camiseta roja, sobre la que caen flores, se mueven los tambores y tiene el sonido es un control, como un botón o una lista tiene propiedades de databind, y es un gráfico vectorial que no se pixela en ningún tamaño, toda una lista de características y tecnologías nuevas. -:)),

 

BlendReal1

Corolario: Para poder instalar una aplicación desarrollada en Microsoft Expression Blend y Visual Studio 2005 en una maquina XP, esta máquina tiene que tener el framework 3.0 instalado, lo anterior puede que no sea muy claro para todos, pero el componente que permite hacer el render del XAML que es el núcleo gráfico de la aplicación solo está disponible a partir del framework 3.0. De todas formas esta es una buena noticia para nosotros como desarrolladores por qué podemos hacer aplicaciones con Blend que tienen diseños, interactividades y experiencias de usuario muy novedosas pero que corren (en general) en la base instalada de usuarios con XP SP2.

Preguntas: Analizando este problema de hoy con Juan Diego nos entró la duda sobre lo que pasara con silverligth, es decir si meto audio a una aplicación silverlight y no tengo windows media player 10 o superior no sonará?, habrá que probarlo.

Espero que sea de ayuda, nosotros pasamos varias horas tratando de encontrar la causa de este comportamiento.

 

Juan Carlos Peláez

MCTS

Miembro de Microsoft Speaker Group Andino

Miembro del Grupo Influencer de Microsoft Colombia.

Keywords: Microsoft Expression Blend, Gattaca, Visual Studio, Framework 3.0, .Net, Windows XP, Audio, Sonido, Windows Media Player, Problemas, storyboard.

Thursday, September 20, 2007 8:24:10 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Blend Expression | SilverLigth | WPF
# Monday, September 10, 2007


Share

Microsoft ha anunciado el lanzamiento de la version final (1.0) de Silverlight un plugin para los diferentes browsers de internet que permite ejecutar código manejado y/o javascript con presentaciones innovadoras basadas en XAML, así como mejoras en aspectos como el video.

Una de las características principales que son necesarias para que esto sea exitoso y pueda competir realmente con Flash Player es que sea interoperable entre plataformas y entre los browsers. para lograr que funcione correctamente sobre Linux el grupo de Mono (en Novell) con Miguel Icaza a la cabeza han establecido una alianza para crear MoonLight, la version Linux, de SilverLight.

Algunas de las caracteristicas importantes de Silverlight incluyen:

  • · Render de XAML en el browser, animaciones, gráficos vectoriales y todos los juguetes que contiene esta tecnología.
  • · soporte para streaming desde cualquier web server, esta característica es muy útil ya que simplifica la infraestructura y la experiencia de usuario al implementar video en un sitio web.
  • · Soporte opcional para servidores de Streaming como Windows Media Server. (Producto gratuito que hace parte de Windows Server)
  • · Muchas mejoras en la experiencia del usuario al trabajar con Video en el Servidor.

También fue anunciado el lanzamiento de la versión final de Expression Encoder, una aplicación realmente buena para generar videos que pueden usarse con Silverlight, esta aplicación permite tomar un video de casi cualquier formato y convertirlo en WMV.

Sobre la propagación de este componente, algunos cálculos independientes demuestran que los sitios propiedad de Microsoft tocan las dos terceras partes de los usuarios de internet en un año, esto sin contar con muchos otros sitios como terra, MBL, etc. que ya están usando Silverlight en sus sitios garantizarán la rápida popularización de este componente y sus aplicaciones.  

Convirtiendo Archivos a XAML.

Como una de las características fundamentales de Silvelight es el uso de XAML para el manejo de los aspectos gráficos muchos necesitarán convertir sus activos (assets) de otras herramientas o formatos a XAML, para ello algunos han creado herramientas que siguen avanzado en ese tema, una bien recomendada (aunque no la he usado personalmente) está publicada en WPF-Graphics site

Gattaca y Silverlight.

La primera compañía colombiana en anunciar la capacidad de realizar proyectos con Expression Blend y  Visual Studio, así como proyectos que utilicen las funcionalidades de Silverlight es Gattaca S.A. Esto beneficia especialmente a los clientes de Gattaca en España, Colombia y Latinoamérica.

 

Pd:

Un buen ejemplo de cómo usar Silverlight: MSN's new Election '08 site, también creo que es un buen ejemplo de cómo debería ser usada la tecnología en un proceso electoral, como el que se avecina en Colombia,  sin embargo se requiere contenido de parte de los diferentes candidatos que es algo que parece que ninguno tiene.

 

Espero que sea de Ayuda.

 

Juan Carlos Peláez

MCTS

Miembro del Speaker Group de Microsoft Andino

Miembro del Influencers Group  Colombia.

 

Keywords: Silverlight, Microsoft Expression Encoder, Microsoft Expression Blend, Encoder, Visual Studio 2008, Convertir a XAML, Proyectos con Silverligth, Proyectos con Microsoft Expression.

Monday, September 10, 2007 11:42:58 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [1] - Trackback
.net | Articulos de Desarrollo | SilverLigth | Visual Studio | WPF
# Monday, August 13, 2007


Share

Hola a todos, en las últimas semanas hemos estado desarrollando con el grupo de diseño de Gattaca un Juego para uno de nuestros clientes y hemos decidido usar WCF y WPF, estamos usando el preview de Agosto de Blend  y hemos encontrado diversas cosas que pueden parecer interesantes a otras personas que estén llevando a cabo proyectos similares.

 

Desde la perspectiva del Diseñador Gráfico la cosa siempre se ve diferente así que estaremos publicando es este blog algunas notas sobre lo que podemos y no podemos hacer en blend, lo que es fácil y lo que no.  : http://tatuajefalso.wordpress.com/

 

Espero que sea de Utilidad.

 

Juan Carlos Peláez

MCTS

 

Keywords: Blend, Expression, WPF, Diseñadores Gráficos, Juan Peláez, Juan Diego Velazco, WCF.

Monday, August 13, 2007 7:22:08 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Blend Expression | WPF
# Monday, August 06, 2007


Share

El grupo de desarrollo de Microsoft ha liberado la versión beta 2 de visual studio 2008 así como la actualización del framework (version 3.5), también la actualización RC de Silverlight y una actualización del Control Toolkit de Ajax para VS2008, (sin mencionar el update de agosto del blend2 de expression).  Con todo esto cada vez estamos más cerca de la actualización final de las herramientas de desarrollo y siguiendo con la tendencia de los últimos meses (años) no solo son correcciones de algunos bugs, es toda una nueva forma de enfrentar los problemas de desarrollo con herramientas como LINQ, WWF, WCF y sobre todo Silverlight y WPF que seguramente cambiaran la forma como entendemos la experiencia del usuario en internet.

 

Todos los geeks que están conectados con scott guttie y su grupo de desarrollo han visto ya instrucciones y procedimientos de instalación, pero para aquellos que lo prefieren en español y paso a paso aquí está el paso a paso de poner mi maquina de pruebas en VS2008 y demás bits nuevos.

 

Nota: Yo hice todo esto en una maquina virtual corriendo Windows 2003 server, recomiendo mucho hacer esto para no tener problemas con la máquina de "producción" en la que están desarrollando actualmente, aunque todas las instalaciones son compatibles side by side es la mejor y más segura práctica. (También es posible descargar la maquina virtual ya instalada con todo en el mismo sitio de VS2008.)

 

Entonces:

 

1. Desinstale Visual Studio 2008 Beta 1, MSDN y Visual Studio express que tenía en esa máquina, también desinstale acrópolis.

2. En el sitio de Silverlight descargue la versión RC actualización Alpha 1.1. para desarrolladores, la instalación es muy simple e inteligente y me dejo la maquina en la ultima versión disponible., Download the Silverlight Alpha.

3. Gracias a Ivanov de Microsoft Colombia tuve acceso al DVD con los 3.5 gigas de Visual Studio 2008 Professional, gracias parce!! :-)

4. Para los que no tienen esa fortuna existen dos formas, la primera para los que no están detrás de firewalls:

a. Instale Microsoft Secure Content Downloader

b. Seleccione Visual Studio Pro SKU de la lista y dígale salvar como...

5. Para los que están detrás de un firewall deben usar la pagina de  Microsoft VS2008 Beta 2 donde pueden descargarla instalando un complemento de descargas inteligentes para IE7 o pueden hacer una descarga normal http (no recomiendo esto último son 3.5 gigas). Pueden descargar la imagen ISO del DVD o los archivos estan las versiones Team Sytem, Profesional, etc.

6. Yo instale Visual Studio 2008 Team System Beta 2, seleccione la versión full, no tuve ningún problema en la instalación aunque se tardo un rato pero creo que es más por mi maquina virtual.

7. Después de Instalar debe correrse un script que pueden descargar de aquí: Run this file post installation. , esto es muy importante porque permite tener proyectos en Ajax con el framework 2.0 (los que estan haciendo ahora) y también proyectos con el Framework 3.5, sin correr este archivo se tendrá el siguiente problema: al abrir el proyecto de ajax actual se establecerá una referencia con el framework 3.5 que hará obligatorio instalar esta versión del framework en la maquina donde se instala el proyecto. (A diferencia de otras versiones de VS como 2005 y 2003 el VS2008 permite desarrollar proyectos para cualquier versión del framework, pero eso será tema de otro blog).

8. Ahora, si su máquina alguna vez tuvo instalado algún beta vaya a la ventana de línea de comando de VS2008 en herramientas de VS2008, y ejecute el siguiente comando  "DevEnv /resetsettings" (esto solo debe hacerse por una vez y es importante porque garantiza el rendimiento adecuado del nuevo editor web incluido con VS2008).

 

Con esto ya podrá crear nuevos proyectos o cargar los actuales en Visual Studio 2008, en una rápida exploración de características solo en la creación de proyectos podrá ver la opción de crear proyectos para frameworks diferentes (Derecha arriba de la ventana de crear proyecto),  también encontrará los proyectos de tipo WCF y WWF sin tener que instalar complementos adicionales (y si, él sabe que no puede crear proyectos de WCF para el Framework 1.1). Los proyectos de Acrópolis (nueva versión de Windows Forms para WPF) merecen su propio blog y una de las mejores cosas: los proyectos de tester de Visual Studio Team System estan incluidos, no se si esto será asi en la versión final pero deberia serlo, los proyectos de pruebas son demasiado importantes para que estén por fuera en otra versión de visual studio.

 

Ahora, si lo que usted quiere (como yo) crear aplicaciones para internet con la última tecnología disponible no puede dejar de instalar los siguientes:

 

1. Expression Blend 2 August Preview

 

2. Silverlight Tools Alpha for VS2008.

 

Espero que sea de Ayuda.

Juan Carlos Peláez
MCTS

Miembro del Microsoft Speaker Group Andino  

Miembro del Microsoft Influencers Group de Colombia.

Keywords: VS2008 Beta 2, Instalación VS2008, Juan Peláez, .Net, Visual Studio, Framework 3.5, Visual Studio 2008, Instrucciones Instalación

Monday, August 06, 2007 11:05:07 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Pruebas | Visual Studio
# Friday, July 13, 2007


Share

Durante la presentación de Visual Studio Team System en Medellín tuve oportunidad de discutir con Freddy Angarita un problema que se presentaba en mi maquina con la ventana de Performace Explorer en Visual Studio, gracias a sus instrucciones ahora puedo ejecutar análisis de código, comparto aquí el problema y la solución.

Problema: No puedo ver la ventana Performance Explorer dentro de Visual Studio Team System, debido a ello no puedo iniciar análisis de rendimiento para mis aplicaciones.

Solución: ejecutar desde la línea de comandos de Visual Studio la instrucción devenv /resetskippkgs (Si es una maquina corriendo vista tiene que abrir esta consola como administrador).

Investigando un poco más esta línea de comando lo que hace es borrar todas las etiquetas skip VSPackage que se han colocado en el entorno de desarrollo, al eliminar las etiquetas el sistema carga nuevamente todos los Paquetes de VS, en este caso particular el de Análisis de Rendimiento (Performance Explorer)

Todas las funcionalidades Out-Of-The-Box de visual studio (editor de c#, por ejemplo) se implementan a través de VSPackage, por los tanto este mismo comportamiento y solución puede aplicar para otros elementos de visual studio como diseñadores de páginas, clases, etc, y no solo para visual studio team system sino para otras versiones como professional y express.

Espero que sea de utilidad

 

Juan Carlos Peláez
MCTS

Keywords: Visual Studio Team System, Visual Studio Express, Visual Studio Professional, Performance Explorer, Visual Basic, C#, Microsoft, Juan Peláez.

Friday, July 13, 2007 7:35:09 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | Visual Studio


Share
 
Durante el desarrollo de la nueva versión de nuestras aplicaciones usando arquitecturas distribuidas con WCF encontré los siguientes problemas en las herramientas de Visual Studio que quiero compartir aqui.
 
El primero, que muchos habran identificado, es que al generar el código usando la opción de nueva libreria de WCF en visual basic genera una clase datacontract1 que no tiene marcada ninguna de sus propiedades como datamember, por lo que cuando se publica el servicio y se genera el proxy esta clase no tiene ninguna propiedad publica que pueda trasmitirse con por el cable, esto se soluciona facilmente marcando como datamember la propiedad generada para que quede asi: (en negrillas lo que hay que adicionar)
 
<DataContract()> _
Public Class DataContract1
Private m_firstName As String
Private m_lastName As String
 
<DataMember()> _
Public Property FirstName() As String
Get
Return m_firstName
End Get
Set(ByVal value As String)
m_firstName = value
End Set
End Property
 
<DataMember()> _
Public Property LastName() As String
Get
Return m_lastName
End Get
Set(ByVal value As String)
m_lastName = value
End Set
End Property
End
Class
 
El segundo tiene que ver con el nombre por default para el namespace que coloca Visual Studio a los proyectos, este namespace genera un problema en la serialización de los objetos marcados como datacontract ya que estos llegan correctamente al servicio pero no estan inicializados, si se depura el cliente se ve correctamente creado el objeto pero en el servicio no estan los valores.
 
Este punto se puede resolver usando alguno de los siguientes procedimientos:
 
a. Eliminado el namespace colocado por default en el cliente, el host y el servicio. (usando las propiedades del proyecto dentro de visual studio).
b. al generar el proxy del servicio usando la herramienta svcutil.exe usar el modificar /n para indicar que se quiere generar un proxy con el namespace del cliente, algo como esto:
 
svcutil.exe *.wsdl *.xsd /namespace:*,MyNamespace /language:VB
 
siendo MyNamespace el nombre del namespace del cliente del servicio.
 
Estos problemas no se presentan cuando se usan servicios con tipos basicos del CRL como strings o enteros o en algun otro tipo de contracto (operacion,fault,etc), es unicamente para cuando tiene contratos de datos del tipo datacontract, tampoco se presentan en C#.
 
espero que sea de utilidad.
 
Juan Carlos Peláez
MCTS
 
KeyWords: WCF, svcutil, Visual Basic, Framework, net, Arquitectura, Componentes Distribuidos, Cliente, Servicio, Host, Microsoft
Friday, July 13, 2007 7:33:19 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Arquitectura | Articulos de Desarrollo | WCF | Web Services


Share

El concepto de las pruebas unitarias ha venido desarrollando todo un nuevo modelo de programación, los modelos basados en pruebas (TDD por Test Driven Development) han demostrado sus beneficios entre los que se pueden contar rápidamente la confianza en el código generado, la habilidad de hacer refactoring mucho más rápido y con más confianza y la reducción en los tiempos de depuración.

Visual Studio Professional versión 2005 es una de las herramientas de desarrollo más usadas en el mundo, y la herramienta preferida de los desarrolladores sobre plataforma Microsoft, sin embargo los equipos de desarrollo que no utilizan Visual Studio Team System versión Developer o Tester no tienen la posibilidad de realizar pruebas unitarias Out-Of-The-Box, esta guía ayudar a configurar Visual Studio Professional para la ejecución de pruebas unitarias.

1. Preparando el Ambiente.

Lo primero es descargar un framework de pruebas unitarias, aunque existen varios recomiendo el uso de NUnit, en nuestras pruebas ha funcionado bastante bien, tiene funcionalidad consistente y es fácil de configurar y usar. Descárguelo e instálelo del siguiente link: (Para el Framework de NUnit (.NET)) http://www.nunit.org/

Instalando nUnit podrá escribir, ejecutar y tener resultados de pruebas unitarias, pero aún desde fuera de Visual Studio, Para la integracion con el IDE de Visual Studio deberá instalar un Add-in que puede descargar de esta dirección: http://www.testdriven.net/, esto permitirá la ejecución de pruebas unitarias, con depuración, cobertura (coverage) y otras características desde el propio entorno del IDE de Visual Studio.

2. Escribiendo el Código de Pruebas.

Con el entorno listo podemos crear el proyecto de Pruebas para nuestro ensamblado, yo recomiendo crear otro proyecto para poder tener clara independencia entre el proyecto de código y el proyecto de pruebas, una ventaja adicional de hacerlo de esta forma es que puede subir el proyecto de pruebas a su sistema de control de versiones. (Una recomendación adicional tiene que ver con la nomenclatura del namespace, cree un namespace de pruebas para su proyecto).

En el nuevo proyecto creado debe agregarse una referencia al ensamblado nunit.framework.dll que encontrará en la carpeta nUnit 2.4/Bin, en la ubicación de archivos de programas o donde haya instalado el framework del nUnit.

También debe agregar una referencia al proyecto o ensamblado que quiere probarse.

Ahora puede escribir una clase de pruebas unitarias que se parecerá a esta:

Imports NUnit.Framework
Imports TestClass = NUnit.Framework.TestFixtureAttribute
Imports TestMethod = NUnit.Framework.TestAttribute
Imports TestInitialize = NUnit.Framework.SetUpAttribute
Imports TestCleanup = NUnit.Framework.TearDownAttribute

<TestClass()> _
Public Class eMailTest

end Class.

Como puede verse aquí, se han usado unos alias para los atributos del framework que facilitan su uso en la clase, estos alias le permitirán al framework de nunit identificar la clase de pruebas, los métodos de pruebas, los métodos de inicialización y finalización del proceso de pruebas.

Estos alias permitirán decorar la clase como en el ejemplo anterior que la clase ha sido decorada con el atributo TestClass

Lista la clase, ahora podemos construir métodos de pruebas, un método básico de pruebas quedaría parecido a este:

<TestMethod()> _
  Sub AddFolderTest()

...Su Código aqui.

End Sub

Ahora con el botón derecho del mouse sobre el método o la clase de pruebas puede ejecutar la prueba unitaria.

Ahora bien la idea de esta pequeña guía no es reproducir todo el manual de nunit pero hay algunos tips que pueden ser interesantes, 1. Use las funciones assert dentro de sus métodos de pruebas, 2. en los casos en que la prueba debe retornar una excepción utilice la decoración expectedexception para indicarle a nunit cual es el tipo de excepción que espera, 3. Puede configurar el ambiente de pruebas usando un método decorado como TestInicialize y limpiar todo usando TestCleanup.

En próximos artículos hablaré de 1. Como usar BD para ejecutar conjuntos de pruebas automaticos simulando la funcionalidad de Visual Studio Team System y 2. cómo crear un modelo de pruebas usando Enterprise Services que al finalizar las pruebas realice un rollback de todos los datos de pruebas insertados.

Espero que sea de utilidad.

Juan Carlos Peláez

MCTS

Keywords: Visual Studio Team System, Visual Studio Proffesional 2005, nUnit, Mejores Practicas, Metodología, Microsoft, VB, Pruebas Unitarias, Desarrollo basado en Pruebas, Eventos Microsoft Colombia.

Friday, July 13, 2007 7:31:05 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Articulos de Desarrollo | nunit | Pruebas
# Tuesday, July 10, 2007


Share

Aunque no sé si sea  un escenario muy común, (para nosotros en Gattaca si lo es), hay aplicaciones legacy escritas en ASP clásico que empiezan a integrarse con aplicaciones en .Net, bien sea como parte de un proceso paulatino de migración o como parte del proceso de agregar nuevas funcionalidades a la aplicación existente, en ambos escenarios una forma simple de integrar la aplicación asp con la nueva aplicación .net es exponer las nuevas funcionalidades de la aplicación .Net por medio de servicios web.

Aunque existe en La Red literatura respecto a la forma como debe hacerse esta invocación del web service desde la página web no todos los ejemplos apuntan a escenarios reales, el objetivo de este post es mostrar cómo debe realizarse esta integración para aplicaciones del mundo real.

1. El primer problema consisten en identificar cuáles son los tipos de datos que se van a transferir entre la aplicación asp y la aplicación .net, mi recomendación es pasar datos de tipos básicos del CRL, es decir, strings, longs, integers. Aunque es posible pasar objetos representados como XML para que después sean des-serializados por la aplicación .net esto complica bastante el escenario e incluye nuevos elementos de error. (Nosotros transferimos solo strings y creamos los objetos en la aplicación .net, para lo cual creamos los constructores adecuados)

2. El siguiente problema es identificar quien es el realmente el cliente del servicio, en la mayoría de los escenarios el cliente del servicio es código del lado del servidor, (el código que esta entre los tags <%%> es el código del servidor), también es posible que el cliente sea alguna de las funciones JavaScript de la página que se quiere invocar. (Este es el escenario que derivo en la existencia de AJAX Asynchronous JavaScript And XML).  Por ahora nos enfocaremos en el escenario donde el código del lado del servidor es quien consume el web service.

3. Ahora debemos seleccionar la forma como se comunicará la aplicación asp con el servicio web, básicamente hay dos opciones, usar SOAP, o usar el parser de xml (HTTP Post) que contiene un objeto poco conocido llamado MSXML2.ServerXMLHTTP que puede ayudarnos a realizar estas llamadas. Básicamente es un tema de gusto, facilidad y conveniencia, sin embargo como es necesario tener instalado el Toolkit de SOAP para poder usar los objetos de SOAP desde asp clásico y dicho componente se queda sin soporte a partir de Marzo 31  del 2008, entonces nosotros preferimos usar HTTP Post.

4. Bien lo siguiente es escribir el código del servicio web y modificar la página asp para que lo consuma, lo del servicio web no lo vamos a profundizar, es una clase con la decoración webservice con algunos métodos decorados webmethod, etc. un ejemplo sencillo puede ser algo como esto:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

<System.Web.Services.WebService(Namespace:="http://MyNameSpace/services/MyProduct> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WorkFlowServices
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function ServiceTest() As String
        Return "En Ejecucion..."
    End Function

    <WebMethod()> _
    Public Function MyMetodoconParametros(ByVal Client As String, ByVal UserID As Long, ByVal IDProcessCase As Long, _
                                                ByVal Sequence As Long, ByVal EntryDataType As String, ByVal IDEntryData As String, ByVal EntryData As String) As Long

...hacer algo, retornar algo.

    End Function

End Class 

5. Ahora como consumir este web service desde la página asp clásica, es algo como esto:

<%

Dim xmlhttp

Dim DataToSend

Dim postUrl

postUrl = "http://IPMyServer/Services/WorkFlowServices.asmx/MyMetodoconParametros"

DataToSend="Client=Tester&UserID=1&IDProcessCase=80&Sequence=0" & _

"&EntryDataType=TestWebService&IDEntryData=0&EntryData=1"

 

Response.write postURL

Response.write "<br>"

 

Set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")

xmlhttp.Open "POST",postUrl,false

xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"

xmlhttp.send DataToSend

 

Response.Write(xmlhttp.responseText)

%>

Lo importante de este segmento de código, es la forma como se construye la invocación del método, la variable postURL tiene la dirección del servicio web asi como el nombre del método que se va a invocar. Luego la variable DataToSend tiene la información de los valores que toman los diferentes parametros que se van a pasar al metodo del web service (la recolección de estos parámetros depende del tipo de uso e interfaz que se tenga con los usuarios pero puede ser la recolección de una forma usando request.form o la recolección de los parámetros del QueryString que invocó la páginas ASP).  

Otra cosa importante es la definición del encabezado en la linea xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded" .

Listo, se invocó el web service, ahora el resultado puede recuperarse de una de estas propiedades: responseBody, responseStream, responseText, and responseXML., (nosotros usamos response.text que nos retorna todo el entity body como un stream)

Tips Súper Importantes:

· Cuando su cliente del servicio web sea el propio código asp ("del lado del servidor") se recomienda usar el objeto MSXML2.ServerXMLHTTP que ha sido diseñado y optimizado para comunicaciones entre servidores.

· El código anterior genera un error en la mayoría de los servicios web del framework 2.0, es un error del tipo "Request format is unrecognized for URL" o en español "Formato de solicitud no reconocido para la dirección URL" esto se debe a que los protocolos Get y Post estan deshabilitados por omisión (default) en las aplicaciones del framework 2.0 para todas las peticiones de orígenes diferentes a Localhost. (Esa es la razón por la que la página de prueba de los servicios web como se ve desde otra maquina no tiene el formulario Test Service), por lo tanto para que efectivamente se realice la invocación hay que habilitar estos protocoles, eso se hace incluyendo las siguientes líneas en el archivo web.config del servicio web de .net.

<system.web>

    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>

(...)

</system.web>

En este articulo hay más información del comportamiento de los protocolos, aunque solo habla del framework 1.1. también ocurren con en el framework 2.0.

Espero que sea de utilidad

 

Juan Carlos Peláez
MCTS

Keywords: Web Services, ASP Clasic, .Net, Framework 2.0, VB, "Formato de Solicitud no reconocido",

Tuesday, July 10, 2007 1:12:34 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Arquitectura | Articulos de Desarrollo | WCF | Web Services
Le gusta este sitio?
Contácteme
mail: jpelaez at juanpelaez.com
Actualizaciones en Twitter
FeedBurner
Maps
Locations of visitors to this page
Blogroll
[Feed] Eugenio Pace
Arquitecto del grupo Software as a Service en Microsoft
[Feed] Juan Diego Velazco
El mejor diseñador gráfico conocido y un gran tipo
[Feed] Scott Hanselman
Sponsors
Estadísticas
Total Posts: 94
This Year: 4
This Month: 0
This Week: 0
Comments: 42
Archivo
<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Acerca de...

Aviso Legal
Las opiniones expresadas en este sitio representan el punto de vista de Juan Peláez sobre diferentes temas y no representan la posición de 3Metas Corp, Microsoft, Studiocom.com.Inc. o de cualquier otra compañía que haya contratado los servicios de consultoría de Juan Peláez

© Copyright 2010
Juan Carlos Peláez
Sign In

Technorati Profile
All Content © 2010, Juan Carlos Peláez
El tema 'Business' para DasBlog fue creado por Christoph De Baene (delarou) y modificado para español por Juan Peláez
Powered by FeedBurner