Programación y Estrategias de Negocios RSS 2.0
# Saturday, March 27, 2010


Share

Uno de los clientes de 3Metas tiene una base instalada muy importante de aplicaciones construidas en Visual Fox Pro 7, 8 y 9. Durante los últimos meses hemos trabajado en conjunto para desarrollar una estrategia de migración de estas aplicaciones hacia una arquitectura orientada a servicios (SOA) construida con WCF y el Framework 3.5 de .Net.

Uno de los aspectos claves de un proceso como estos consiste en evitar al máximo que se siga construyendo funcionalidad en Visual Fox Pro (VFP) así que el primer paso de la estrategia consiste en la integración de VFP con servicios de Windows Communication Foundation (WCF) de forma tal que las aplicaciones actuales se vean beneficiadas de las mejores en la lógica de negocios o de nuevas funcionalidades que se construyen con la última tecnología disponible.

1. Lo primero que debe hacerse es construir un servicio de WCF en lo que no profundizare especialmente.

2. En nuestro caso una vez que tuvimos construido el servicio construimos una fachada para su utilización desde VFP.

3. En esta fachada establecemos las referencias a los servicios por medio de la herramienta de Visual Studio, allí verificamos el tipo de conversión que se realizará sobre las colecciones genéricas, como queremos proteger la inversión del cliente en este proyecto esta fachada deberá poderse usar desde VFP pero también desde aplicaciones desarrolladas con .Net hoy y en el futuro.

4. Creamos una clase que estará visibles por COM desde VFP y que será la fachada para esta herramienta

5. Esta clase debe estar decorada como COM visible [ComVisible(true)] y para asegurar las opciones de Intellisense también agregamos la decoración de generación de la Interfaz [ClassInterface(ClassInterfaceType.AutoDual)]

6. Aunque visual Studio 2008 (VS2008) crea el constructor de forma predeterminada preferimos asegurarnos así que agregamos el constructor, tener presente aquí que el constructor no puede sobrecargarse ni recibir parámetros para evitar problemas en COM

7. Luego creamos los métodos que serán consumidos por VFP y se los decora como visibles para COM [ComVisible(true)].

8. En nuestro caso los métodos del servicio de WCF devuelven colecciones genéricas de tipos específicos, por ejemplo la colección de colores de la entidad color: [CollectionDataContract(Name = "Colores", Namespace ="http://myDomain.com/Data/2010/01")] public class Colores: Collection<ColorEntity> {}, para que estos métodos puedan ser consumidos desde VFP y teniendo en cuenta la restricción de COM para el manejo de genéricos se realiza una modificación al método para que no retorne la colección sino que retorno un arreglo de objetos que es algo que si puede ser manejado por VFP, la posibilidad de convertir la colección genérica en un arreglo se adiciono con LINQ, así que debe establecerse la referencia a LINQ en el proyecto y la clase, al final debe quedar algo como esto:

 

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Runtime.InteropServices;
   6:  using ServicioProducto;
   7:   
   8:  namespace ServicesFacade
   9:  {
  10:   
  11:      [ComVisible(true)]
  12:      [ClassInterface(ClassInterfaceType.AutoDual)]
  13:      public class ProductoFacadeVFP
  14:      {
  15:          //default constructor
  16:          public ProductoFacadeVFP() {}
  17:        
  18:          /// <summary>    
  19:          /// Metodo trae los colores del Sistema
  20:          /// </summary>
  21:          /// <returns></returns>
  22:          [ComVisible(true)]
  23:          public Color[] GetColores()
  24:          {
  25:              Colores colores = null;
  26:   
  27:              try
  28:              {
  29:                  ServicioProductoClient srv = new ServicioProductoClient();
  30:                  colores = srv.GetColores();
  31:                  srv.Close();
  32:              }
  33:              catch (Exception ex)
  34:              {
  35:                  throw ex;
  36:              }
  37:   
  38:              return colores.ToArray();
  39:          }
  40:       }
  41:  }

 

9. Al compilar este proyecto se obtendrá una DLL y un archivo de configuración que corresponde a la forma como se establecerá la comunicación con el servicio (Address y Bindings), estos dos archivos son los que deben entregarse a los desarrolladores de VFP para que consuman los servicios.

 

Completada la fase de preparación y construcción de los servicios y su fachada los desarrolladores de VFP ya pueden integrar estos componentes en sus aplicaciones, para ello deben realizarse las siguientes actividades:

 

