Archivo del Autor: Liarjo

Avatar de Desconocido

Acerca de Liarjo

....

¿Por qué mucha gente IT está en segunda o tercera línea?

En una empresa que yo conozco y que no puedo revelar, pasó que un empleado que tiene servicios móviles de mensajería cambió su dispositivo por uno nuevo. Entonces, como es natural, por su trabajo le manda un mail a soporte para que le habiliten estos mismos servicios en su nuevo dispositivo, que no es nada exótico ni desconocido, sino unos de los más famosos del mundo.

Este empleado luego de esperar 5 días respuesta vuelve a preguntar a soporte por el estado de su requerimiento y recibe el siguiente mail.

————————————————————————————————————————

From: Empleado Solicitante
Sent: Friday, May 02, 2008 16:47
To: Maetro IT
Subject: imap

Hola Maestro IT,

Tengo un Iphone y quiero leer el correo de XXXXX cuando estoy en la calle.

¿Puedes habilitar el protocolo IMAP para poder conectarme desde fuera de la oficina?

Salu2,

————————————————————————————————————————

Este empleado luego de esperar 5 días respuesta vuelve a preguntar a soporte por el estado de su requerimiento y recibe el siguiente mail.

————————————————————————————————————————

From: Maestro IT
Sent: Wednesday, May 07, 2008 19:15
To: Empleado Solicitante
Cc: Jefe del Maestro IT
Subject: RE: imap

Empleado Solicitante:

Actualmente el Servicio no está habilitado para prestar el servicio solicitado.

Atte.

Maestro IT
Jefe Operaciones & Soporte
XXXXXXXXXX S.A.

————————————————————————————————————————

El empleado solicitante es una persona normal, no un genio IT, por lo que no fue capaz de interpretar la respuesta de este “Maestro IT”. En vista de su completa incompetencia, empleado solicitante, responde el mail pidiendo ayuda nuevamente. El mail es el siguiente.

————————————————————————————————————————

From: Empleado Informante
Sent: Wednesday, May 07, 2008 19:25
To: Maestro IT
Cc: Jefe Maestro IT
Subject: RE: imap

Hola Maestro IT,

Tienes que perdonarme pero soy un poco estúpido porque no entiendo tu respuesta.

La expresión “Actualmente el Servicio no está habilitado para prestar el servicio solicitado.”  

Significa:

A.- Qué hoy no se puede pero se podrá.

B.- Qué hoy no se puede pero no podrá nunca.

C.- No he visto esto y respondo cualquier cosa.

D.- Ninguna de las anteriores.

Dependiendo de tu respuesta, te solicito diferentes cosas.

Si la respuesta es A te pediría la gentileza de decirme cuando.

Si la respuesta es B te pediría que me dieras la razón técnica o administrativa para gestionar que se pueda con los tomadores de decisión de la compañía.

Si la respuesta es C , le ofrezco mi silencio al señor.

Por último, si la respuesta es D te pedirías que uses tu talento para explicarme que es lo que quieres decirme.

De antemano te agradezco tu ayuda.

Salu2

————————————————————————————————————————

Este es el mejor ejemplo de porque los operadores, jefes y gerentes del área IT (que tienen este estilo) están siempre en segunda o tercera línea y nunca son considerados en las grandes decisiones del negocio.

Una pena.

Conferencia Técnica MSDN: Nuevas herramientas de ASPNET en el Framework 3.5

Abstract

Estamos ante una nueva generación de aplicaciones Web que se basan en tecnologías como AJAX y Microsoft Silverlight, que permiten a los desarrolladores construir aplicaciones mucho más utilizables.

En esta conferencia técnica queremos mostrar a la comunidad de desarrolladores algunas de las nuevas herramientas que trae la nueva versión de Dot Net Framework 3.5. Los contenidos seguirán un orden lógico, que van desde las nuevas herramientas de interfaz, pasando por la implementación de MVC en ASPNET para terminar con los nuevos Data Services.

En la revisión de Interfaz veremos cómo podemos combinar AJAX con SilverLight, potenciando toda la capacidad gráfica del segundo con las facilidades de comunicación asíncrona del primero.

El segundo tópico, será una revisión de la implementación del equipo de ASPNET  del patrón Model View Controller. Además veremos cómo está implementación facilita las pruebas unitarias de nuestras aplicaciones Web.

