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
# Sunday, February 28, 2010


Share

(AKA. como evitar que TFS remoto me pregunte todas las veces mi contraseña)

 

En 3Metas usamos herramientas en la nube como parte de nuestros procesos de desarrollo. La más usada de todas es Team Fundation Server que está publicada en Internet, esto significa que las credenciales de la red local con la que están trabajando los desarrolladores donde el cliente o en sus casas no funcionan para el TFS y este se ve obligado a presentar una pantalla de autenticación.

 

Para evitar esta pantalla se puede ir al panel de control, User Account and Family Safety, la opción Credential Manager, en esa pantalla se puede seleccionar Add Windows Credentials, se llena la información del servidor, usuario y contraseña y listo.

 

Ahora cada vez que se entre al TFS no será necesario digitar la contraseña.

 

 

Juan Pelaez.

CTO.

3Metas.

 

Technorati Tags: ,,

Keywords: Juan Peláez, desarrollo, software, Team Fundation Server, Consultores, Estrategia Digital, 3Metas Corp, 3Metas Colombia.

Sunday, February 28, 2010 3:56:00 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
3Metas | Gestion de Empresas de Software | TFS2008
# Wednesday, October 21, 2009


Share

Uno de los paradigmas que 3Metas (www.3metas.com) está tratando de romper tiene que ver con las oficinas físicas. La mayoría de las personas que trabajan con nosotros permanecen en sus casas la mayoría del tiempo pero incluso aquellos que están en sitio con nuestros clientes trabajan desde sus casas algunas veces.

 