1. Registrar la Interfaz COM de la fachada de los servicios por medio del comando regasm, idealmente debería utilizarse el parámetro CODEBASE, la instrucción sería algo como esto si se corre desde el directorio del Framework 2.0 de .Net: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>RegAsm.exe "C:\3Metas\Clients\Cliente\Proyecto\ServiceFacade\ ServicesFacade.dll" /CODEBASE

2. Uno de los aspectos más importantes de WCF es la separación de la configuración del servicio del código, el address y el binding del servicio que están definidos en el archivo de configuración, este archivo de configuración se generó al compilar la fachada. Para cada proyecto en el que va a utilizarse la fachada se debe copiar el archivo de configuración del servicio en la misma ruta del ejecutable de la aplicación de VFP o para depuración en la ruta donde reside el proyecto, este archivo debe renombrarse con el nombre de la aplicación de VFP y la extensión .config, en nuestro caso queda algo como esto: aplicaciondelcliente.exe.config. Muchos de los errores que se pueden presentar al usar la fachada tienen que ver con el hecho de que la aplicación no encuentra el archivo de configuración.

3. Registrada la interfaz COM de la fachada y renombrado y ubicado correctamente el archivo de configuración del servicio ya está todo listo para que el desarrollador pueda utilizar los servicios desde VFP. Solo debe utilizar el método CREATEOBJECT con el nombre de la clase de la fachada. Por ejemplo:

 

 

   1:  LOCAL Colores 
   2:  LOCAL MyColor as ServiceFacade.ServicioProducto.Color 
   3:  LOCAL ProductoFacade as ServicesFacade.ProductoFacadeVFP 
   4:   
   5:  ProductoFacade = CREATEOBJECT("ServicesFacade.ProductoFacadeVFP") 
   6:  Colores = ProductoFacade.GetColores() 
   7:   
   8:  OPEN DATABASE "C:\3Metas\Clients\Integration\sampledata" EXCLUSIVE 
   9:  USE color IN 0 EXCLUSIVE ALIAS tblColor 
  10:  ZAP 
  11:   
  12:  FOR EACH Item IN Colores 
  13:      INSERT INTO color (ColorId) VALUES (Item.ColorId) 
  14:  ENDFOR 

 

Listo, el equipo de desarrolladores de VFP está consumiendo servicios de WCF.

 

Juan Peláez

CTO

3Metas Corp.

 

 

Aclaraciones importantes:

 

· Con Visual Fox Pro se pueden consumir servicios Web, así que si se exponen los servicios de WCF con un binding básico HTTP el servicio de WCF se ve exactamente igual que un servicio web y por tanto se consume sin problemas desde FoxPro, sin embargo desde la perspectiva técnica puede llegar a tener problemas con objetos de negocios que VFP no entienda o que el servicio de WCF este expuesto por otro binding lo que haría imposible consumirlo desde VFP nativo, en nuestro caso las aplicaciones no estaba construidas consumiendo servicios web y el cliente no quería invertir tiempo de los desarrolladores en que aprendieran a consumir servicios web desde VFP, de allí tenía sentido que ellos consumieran objetos COM que les son familiares.

 

· Al crearse el proyecto de fachada podría configurarse por medio de VS2008 la conversión de las colecciones genéricas en arreglos (ARRAYS) sin embargo eso haría que la fachada perdiera tipos de datos que podrían ser utilizados por clientes de .Net

 

Referencias:

http://www.dotnet247.com/247reference/msgs/15/75021.aspx
http://www.west-wind.com/presentations/VfpDotNetInterop/DotNetFromVFP.asp
http://www.west-wind.com/presentations/dotnetfromVfp/DotNetFromVfp_ComplexObjects.asp
http://blogs.msdn.com/calvin_hsia/archive/2005/09/02/460206.aspx

Publicidad

Migrando aplicaciones de visual fox pro a .net? tratando de establecer una politica o un proceso de desarrollo para sus aplicaciones legacy? contactenos a sales@3metas.com, nuestro equipo tiene la experiencia y las habilidades necesarias para tener resultados exitosos.

Saturday, March 27, 2010 8:24:00 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
3Metas | Arquitectura | Software as a Service | VS2008 | WCF
# Saturday, July 11, 2009


Share

En 3Metas usamos Visual Studio Team Fundation Server (VSTFS2008) como sistema de gestión de proyecto y control de versiones (*), sin embargo al momento de crear las soluciones cometí un error por no revisar con cuidado la guía de Branching de Patterns And Practices de Microsoft lo que me llevo a quedar con los proyectos y la documentación andando pero con un esquema incorrecto de control de código fuente.

 