Por último, cerraremos la conferencia mostrando una herramienta muy interesante llamada Data Services. Esta es una combinación de bibliotecas y funciones que permiten exponer datos como servicios de manera flexible para ser usados por aplicaciones en las redes corporativas o a través de Internet.

Expositores

  • Mauricio Lobos
  • Daniel Montero
  • Juan Pablo García

Agenda

La agenda de este evento hasta ahora solo está definida en forma muy gruesa:

  1. AJAX + Silverligth
  2. MVC ASPNET
  3. ADONET Data Services

Cualquier sugerencia de contenido en estos tópicos es bienvenida para incluirla en la conferencia. Aproveche está oportunidad de hacer “un pedido a la carta” de temas.

Datos utiles

  • Fecha: 29 de Mayo a las 18:30
  • Lugar: Oficinas de Microsoft Chile.
  • Costo: Free!!!!!

Los esperamos, en cuanto esté la invitación oficial (Sale este jueves) la publicaré.

salu2

HOW TO WCF, Seguridad

Cachureando en Google, encontré está lista de Link’s para WCF. Son del estilo “¿Cómo Hacer…?”

Así que para los desarrolladores que están en el mundo WCF le van a ser de utilidad.

Hay códigos de ejemplos y algunos son videos.

Que los disfruten.