Para poder soportar este tipo de operación y la expansión geográfica que tenemos en mente es necesario establecer herramientas que reemplacen las que estamos acostumbrados a usar en oficinas tradicionales. Una de esas herramientas es Live Mesh (https://www.mesh.com/welcome/default.aspx)

 

Con Live Mesh cada una de las personas de nuestro equipo puede tener sincronizados en todo momento los documentos y/o archivos relacionados con un proyecto o incluso con la compañía, este es un enfoque diferente al que se le da tradicionalmente a este sistema para permitir la sincronización entre varias maquinas de un mismo usuario. A continuación una guía super rápida de cómo hacer para usar Mesh en escenarios de trabajo

 

1. Vaya a la página de Mesh y autentíquese con su usuario de Windows Live, Messenger o Hotmail.

2. Una vez que se autentique y este en la ventana de administración de dispositivos haga clic en el icono de agregar dispositivos e instale la aplicación Mesh en su computadora.

 

DeviceManager

 

InstallOnDevice  

 

3. Terminado el proceso de instalación lóguese desde la aplicación cliente y seleccione la carpeta que desea compartir con su equipo de trabajo.

 

ClientLogin

 

AddFolderToMesh  

 

4. Luego puede invitar a otros usuarios a que tengan acceso a estos documentos.

 

InviteMembers

5. Cuando los usuarios hagan cambios en los archivos de la carpeta todos recibirán una notificación.

 

Las carpetas de Mesh ahora aparecen en azul.

 

MeshOnDevice

 

El proceso anterior es para la primera persona que comparte un grupo de archivos. Para las personas que hacen parte del grupo de trabajo y que son invitadas por primera vez a usar un recurso compartido en Mesh el proceso es más o menor así:

 

1. Vaya a la página de Mesh y autentíquese con su usuario de Windows Live, Messenger o Hotmail.

2. Una vez que se autentique y este en la ventana de administración de dispositivos haga clic en el icono de agregar dispositivos e instale la aplicación Mesh en su computadora.

3. Terminado el proceso de instalación lóguese desde la aplicación cliente

4. Haga clic en el link de la invitación a la carpeta compartida que le llega a su correo.

5. Se habrá creado un icono en el escritorio, haga doble clic en este icono y verifique la ruta en la que quiere almacenar los archivos que se sincronice desde Mesh.

6. Listo, ya puede está usando Mesh.

 

Cada vez que usted o alguien del grupo de trabajo modifique un archivo todos serán actualizados. No existe control de versiones aun y el sistema informa de conflictos por modificaciones simultáneas, es mejor establecer un poco de orden para evitar problemas pero en general nos ha resultado una herramienta muy útil.

 

Si aun no le queda claro que hace LiveMesh piense en ella como un recurso de red compartido, pero que está en Internet. (La unidad P, Z, X o alguna de esas en las que lo obligan a guardar las cosas que quieren que les hagan backup y que generalmente están en un servidor de la red).

 

Juan Pelaez
CTO
3Metas.

Keywords: Emprendimiento, Entrepreneur, Innovación, Creatividad, Gestión de Empresas de Software, Empresa Virtual, commute work, Juan Pelaez, 3Metas, Herramientas, Live Mesh

Wednesday, October 21, 2009 11:53:54 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
3Metas | Gestion de Empresas de Software | LiveMesh | Software Tools | Windows Live
# Sunday, October 18, 2009


Share

Es un poco complicado explicar a que nos dedicamos aquí en 3Metas, básicamente tenemos dos divisiones de negocios: B2C que busca mejorar la comunicación de nuestros clientes con sus clientes y MyBusiness que mejora la eficiencia y eficacia de los procesos y operaciones de nuestros clientes, en ambos casos identificando, desarrollando e implementando las mejores soluciones de tecnología disponibles.

 

Nada como un ejemplo para facilitar la explicación, así que vamos a utilizar el sitio de uno de nuestros clientes www.vargaslleras.com para explicar algunas de las cosas que hacemos en nuestra división de B2C.

 

1. Estrategia de comunicaciones: La primera tarea que desarrollamos para la campaña del senador Vargas Lleras fue la revisión de la forma como se estaba comunicando con sus seguidores. Que canales se estaban usando, la forma de los mensajes, la medición del éxito de los mismos. Con esta información en mente se planteó un cambio en la orientación de la comunicación para que pasara de ser un movimiento de transformación – TransicionColombia – a una más clara y oportuna identificación del candidato, todo esto alineado con la estrategia general de comunicaciones de la campana en otros medios. Posteriormente se identificaron los canales de comunicación que debían usarse, y el tono y frecuencia de los mensajes. Algunos detalles de la estrategia que puedo compartir incluían la unificación de los sistemas de tagging en las diferentes redes sociales para mejorar la indexación del contenido en buscadores.

2. Con la estrategia clara se realizó un rediseño del sitio web del candidato para resaltar su perfil, plan de gobierno y mantener actualizados a los visitantes de las actividades que se vienen desarrollando.

3. La integración con redes sociales era muy importante para poder tener actualizada la información de las diferentes redes de forma consolidada, integramos el sitio web del candidato con YouTube, Flickr, Facebook y Twitter. También integramos la aplicación de Google Calendar para construir la agenda del candidato.

4. Como parte de la integración en las redes sociales se unificó la imagen del candidato en cada una de estas redes creando personalizaciones de Twitter, Facebook y YouTube que estuvieran alineadas con la imagen del sitio web.

5. Un sistema unificado de registro que permitiera a los usuarios desde diferentes sitios y aplicaciones unirse a la campaña también hizo parte de los cambios que se realizaron.

6. La utilización de un sistema de administración de contenido (CMS), optimización del sistema para registrarse mejor en buscadores (estrategia SEO) y la inclusión de sistemas de medición de los resultados también hicieron parte de las modificaciones realizadas al sitio original.

 

En este momento nos encontramos desarrollando nuevas formas de divulgar el mensaje, aplicaciones de mercadeo viral en Facebook (http://www.facebook.com/apps/application.php?id=148891498278) por ejemplo.

 

Los resultados de todo este trabajo han sido muy interesantes y tanto el candidato, la campaña y los seguidores están muy satisfechos, el sitio de internet, su facilidad de uso y su integración con herramientas web 2.0 obtuvieron recientemente el premio al mejor sitio web de Colombia en la categoría de política.

 

Es la combinación de todas estas habilidades y profesionales de diferentes áreas más la intervención en los diferentes aspectos de la búsqueda del objetivo lo que nos lleva a definirnos como una compañía de Estrategia Digital, acompañamos el plan estratégico por medio de tecnología, somos transversales al diseño, desarrollo o comunicación. Espero que lo que hacemos en esta división de negocios ahora sea un poco más claro.

 

Juan Pelaez (@jkpelaez)
CEO
3Metas Corp (@3Metas)

 

Sunday, October 18, 2009 1:37:25 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
3Metas | Emprendimiento | Gestion de Empresas de Software | Redes Sociales | Social Media
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