La solución borrar (destruir) los repositorios de Código Fuente (previo backup por supuesto J) y reorganizar el sistema.

Para destruir un repositorio de código Fuente, se utiliza el comando tf destroy, (Btw: se encuentra en la ruta Program Files\Microsoft Visual Studio 9.0\Common7\IDE>) desde la consola de comandos, una confirmación de borrado aparecerá y luego se listaran los archivos y carpetas que se eliminaron.

 

Después de Borrado puede usarse VS2008 con el Team Explorer para volver a la interfaz de gestión de los sistemas de control de código fuente y allí crear de nuevo el repositorio y configurarlo correctamente. Es importante anotar que hay que volver a asignar los permisos a los usuarios que aunque siguen teniendo permisos en el TFS en el Proyecto al que están asignados ahora no tienen permisos en el repositorio de control de versiones. Estos permisos se asignan en la pestana de seguridad de las propiedades del repositorio

 

clip_image002

(el borrado no es lo mismo, el borrado solo marca el repositorio pero sigue existiendo en el sistema se puede ver aquí: Tools > Options > Source Control > Visual Studio Team Foundation Server and check Show deleted items in the Source Control Explorer que los archivos no se borraron)

(Esto también es diferente a la eliminación del proyecto porque yo no quería perder el portal, documentos, work ítems, etc que ya se habían alimentado al sistema)

 

Juan Pelaez

CTO

3Metas Corp.

 

KeyWords: TFS2008, Visual Studio Team Foundation Server 2008, Buenas Prácticas de Desarrollo de Software, Branching, Control de Versiones, Juan Pelaez, 3Metas, Consultores, Expertos Tecnología Microsoft, Estrategia Digital, Nuevos Medios, Desarrollo de Soluciones Interactivas, Twitter, Facebook, Integración de Redes Sociales.

 

 

Team Fundation Server (TFS) es una de esas herramientas “must to have” para una compañía de tecnología como la nuestra, las características de control de versiones, gestión del proyecto, personalización de la metodología de desarrollo, etc, etc, la hacen imprescindible en el modelo que estamos construyendo de una empresa en la que cada persona puede trabajar desde donde quiera.

 

Aunque no utilice VSTFS2008 una compañía que desarrolle software en algún momento siempre debe tener un sistema de control de versiones, uno basado en Internet agrega gran flexibilidad, otro sistema que hemos usado con buenos resultados es Subversion.

 

Publicado en www.juanpelaez.com

 

Publicidad: Necesita integrar sus estrategias de comunicaciones tradiciones con nuevos medios? está buscando aprovechar las oportunidades de mercadeo BTL usando Facebook, Twitter, Flicker, YouTube? Contactenos a sales@3metas.com, tenemos la experiencia y las capacidades para que su proyecto sea exitoso.

 

Saturday, July 11, 2009 1:26:00 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [1] - Trackback
Gestion de Empresas de Software | TFS2008 | VS2008
# 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
# Tuesday, November 25, 2008


Share

He empezado un nuevo proyecto para Microsoft Colombia y la Secretaria de Salud que es a la vez una prueba de concepto de una migración de una aplicación de VS2003 a VS2008 como la reconstrucción de la aplicación (refactoring) hacia un modelo orientado a Software + Servicios.

Uno de los entregables del proyecto es un Web Site, así que pareció una buena oportunidad para comenzar a explorar JQuery, que lo había visto por ahí con los anuncios de soporte en VS2008 y demás pero nunca lo había tocado.

Lo primero es hacerlo funcionar, eso lo explico mejor Scott Guttrie en un post, entonces yo cree un Web Application, luego una carpeta scripts, y en ella copie el archivo jquery-1.2.6.js y el archivo jquery-1.2.6-vsdoc.js, estos dos me permiten tener JQuery e IntelliSense en Visual Studio, se pueden descargar de Aquí.

Luego incluí el archivo de JQuery y el archivo de la documentación en el default.aspx así:

<script src="scripts/jquery-1.2.6.js" type="text/javascript"></script>

<script src="scripts/jquery-1.2.6-vsdoc.js" type="text/javascript"></script>

Si no se incluye el archivo de la documentacion JQuery funciona, pero no tengo intellisense.

Ahora, cómo funciona esto:

Recorriendo el DOM

var help = $("#help"); //obtiene el elemento que se llama help, es como usar document.getElementById solo que funciona en cualquier browser.

var p = $("p"); //obtiene todos los elementos de tipo <p>

var username = $("input[name='username']"); //obtiene un elemento de tipo input llamado username