PD: La info la encontré en el Blog de Madhu Ponduru

 

  • How To – Create and Install Temporary Certificates in WCF for Message Security During Development
  • How To – Create and Install Temporary Certificates in WCF for Transport Security during Development
  • How To – Impersonate the Original Caller in WCF calling from Web Application
  • How To – Impersonate the Original Caller in WCF calling from Windows Forms
  • How To – Use netTcpBinding with Windows Authentication and Transport Security in WCF from Windows Forms
  • How To – Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms
  • How To – Use SQL Role Provider with Windows Authentication in WCF calling from Windows Forms
  • How To – Use Username Authentication with the SQL Membership Provider and Message Security in WCF from Windows Forms
  • How To – Use wsHttpBinding with Windows Authentication and Message Security in WCF from Windows Forms
  • How To – Use wsHttpBinding with Windows Authentication and Transport Security in WCF calling from Windows Forms
  • Video: How To – Host WCF in a Windows Service
  • Video: How To – Impersonate the Original Caller in WCF calling from a Windows Form 
  • Video: How To – Use basicHttpBinding with Certificate Authentication from Windows Forms 
  • Video: How To – Use netTcpBinding with Windows Authentication and Message Security 
  • Video: How To – Use SQL Role Provider with Username Authentication in WCF calling from Windows Forms 
  • Video: How To – Use WsHttpBinding with Certificate Authentication with Message Security 
  • Video: How To – Use WsHttpBinding with Windows Authentication with Message Security 
  • Video: How To – Create and Install temporary Certificates in WCF for Transport Security during Development
  • Video: How To – Create and Install temporary Certificates in WCF for Message Security during Development
  • Intranet – Web App to Remote WCF to SQL Server – Original Caller
  • Intranet – Web App to Remote WCF to SQL Server – Trusted Subsystem
  • Intranet – Web App to Local WCF to SQL Server – Original Caller
  • Internet – Web App to Remote WCF to SQL Server – Original Caller
  • MVP Global Summit 2008

    Estoy desde el domingo pasado en Seattle, participando del MVP Global Summit.

    ¿Qué es esto?

    Es la reunión mundial de los MVP, donde los grupos de productos y gente destacada de en estos temas hace presentaciones de lo que están trabajando.

    Además de lo interesante que es hablar con los desarrolladores de los productos y tecnologías de Microsoft tenemos la oportunidad de compartir con gente de todo el mundo que es tan o mucho mas fanática que yo en temas de “computin”.

    En broma digo que es la peregrinación anual a la meca del software Microsoft.

    Aquí pongo un registro gráfico de lo diverso de los participantes. Ellos son mis “fans” Coreanos.

    Un problema que tengo con este evento, es que los participantes tienen un acuerdo de confidencialidad del contenido que se trata aquí, por lo que no puedo dar detalles técnicos de lo que veo. Pero puedo compartir la agenda para que se hagan una idea.

     

    • SQL BI : What’s new with Data visualization in SSRS2008
    • ASP.NET: .NET and RIA: A spin through ASP.Net and Silverlight and ASP.NET Ajax
    • ASP.NET: Deep Dive into ASP.NET MVC
    • ASP.NET: Developing Data Driven Applications Using ASP.NET Dynamic Data
    • ASP.NET: What’s new for developers in IIS 7.0
    • ASP.NET: ADO.NET Data Services (AKA Astoria)
    • XML- Entity Framework Futures
    • Software as a Service + Q&A with Ray Ozzie
    • Innovation and Industry Trends + Q&A with Steve Ballmer
    • SQL Engine: Unlocking the power of SQL Server Compact
    • SQL BI: Integration Services in SQL Server 2008

    ¿Cómo hacer un Servicio Windows en C#?

    Los servicios Windows son programas que corren en background independiente del usuario que tenga sesiones activas en un server. Los usamos para múltiples tareas por ejemplo monitorear el estado de un Servicio Web.

    Un cliente me pregunta cómo se puede hacer un servicio que monitoree un servicio Web y su tiempo de respuesta.

    Fácil, hay que hacer un servicio Windows en C# 😉

    Respuesta

    Los pasos para construir un servicio Windows, utilizando C# son los siguientes:

    1. Crear un proyecto del tipo Windows Services.
    2. Implementar la lógica del Servicio.
    3. Agregar los parámetros de instalación del servicio.
    4. Crear un proyecto de Instalación.
    5. Instalar
    6. Extra, ¿cómo hacer Debug?

    Paso 1: Crear un proyecto del tipo Windows Services.

    Visual Studio tiene un tipo de proyecto especial para crear servicios Windows. En el cuadro de dialogo ‘New Project’ hay que seleccionar la opción ‘Windows Services’ como muestra la figura 1.

    Figura 1.

    Como resultado de esto se crea una clase llamada Service1 que contiene los siguientes métodos:

    Service1(): constructor de la clase, aquí debemos incluir la configuración del Servicio.

    OnStart(string[] args): Evento cuando el servicio se inicia. Esto ocurre cada vez que el servicio comienza a funcionar.

    OnStop(): Evento cuando el servicio se detiene. Aquí se deben eliminar todos los recursos que el servicio utiliza.

     

    Paso 2: Implementar la lógica del Servicio

    Este servicio debe hacer lo siguiente:

    1. Consumir un Servicio Web cada cierto periodo de tiempo.
    2. Validar que el Servicio Web resposponda (no se caiga).
    3. Validar que el tiempo de respuesta en menor que cierto valor.
    4. Mantener en configuración la URL del Servicio Web, periodo de tiempo en que se repiten las llamadas y el tiempo de respuesta máximo.

    Para consumir un Servicio Web utilizamos la funcionalidad de Visual Studio ‘Add Web Reference’ que se muestra en la figura 2. En este ejemplo utilizaré el servicio gratuito de  WebServiceX.

    Figura 2.

    Para realizar la tarea repetitiva de llamar al servicio Web cada cierto intervalo de tiempo utilizaremos un objeto del tipo System.Timers.Timer. Este objeto tiene la capacidad de levantar un evento cuando pasa cierto periodo de tiempo desde que se activa. En este caso la construcción del Timer se realzia en el método onStart del Servicio Windows, es decir cuando el servicio de levanta comienza a trabajar el Timer. Esto se muestra en el código 1.

     

     

       1: protected override void OnStart(string[] args)
       2: {
       3:     //Timer para el control del tiempo entre llamadas.
       4:     myTimer = new System.Timers.Timer();
       5:     //Intervalo de tiempo entre llamadas.
       6:     myTimer.Interval = 1500;
       7:     //Evento a ejecutar cuando se cumple el tiempo.
       8:     myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
       9:     //Habilitar el Timer.
      10:     myTimer.Enabled = true;
      11: }

    Código 1.

    En el evento myTimer_Elapsed se hace la llamada al Servicio Web. Pero, para evitar problemas de concurrencia se detiene el Timer antes de hacer la llamada y luego se vuelve a activar. Esto se muestra en el código 2.

     

     
       1: void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
       2: {
       3:     //Detiene el Timer
       4:     myTimer.Enabled = false;
       5:     //llama al Servicio Web
       6:     CallServicioWeb();
       7:     //habilita el Timer nuevamente.
       8:     myTimer.Enabled = true;
       9: }

    Código 2.

    Por último el método CallServicioWeb() hace la llamada y controla el tiempo de respuesta del Servicio. En el código 3 se puede ver la lógica de esto.

     

     
       1: void CallServicioWeb()
       2: {
       3:     //Proxy
       4:     SerivicioWeb.GeoIPService Proxy = new ServicioWindowsMonitor.SerivicioWeb.GeoIPService();
       5:     DateTime Tini;
       6:     TimeSpan Tdif;
       7:     try
       8:     {
       9:         //Tiempo de inicio de la llamada
      10:         Tini = DateTime.Now;
      11:         //llamada al servicio 
      12:         Proxy.GetGeoIP("200.10.12.126");
      13:         //Tiempo de respuesta
      14:         Tdif=Tini.Subtract(DateTime.Now);
      15:         if (Tdif.Seconds < -10)
      16:         {
      17:             Log("Servicio Lento: " + Tdif.Seconds.ToString()+ "[S]");
      18:         }
      19:     }
      20:     catch (Exception X)
      21:     {
      22:  
      23:         Log(X.Message);
      24:     }
      25: }

    Código 3.

    Paso 3: Agregar los parámetros de instalación del servicio.

    Para que el servicio pueda ser controlado por el administrador de servicios de Windows debemos agregar dos componentes a nuestro Servicio Windows:

     

    • serviceProcessInstaller: en este componente se debe fijar el usuario con que se ejecuta el servicio. En este caso utilizamos la cuenta Local Service.
    • serviceInstaller: Este componente tiene la propiedad ServiceName, que define el nombre con que el Servicio aparece en la consola de Servicios. En este caso lo llamaremos ‘Monitor GeoIP’. Además este componente tiene la propiedad StartType que define si el servicio parte de manera automatica, manual o está desabilitado.

    Para instalar estos componentes, en la vista de diseño del Servicio Windows usamos la opción ‘add Instaler’ del botón derecho. Esto se muestra en la figura 2.

    Figura 2.

    Paso 4: Crear un proyecto de Instalación

    Para utilizar el servicio es necesario crear un instalador. Este proyecto instala el software del Servicio Windows en el disco, lo registra y agrega a la consola de servicios del sistema operativo.

    Para crear un proyecto de instalación debemos utilizar el dialogo ‘New Project’ con la opción ‘Setup’ como muestra la figura 3.

    Figura 3.

    Una vez creado el proyecto debemos agregar a este proyecto de instalación en la carpeta ‘Application Folder’ el proyecto de salida. Este es nuestro proyecto de Servicio Windows. La figura 4 muestra cómo hacerlo usando el botón derecho.

    Figura 4.

    El siguiente paso es agregar este proyecto de salida a las acciones Install, Commit, RollBack y Uninstall. Para ello en la pestaña ‘Solution Explorer’ seleccionamos el botón ‘Custom Action Editor’. Luego en ese editor, agregamos el proyecto a todas las acciones, como lo muestra la figura 5.

    Figura 5.

    Paso 5: Instalar

    Para instalar el Servicio Windows debemos hacer un Built del instalador y luego con el botón derecho sobre el proyecto de instalación ejecutar la instlación.

    Una vez instalado, siguiendo los pasos del Wizard, podemos ver el servicio en la consola de servicios del sistema operativo. En la figura 6 se puede ver las propiedades del evento que ya está en la consola de servicios!!!!

    Figura 6.

    Paso 6: Bonus, Hacer Debug del Servicio.

    Para poder hacer debug del servicio podemos hacer un Attach del proceso. Ojo, esto es posible poque lo compilamos en modo Debug. Para hacerlo vamos al menu Debug de Visual Studio, opción Attach. Cuando aparece el dialogo de procesos hay que buscar en la lista el nombe del servicio y apretar el botón attach. En ese momento Visual Studio entra en modo de debug. El dialogo de Attach se muestra en la figura 7.

    Figura 7.

    Una vez que se está en modo de debug, se puede poner un punto de interupción en el código y hacer debug a gusto.

    Esto es lo básico para desarrollar un Servicio Windows, con esto pueden construir desde un sencillo servicio de monitoreo hasta complejos Host de Windows Comunication Foundation por ejemplo.

    El código de ejemplo de esta demos pueden bajarlo desde Aquí

    Salu2

    Material de entrenamiento en WCF

    Biztalk Server, ¿Cómo hacer debug y ver los mensajes?

    BizTalk Server es una excelente herramienta para construir procesos de negocio que requieren de integración de sistemas.

    Desde que se tienen IDE’s de desarrollo potentes, los desarrolladores están acostumbrados cada vez más a hacer debug de sus aplicaciones e ir viendo el estado de los objetos en memoria mientras se ejecuta la aplicación. Un problema en el desarrollo de orquestaciones es poder hacer debug de lo que estamos desarrollando. Por eso la pregunta, ¿Cómo hacer debug y ver los mensajes?

    Respuesta

    BizTalk tiene una herramienta llamada Health and Activity Tracking (HAT) que permite hacer consultas de las actividades que el motor servidor BizTalk está ejecutando.

    Con esta herramienta podemos hacer debug de las orquestaciones y ver el contenido de los mensajes de cada instancia de servicio que se están ejecutando.

    Los pasos para hacer debug son los que se muestran en el siguiente diagrama.

    El primer paso no es materia de este POST.

     

    Paso 2: Poner la orquestación en modo debug.

    Para esto debemos utilizar la herramienta HAT. Esta herramienta trae consultas pre definidas con la cual podemos ubicar la orquestación que queremos revisar. Usando la consulta Most Recent 100 Service instance podemos ubicar la orquetsación.

    Figura 1.

    Una vez ubicada la orquestación que buscamos, debemos instanciar el Orchestration debugger utilizando el botón derecho sobre la orquestación, como lo muestra la figura 2.

    Figura 2.

    Por último debemos poner el o los puntos de ruptura en la orquestación para así poder ver su comportamiento en tiempo de ejecución. Esto se hace con el botón derecho sobre la acción, como muestra la figura 3. Luego de esto hay que cerrar el Orchestration Debugger.

    Figura 3. 

    Paso 3: Ejecutar la orquestación

    Debemos iniciar el proceso de negocio que queremos debugear, esto se hace mandando el mensaje a BizTalk que inicia el proceso.

     

    Paso 4: Encontrar la instancia de la orquestación

    Para encontrar la instancia de la orquestación usamos el HAT con una consulta que muestre las orquestaciones que tienen el estado Strated. Cuando pusimos en el paso 2 el punto de ruptura, el motor detiene todas las instancias de esa orquestación en ese punto de ruptura por lo que quedan en estado Started.

    Con la siguiente consulta podemos encontrar las instancias.

     

    SELECT top 100

    [Service/Name], [Service/Type],[ServiceInstance/State],

    dateadd(minute, @UtcOffsetMin, [ServiceInstance/StartTime]) as [StartTime],

    dateadd(minute, @UtcOffsetMin, [ServiceInstance/EndTime]) as [EndTime],

    [ServiceInstance/Duration],[ServiceInstance/ExitCode],[ServiceInstance/ErrorInfo],

    [ServiceInstance/Host], [Service/AssemblyName], [ServiceInstance/InstanceID],

    [ServiceInstance/ActivityID], [Service/ServiceGUID],[Service/ServiceClassGUID]

    FROM dbo.dtav_ServiceFacts sf WITH (READPAST)

    where

    [Service/Type]=’Orchestration’ and [ServiceInstance/State]=’Started’

    ORDER BY sf.[ServiceInstance/StartTime] desc

    Código 1: Consulta SQL

    El resultado de esta consulta son las instancias que están Started en el servidor.

     

    Paso 5: Attach el proceso y ver el mensaje.

    Para poder tomar la instancia y ver el estado de los mensajes debemos ejecutar la consulta y con el botón derecho sobre la orquestación iniciar el Orchestration Debugger. La figura 4 muestra el resultado de la consulta.

    Figura 4.

    Ahora en el Orchestration Debugger, debemos hacer Attach del proceso para poder cargar la información de la instancia en el Debugger. La figura 5 muestra cómo hacerlo.

    Figura 5.

    Ahora tenemos toda la información de la instancia a la vista y podemos por ejemplo ver el valor de un mensaje. Este valor podemos verlo en el cuadro de propiedades de las variables o con el botón derecho sobre el mensaje grabarlo en disco.

    Figura 6.

     

    Paso 6: Sacar del modo Debug la orquestación

    Es muy importante luego de realizar el debug, sacar los puntos de ruptura de la orquestación, sino está seguirá deteniendo todas las instancias de la misma que se ejecuten.

    Para esto, en el mismo Orchestration Debugger se deben borrar los puntos de ruptura y luego cerrarlo. Eso es todo!!!

    Salu2