Programación y Estrategias de Negocios RSS 2.0
# Wednesday, August 20, 2008

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | Developer Evangelist | Visual Studio | WCF | Web Services
# Tuesday, February 12, 2008

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | Sharepoint | Visual Studio | VS2005
# Wednesday, January 16, 2008

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)  #    Comments [0] - Trackback
.net | VS2008
# Wednesday, January 09, 2008

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | Sharepoint | Silverlight | VS2008 | WPF
# Wednesday, December 12, 2007

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)  #    Comments [0] - Trackback
.net | Hoja de Vida Juan Pelaez | Speaker Microsoft
# Wednesday, November 21, 2007

 

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)  #    Comments [0] - Trackback
.net | ASP.NET | Eventos Microsoft | FastCGI | PHP | Speaker Microsoft

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)  #    Comments [0] - Trackback
.net | AJAX | ASP.NET | Blend Expression | Eventos Microsoft | Silverlight | Speaker Microsoft | WPF
# Monday, October 29, 2007

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | ASP.NET | Visual Studio

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | MIIS 2003
# Tuesday, October 02, 2007

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | Web Services | Windows Live | Windows Live ID
# Monday, September 24, 2007

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)  #    Comments [0] - Trackback
.net | AJAX | Articulos de Desarrollo | Java | Visual Studio

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)  #    Comments [0] - Trackback
.net | Articulos de Desarrollo | Blend Expression | SilverLigth | WPF

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 fu