Todas las funciones anteriores retornan un arreglo (array), de hecho, la función $(), conocida como función JQuery siempre retorna un array de 0 elementos, 1 elemento o el número de elementos que encuentre (y es en realidad una abreviación de JQuery(“p”) ).

Es una práctica recomendada nombrar las variables con el signo pesos, así que el último ejemplo debería ser algo como esto:

var $username = $("input[name='username']");

Al ser $username un array tiene un conjunto de métodos que se pueden usar para obtener su longitud, elementos, etc (var form = $form.get(0); var form = $form. length)

Manipulando el DOM

Una vez que tengo identificados los objetos puedo empezar a hacer algo con ellos, algunos consejos:

No es necesario crear todas las clases que se van a usar en la hoja de estilo, solamente se necesitan para que JQuery las identifique

Un elemento puede tener varias clases aplicadas asi: <table class=”VisualTable PopulationTable”>…</table>, de esta forma puedo separar las clases que modifican los diseñadores de las que yo utilizo en JQuery para manipular los objetos.

Eventos

Uno de los elementos importantes de JQuery son los eventos, estos responden generalmente a acciones de los usuarios, pero uno que siempre es útil es el evento ready del document. Algo como esto:

$(document).ready(function{ myCodigo});

Que quiere decir que se debe ejecutar el código {MyCodigo} cuando la pagina este lista. Algo interesante es la forma como se declarara la función a ejecutar, muy similar a un método anónimo y también con una notación de JSON. Sin embargo si por alguna razón a uno no le gusta esta forma de funciones en línea puede usar esta notación: %(document).ready(onLoaded); donde onLoaded es un método definido previamente en el script. (esto también puede ser útil cuando se combinan diversos scripts y se quiere invocar desde un evento una parte de otro script).

Muchos eventos reciben funciones como parámetros, incluso una función en cada parámetro, por ejemplo:

$("#partList .row").hover

(

function()

{

$(this).addClass("rowOver");

},

function()

{

$(this).removeClass("rowOver");

}

)

Recibe dos funciones, una para cuando se entra al hover y otra para cuando se sale. Aquí puede ser interesante notar el $(this) que significa un “apuntador” al elemento que está ejecutando el evento, algo parecido al $(document).

 

Juan Pelaez.

Arquitecto de Software.

 

Keywords: JQuery, Web Applications,

Technorati Tags: ,

Publicado en www.juanpelaez.com/blog

Tuesday, November 25, 2008 3:06:55 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Articulos de Desarrollo | JQuery | VS2008
# Tuesday, November 11, 2008


Share

 

El pasado 05 y 06 de Noviembre de 2008, tuve la oportunidad de dictar el entrenamiento en Silverlight para Partners de Microsoft Colombia inscritos en el programa Metro. Durante las 6 sesiones (8 horas) desarrollamos este programa:

 

• 8:30 – 9:30 Framework y Herramientas. Novedades en C# y VS2008.

• 9:35 – 10:45 WPF 101. Conceptos básicos, XAML, Blend y ejemplos.

• 10:45 – 11:00 Refrigerio

• 11:05 – 12:30 WPF 201. Dependecy Properties, Routed Events, IValueConverters, ApplicationsCommands

• 12:30 – 1:50 Almuerzo Libre

• 2:00 – 3:00 Silverlight 101. Conceptos Basicos y ejemplos.

• 3:05 – 4:15 Silverlight WorkShop . Construccion de un reproductor de MP3 con Silverlight. Comunicaciones entre SL y JS.

• 4:15 – 4:30 Refrigerio

• 4:35 – 5:30 Encoder, Deep Zoom y Silverlight Streaming. Ejemplos.

Gracias a todos los que participaron, espero que haya sido útil para el desarrollo de sus proyectos. Por favor no dejen de enviarnos sus comentarios sobre este evento a jpelaez at juanpelaez.com y a Sandra Marin en sandra.marin at microsoft.com

Dejo aquí las PPTs, y los resultados de la sesión 1, sesión 3 y el taller.

 

Recursos

Presentaciones.

Código de la Sesion 01. Novedades en c# y VS2008 

Código de la Sesion 02. WPF 201.

Código del Taller

 

Juan Pelaez

Arquitecto de Software

 

Keywords: Silverlight, Partners Microsoft Colombia, Programa Metro, Capacitacion, Juan Pelaez, Juan Carlos Pelaez, Entrenamiento, WPF.

 

Technorati Tags: ,,
Tuesday, November 11, 2008 12:08:16 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Blend Expression | Eventos Microsoft | Microsoft DP | SilverLigth | Speaker Microsoft | VS2008 | Windows Live | WPF
# Tuesday, August 26, 2008


Share

Muchas veces durante eventos y presentaciones los asistentes me preguntan que como pueden empezar a desarrollar aplicaciones basadas en datos con tecnología Microsoft, el motivo de la pregunta es la creencia generalizada de que las únicas bases de datos gratuitas para desarrollo son MySQL o PostgreSQL. En general el público no sabe que Microsoft tiene un producto de base de datos gratuito basado en la mismo núcleo (Core) de SQL Server (en este caso SQL Server 2008). SQL Server Express es el producto de Microsoft para desarrolladores y empresas de desarrollo ISV’s que de forma gratuita permite tener todas las características de SQL Server.

 

Desde agosto 22 está disponible SQL Server 2008 Express con Advance Services, incluso en español, puede descargarse de aquí.

http://www.microsoft.com/downloads/details.aspx?FamilyId=B5D1B8C3-FDA5-4508-B0D0-1311D670E336&displaylang=en

 

El Nuevo modelo de versiones de SQL Server 2008 es muy interesante, la versión web por ejemplo seguramente cambiara muchos paradigmas existentes sobre la construcción de aplicaciones para internet basadas en SQL Server.

 

Sobre las versiones.: http://msdn.microsoft.com/en-us/library/ms144275.aspx

 

Ahora bien para poder identificar cuáles de las características nuevas de SQL Server 2008 están disponibles en Express y cuáles no, no deje de consultar este completo cuadro aquí: http://msdn.microsoft.com/en-us/library/cc645993.aspx

 

Una de las cosas más interesantes que podemos ver en esta comparación es la inclusión de datos espaciales en todas las versiones de SQL Server, incluido express.

Con los cambios recientes en MySQL: fue comprada por Sun y ahora no todo es gratis (se han hecho anuncios para cobrar por las características de alto desempeño en el futuro). Actualmente cobran por los servicios de soporte, es un buen momento para evaluar las características y ventajas de SQL Server Express.

 

Nota: Es importante recordar que si usted tiene Visual Studio 2008 debe instalar el SP1 para poder instalar SQL Server 2008 en cualquiera de sus sabores.

Nota2. También es importante recordar que si está actualizando desde 2005 luego de la instalación debe registrar nuevamente sus servidores en SQL Server Management Studio.

 

Juan Carlos Peláez

Developer Evangelist

Microsoft Colombia.

 

Keywords: SQL Server 2008, Desarrollo de Aplicaciones, MySQL, PostgreSQL, SQL Server Express.

Tuesday, August 26, 2008 5:06:02 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
SQL Server 2005 | SQL Server 2008 | VS2008
# 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

 

Se ha publicado el Preview de Diciembre de Blend 2.  Para descargarlo puede ir a este enlace.

En una revisión rápida para preparar un demo para Microsoft Andino he encontrado dos caracteristicas interesantes:

 

  • La Solución ahora puede manejar multiples proyectos lo que permitirar reconstruir y reusar controles que estaban en proyectos diferentes.
  • Ya se pueden cerrar los diferentes paneles con la acostumbrada x que tanto extrañamos antes.

 

Hay muchas más que se pueden leer en el mismo sitio de la descarga.

 

Un Comentario.

Al crear un nuevo proyecto ya se puede seleccionar el framework que desea usarse para compilar, esto ya estaba en la versión anterior (preview de septiembre), pero solo se habilitaba si se instalaba el framework 3.5. (Lo que por cierto traia muchos dolores de cabeza con proyectos nuevos que se crearan despues de instalar el Framework 3.5). Imagino que es por la misma razón que en esta versión actual todos los proyectos y soluciones que se crean son para VS2008, lo que tiene sentido pero es complicado para todos los que veniamos usando blend, queremos las mejoras de la ultima versión pero aún no estamos en VS2008.

Tambien puede verse como una excusa más para migrar a VS2008. (Otras en un post futuro...)

 

Espero que sea de ayuda

 

Juan Peláez

MCTS.

Miembro de Microsoft Andean Influencer Framework

Miembro de Microsoft Andean Speaker Group.

 

Keywords: VS2008, Blend 2, Juan Peláez., Problemas Proyectos Blend 2 Diciembre VS2005., Por que mi proyecto Blend no abre en VS2005, Visual Studio 2005.

Wednesday, December 12, 2007 5:31:04 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Blend Expression | Silverlight | Visual Studio | VS2005 | VS2008 | WPF
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