Blog de Jorge Pedraza

octubre 22, 2012

Sync Framework Toolkit con Android

Hola, el presente articulo tiene como finalidad tratar de resaltar de forma rápida y directa el uso de Microsoft Sync Framework Toolkit, en la construcción de servicios de sincronización de datos, y su uso desde cualquier plataforma cliente, tal es el caso de Android. La idea principal es intentar mapear determinado ejemplo (demodb) que se expone en este articulo, y así obtener mejor entendimiento acerca del tema.

Requisitos:

  • Microsoft Visual Studio 2010 SP1 o Superior.
  • Microsoft SQL Server 2008 R2 o Superior.
  • Microsoft Sync Framework ToolKit.
  • Microsoft IIS 7.x o superior.
  • Conocimiento en Base de datos.
  • Experiencia con el Lenguaje C#
  • MOTODEV Studio for Android o Eclipse con Android SDK.
  • Experiencia con el Lenguaje Java.
  • Experiencia con desarrollo de aplicaciones base de datos en Android.

Índices:

  1. Introducción de Sync Framework Toolkit.
  2. Construcción de Sync Framework Toolkit.
  3. Uso de Sync Framework Toolkit (Ejemplo propio demodb).
  4. Solución servicio de sincronización (Ejemplo propio demodb).
  5. Aplicación cliente Android.
  6. Código fuentes.
  7. Enlaces de interés.

 

1. Introducción de Sync Framework Toolkit:

Es un conjunto de herramientas y códigos de ejemplos, que permite construir y optimizar aplicaciones desconectadas para la sincronización de datos que se ejecutan en cualquier plataforma cliente como Microsoft (Windows, Silverlight, Windows Phone 7 y Windows Mobile) y No Microsoft (iPhone, Android y Blackberry y asi como HTML). Note que clientes basado en Windows requieren Sync Framework 2.1.

2. Construcción de Sync Framework Toolkit:

  1. Descargar Microsoft Sync Framework Toolkit y descomprimir Microsoft Sync Framework Toolkit.zip en una carpeta syncopensrc en disco y dentro de esa carpeta debe renombrar una carpeta llamada C# en src.
  2. Por razones que el paquete Sync Framework Toolkit esta comprendido inicialmente por una solución de múltiples proyectos, es necesario Instalar Windows Phone Developer Tools 7.0 y Silverlight 4 Tools for Visual Studio 2010.
  3. Abrir el archivo syncfxtoolkit.sln ubicado en la carpeta src.
  4. Construir la solución, el cual generará los siguientes archivos:
    • syncopensrc\bin\SyncSvcUtil.exe (Utilidad versión Consola)
    • syncopensrc\bin\SyncSvcUtilUI.exe (Utilidad versión aplicación Windows)
    • syncopensrc\server\Microsoft.Synchronization.Services.dll (Ensamblado para construir servicio Web de Sincronización)
    • syncopensrc\Client\WP7\Microsoft.Synchronization.ClientServices.dll (Ensamblado cliente WP7 de Sincronización)
    • syncopensrcClient\Silverlight\Microsoft.Synchronization.ClientServices.dll (Ensamblado cliente Silverlight de Sincronización)
  5. Mover la carpeta "Samples" de "\syncopensrc\src\Samples" a "\syncopensrc\Samples.

Ahora estás listo para seguir la documentación (\syncopensrc\src\Sync Framework Toolkit.chm) y comenzar a escribir su servicio de sincronización y aplicaciones sin conexión utilizando el código fuente.

3. Uso de Sync Framework Toolkit (Ejemplo propio demodb):

Con fines de agilizar el aprendizaje de Sync Framework Toolkit se va exponer una vista rápida basado en el ejemplo principal de Sync Framework Toolkit, de como implementar base de datos y servicios propio para la sincronización de datos con cualquier cliente desconectado. Para esta demostración se utiliza Visual Studio 2012 Edición profesional y SQL Server 2012 Edición Web. Además se usa Autenticación SQL Server, el cual es imprescindible tener configurada un cuenta valida SQL server, por ejemplo Login: sa y Password: 123.

1. Crear base de datos llamada demodb en SQL Server y luego aplicar estructura de datos demodbscript.sql 2. Ejecuta la utilidad auxiliar versión aplicación Windows: syncopensrc\bin\SyncSvcUtilUI.exe
esquemadb SSUtility
   

Pasos para usar la utilidad SyncSvcUtilUI:

Parte 1 : Paso 1 Paso 2
SSUtilityOption1 SSUtilityOption1Step1 SSUtilityOption1Step2
     
  Paso 3 Paso 4
  SSUtilityOption1Step3 SSUtilityOption1Step4
     
  Paso 4.1 Paso 4.2
  SSUtilityOption1Step4_1 SSUtilityOption1Step4_2
  Paso 4.3 Paso 5
  SSUtilityOption1Step4_3 SSUtilityOption1Step5
     
Parte 2 : Paso 1 Paso 2
SSUtilityOption2 SSUtilityOption2Step1 SSUtilityOption2Step2
     
Parte 3 : Paso 1 Paso 2
SSUtilityOption3 SSUtilityOption3Step1 SSUtilityOption3Step2
  Paso 3  
  SSUtilityOption3Step3  

4. Solución servicio de sincronización (Ejemplo propio demodb):

1. Crear proyecto WCF Service Application llamado demodbsync 2. Seleccionar archivos por defectos y eliminarlos
demodbsyncstep1 demodbsyncstep2
   
3. Agregar archivos fuentes generado en la parte 3 de SyncSvcUtilUI y además un archivo Web.Config nuevo 4. Agregar referencia de ensamblado Microsoft.Synchronization.Services.dll
demodbsyncstep3 demodbsyncstep4
5. Agregar en Web.Config sesión connectionStrings con cadena de conexión relacionada. 6. Modificar el código en DefaultScopeSyncService.svc según el código de ejemplo demodbsync adjunto a este articulo.
demodbsyncstep5 demodbsyncstep6
7. Agregar los siguientes archivos (login.ashx y login.ashx.cs) existentes en el código de ejemplo demodbsync de este articulo 8. Finalmente construir e implementar en IIS.
demodbsyncstep7 demodbsyncstep8

En teoría el servicio de sincronización debe estar funcional desde IIS, si puede cerciórese previamente que este funcionado antes de continuar con el desarrollo y prueba del cliente desconectado, en este caso Android.

5. Aplicación cliente Android:

El desarrollo de la aplicación desconectada, cliente Android se basa inicialmente en el código (SelvinListSyncSample) adaptado al ejemplo oficial de Microsoft Sync Framework Toolkit, el cual se trata de los siguientes:

  1. Se descargar el ejemplo SelvinListSyncSample (Alpha 2).
  2. Usar la librería ActionBarSherlock vinculado con el ejemplo SelvinListSyncSample
  3. Revisar la documentación propia para su funcionamiento.

Ahora con relación al ejemplo propio demodb, su aplicación cliente Android DemodbSync. se plantea los siguientes:

1. Gestión de proyecto Android 2.2 propio (Unificado) 2. Parametrizar datos de sincronización de la aplicación Android con el servicio WCF
DemodbSyncAndroid1 DemodbSyncAndroid2
   
3. Construir y ejecutar proyecto dentro de la maquina virtual con conectividad a una red valida de prueba. 4. Realizar prueba manipulando uno o más registros, en la base de datos local de la aplicación Android y posteriormente sincronizar. Luego verificar que los datos se hayan escrito en SQL Server.
DemodbSyncAndroid3 DemodbSyncAndroid4

Es Importante resaltar lo siguiente: Esta aplicación Android de ejemplo es un versión literalmente básica y sencilla, cuya intensión es demostrar su funcionamiento con Sync Framework, sin tomar en cuenta tópicos internos relacionado con Android como (componentes de terceros, validaciones, Multithreading, etc.).

6. Código fuentes:

7. Enlaces de interés:

agosto 13, 2012

Novedades de Visual Basic 2012

Archivado en: Visual Basic — JorgePedraza @ 5:39 am
Tags:

Hola, en esta entrega se intenta resaltar de manera fácil y directa las novedades mas relevantes que incorpora el lenguaje Visual Basic 2012.

Requisitos:

  • Experiencia con el lenguaje Visual Basic.
  • Conocimiento del Modelo de programación Asincrónica
  • Microsoft Visual Studio 2012 RC o superior.

Índice:

  1. Programación Asincrónica con Async y Await.
  2. Información de llamador (Caller Information).
  3. Instrucción Iterator.
  4. Jerarquía de llamadas (Call Hierarchy).
  5. Instrucción Global en sentencia Namespace

1. Programación Asincrónica con Async y Await: 

Es la alternativa más fácil y sencilla de trabajar con programación asincrónica, incorporada dentro plataforma de desarrollo .NET Framework 4.5. La idea  principal se basa en el uso de palabras claves como Async y Await. Por ejemplo para que determinado método se ejecute asincrónicamente se debe marca con la palabra clave Async y luego en el cuerpo de dicho método se aplica el operador Await en la espera de un resultado tipo Task o Task(Of TResult) de la llamada de otro método que consume tiempo de proceso. Para más detalles ver imágenes de abajo:

Async1 Async2

2. Información de llamador (Caller Information):

Es una vía para obtener datos, nombre del método, ruta del archivo de origen y numero de línea de código de la llamada de un método especifico en tiempo de ejecución.

CallerInformation

3. Instrucción Iterator:

Es usado para establecer determinado método que retorna colección de datos, sobre la ejecución de cierta interacción personalizada de dicha colección.

Interator

4. Jerarquía de llamadas (Call Hierarchy):

Es un opción incorporada dentro la IDE de Visual Studio 2012 para que en determinada solución se pueda navegar una lista general de todas las llamadas de un método, propiedad o constructor seleccionado.

CallHierarchy

5. Instrucción Global en sentencia Namespace:

Es usado para definir nuevos Namespace fuera del Namespace raíz de su proyecto.

GlobalNamespace

Código Fuente:

Enlaces de Interés:

julio 26, 2012

WCF Data Service con Android

Archivado en: Servicios — JorgePedraza @ 7:10 pm
Tags:

Hola, este articulo tiene como finalidad resaltar cierto escenario de interoperabilidad de la plataforma . NET con otras plataformas diferentes a él. Para este caso se toma como ejemplo la plataforma Android.

La idea es crear determinado servicio de datos basado en la plataforma .NET y usarlo a través de protocolo Web (Odata) en cualquier entorno heterogéneo.

Requisitos:

  • Microsoft Visual Studio 2010 SP1 o Superior.
  • Experiencia con el Lenguaje Visual Basic o C#.
  • SQL Server 2008 R2 Express o superior.
  • Experiencia con Base de datos.
  • MOTODEV Studio for Android o Eclipse con Android SDK.
  • Experiencia con el Lenguaje Java.

Índice:

  1. Conceptos Claves.
  2. Pasos claves para crear e implementar WCF Data Service.
  3. Consumir WCF Data Service desde Android.
  4. Nota Importante.
  5. Código Fuente.
  6. Enlaces de Interés.

Conceptos Claves:

Termino Descripción
WCF Windows Communication Foundation (WCF) es un marco de trabajo .NET para la creación de aplicaciones orientadas a servicios.
WCF Data Services Es un componente de .NET Framework que permite crear servicios que utilizan Open Data Protocol (OData) para exponer y utilizar datos a través de web o de una intranet utilizando la semántica de transferencia de estado de representación (REST).
OData Es un protocolo Web para consultar y actualizar datos provenientes de algún origen de datos heterogéneo. Esto lo hace basándose y aplicando tecnologías Web como HTTP, Protocolo de publicación Atom (AtomPub) y JSON con el cual se proporcionar acceso a la información desde una variedad de aplicaciones, servicios y almacenes.
Entity Framework Es la ORM de la plataforma .NET la cual permite a los desarrolladores crear aplicaciones de acceso a datos programando con un modelo de aplicaciones conceptuales en lugar de programar directamente con un esquema de almacenamiento relacional.

Pasos claves para crear e implementar WCF Data Service:

1. Crear solución WCF Service Application. 2. Quitar los archivos IService1.vb y Service1.svc 3. Agregar archivo de Base de datos SQL Server Express.
wcfdsPaso1 wcfdsPaso2 wcfdsPaso3
     
4. Crear tabla en la base de datos. 5. Poblar la tabla con datos de ejemplo. 6. Agregar un ADO.NET Entity Data Model.
wcfdsPaso4 wcfdsPaso5 wcfdsPaso6
     
7. Generar Modelo desde Base de datos. 8. Seleccionar Base de datos de la solución para el modelo. 9. Seleccionar tabla de la base de datos y finalizar.
wcfdsPaso7 wcfdsPaso8 wcfdsPaso9
     
10. Agregar elemento WCF Data Service. 11. Establecer código con el ADO.NET Entity Data Model. 12. Probar el servicio en el navegador.
wcfdsPaso10 wcfdsPaso11 wcfdsPaso12
     
13. Establecer modo Autenticación None 14. Adjuntar base de datos en Instancia SQL Server 15. Fijar Cadena conexión final en Web.Config.debug
wcfdsPaso13 wcfdsPaso14 wcfdsPaso15
     
16. Publicar solución en IIS 7.x 17. Establecer parámetros autenticación IIS 7.x 18. Probar el Servicio desde IIS 7.x
wcfdsPaso16 wcfdsPaso17 wcfdsPaso18

Consumir WCF Data Service desde Android:

1. Descargar y fijar determinada biblioteca OData para proyecto Android. 2. Referenciar la biblioteca Odata dentro del proyecto. 3. Establecer determinado código Java para gestionar Odata.
ODataAndroid1 ODataAndroid2 ODataAndroid3
     
4. Probar el aplicación Android contra el WCF Data Service.    
ODataAndroid4    

Nota Importante: Hay algunos puntos en base a este articulo que se pueden tratar posteriormente, como:

  1. El tema de seguridad de WCF Data Service
  2. Entidades relacionadas dentro modelo de datos (ADO.NET Entity Data Model)
  3. Escenario de manipulación de Tabla/entidad de servicio Windows Azure. (Requiere credenciales de Almacenamiento Azure).
  4. Aplicación Android de prueba con validaciones.

Código Fuente:

Enlaces de Interés:

mayo 1, 2012

Maestro detalles con Entity Framework en Windows Forms

Archivado en: Aplicaciones Windows — JorgePedraza @ 5:37 pm
Tags: , , ,

Hola, el presente articulo tiene como intención resaltar una forma rápida y sencilla de trabajar con la tecnología Entity Framework bajo el ambiente de Windows Forms Application. Para esto se muestra las secuencias clave del desarrollo de una solución basada en un formulario Windows, el cual a través de Entity Framework se gestionará determinada Base de datos, tal es el caso de SQL server 2008 R2 Express.

Requisitos:

  1. Microsoft Visual Studio 2010 SP1.
  2. Microsoft SQL Server 2008 R2 o Superior.
  3. Experiencia en desarrollo con Base de Datos.
  4. Conocimiento sobre Entity Framework.
  5. Microsoft Windows 7 o superior.

Contenido Clave:

Para generar el desarrollo de la solución base, se debe iniciar una instancia de Visual Studio 2010 SP1 donde se crea nuevo proyecto del tipo Windows Forms Application, con un nombre especifico, por ejemplo WindowsApplicationEF. Ahora a continuación se procede con las siguientes indicaciones:

1. Agregar archivo demoEF.mdf 2. Establecer estructura demoEF.mdf   3. Establecer diagrama de demoEF.mdf
AdddemoEF DbdemoEF DiagramaSQLsrvDEMOEF
4. Agregar ModeldemoEF.edmx 5. Establecer archivo demoEF.mdf 6. Seleccionar tablas especificas
AddEF EntityDMW1 EntityDMW2
7. Verificar entidades creadas 8. Establecer SubTotal para DetOrden 9. Calcular MontoBruto para EncOrden
ModeldemoEF ExtensionDetOrden ModeldemoEFplusCode
10. Seleccionar Form1 11.Agregar DataGridViews y botones 12. Parametrizar DataGridView1
EncOrden
SlnDemoEF MDEFWFSE GridView1EditColumns
13. Parametrizar DataGridView2
DetOrden
14. Verificar interfaz de Usuario 15. Establecer código de desarrollo
GridView2EditColumns MDEFWFA CodigoDemoEF
16. Realizar prueba de ejecución
MDEFWF

Nota Importante: Esta solución no incluye más opciones ni validaciones de usuario, ya que la intención principal de la misma es representar una alternativa base para crear soluciones futuras de mayor grado de complejidad a través de una vía solida y precisa.

Código Fuentes:

  • WindowsApplicationEF (Visual Basic 2010, Windows Forms Application, SQL Server 2008 R2 Express, Entity Framework)

En Resumen:

Una vez más se puede apreciar una alternativa simple y productiva de crear soluciones Windows con base de datos a través de tecnologías actuales y de proyección futura dentro de la plataforma .NET, como es Entity Framework.

Enlaces de Interés:

abril 10, 2012

Cambios automaticos entre HTTP y HTTPS desde ASP.NET

Archivado en: Aplicaciones Web — JorgePedraza @ 9:35 am
Tags:

Hola el presente articulo tiene como finalidad resaltar de formar rápida y precisa el uso personalizado de la seguridad SSL dentro de una solución de ASP.NET.

Requisitos:

  1. Microsoft Visual Studio 2010 SP1 o superior.
  2. Microsoft Windows 7 o superior.
  3. Experiencia con autenticación por formulario de ASP.NET.
  4. Conocimiento en la gestión de certificados digitales.
  5. Conexión internet para instalar paquete SecuritySwitch.

Índices:

  1. Conceptos Claves.
  2. Implementar SecuritySwitch en ASP.NET.
  3. Archivos de SecuritySwitch generado dentro de solución ASP.NET.
  4. Configuración SecuritySwitch en archivo Web.Config.
  5. Solución ASP.NET con SecuritySwitch desde Visual Studio 2010 SP1.
  6. Implementación Solución ASP.NET con securitySwitch en IIS 7.x o superior.
  7. Recomendación en IIS con SecuritySwitch.
  8. Código Fuentes.
  9. Enlaces de interés.

Conceptos claves:

Certificado: Es una declaración firmada digitalmente que enlaza el valor de una clave pública con la identidad de la persona, dispositivo o servicio que posee la clave privada correspondiente. La mayoría de los certificados de uso común se basa en el X.509 v3 certificado estándar. Normalmente, los certificados contienen la siguiente información: 1) Valor de clave pública del sujeto, 2) Información del identificador del sujeto, tales como el nombre y correo electrónico, 3) El período de validez, 4) información de identificador del emisor, 5) La firma digital del emisor, que certifica la validez del enlace entre la clave pública del sujeto y la información del identificador del sujeto.

SSL Secure Sockets Layer (capa de conexión segura) y su sucesor TLS Transport Layer Security (seguridad de la capa de transporte) son protocolos criptográficos que proporcionan comunicaciones seguras por una red, comúnmente Internet. SSL implica una serie de fases básicas: 1) Negociar entre las partes el algoritmo que se usará en la comunicación, 2) Intercambio de claves públicas y autenticación basada en Certificados digitales, 3) Cifrado del tráfico basado en cifrado simétrico.

Certificados SSL: se basan en un conjunto de claves públicas y privadas que permiten establecer una conexión segura entre el ordenador del usuario y el servidor del sitio web, así como comprobar si la clave pública de un sitio web corresponde realmente a su propietario. Sin embargo, dado que dicha clave pública está firmada con la clave privada de la autoridad de certificación CA, su seguridad depende de la fiabilidad de la CA que la protege.

SecuritySwitch: Son bibliotecas .NET que permiten a las aplicaciones ASP.NET cambiar automáticamente las solicitudes para páginas y recursos entre los protocolos HTTP y HTTPS sin necesidad de escribir las URLs absolutas en el marcado HTML.

Implementar SecuritySwitch en ASP.NET:

Para hacer uso de las bibliotecas SecuritySwitch, se debe instalar vía NuGet: ( PM> Install-Package SecuritySwitch ), sobre un proyecto ASP.NET activo:

InstallSecuritySwitch

Archivos de SecuritySwitch generado dentro de solución ASP.NET:

  • Common.Logging.dll
  • SecuritySwitch.dll
  • packages.config
  • SecuritySwitch-v4.xsd.

Configuración SecuritySwitch en archivo Web.Config:

SecuritySwitchWebConfig

Solución ASP.NET con SecuritySwitch desde Visual Studio 2010 SP1:

Para probar una solución ASP.NET integrada con SecuritySwitch en Visual Studio 2010:

  1. Verificar que por defecto el Servidor Web de trabajo sea IIS Express, parte de Visual Studio 2010 SP1.
  2. Verificar que la opción SSL habilitado (SSL Enabled) sea igual True en la caja de propiedad del proyecto ASP.NET seleccionado.
  3. Opcionalmente puede establecer el Modo de ejecución en la etiqueta <securitySwitch mode=”LocalOnly”> … </securitySwitch>. Para un caso general simplemente no se establezca el modo, es decir quite el atributo mode junto a su valor.
  4. Verificar que la misma etiqueta de securitySwitch estén establecido adicionalmente dos atributos: baseSecureUri=”https://localhost:44301/&#8221; baseInsecureUri=”http://localhost:1112/&#8221; ,cuya Uri se pueden ubicar en la caja de propiedades del proyecto Web raíz de ASP.NET.
  5. En la sección <paths> … </paths> ubicado dentro de la etiqueta <securitySwitch>…</securitySwitch>, puede especificar que paginas o recursos que van actuar dentro la conexión segura SSL. para mayor detalle observe la imagen previa.

Implementación Solución ASP.NET con securitySwitch en IIS 7.x o superior:

  1. Generar e instalar el sitio Web de solución ASP.NET en Visual Studio 2010 SP1, por cualquiera de las vías conocidas de implementación en IIS.
  2. Instalar y configurar certificado digital de prueba o real (emitido por CA, como VeriSign) en el del servidor Web IIS de destino.
  3. Realizar pequeños ajustes en archivo Web.config del sitio Web de ASP.NET: estableciendo o no el modo de ejecución de securitySwitch así como las Uri de seguridad en el proceso de trabajo.

Configuración SSL en IIS 7.x:

ConfigurarIISconSSLFinal

Recomendación en IIS con SecuritySwitch:

Cuando implemente una solución ASP.NET con SecuritySwitch, No marque la casilla de verificación requiera SSL (Require SSL) en IIS.

RequireSSLinIIS

Código Fuentes:

Enlaces de interés:

enero 23, 2012

Unicidad de Acceso de Usuario en ASP.NET

Archivado en: Aplicaciones Web,Seguridad — JorgePedraza @ 6:14 am
Tags:

Hola, el presente artículo tiene como finalidad resaltar una técnica fácil y sencilla de implementar para validar la unicidad de acceso de cuentas de usuarios contra determinada solución ASP.NET.

La idea principal es reproducir y validar el escenario de cuando uno o más usuarios inician sesión con una misma cuenta de usuario (Login y Password) de forma concurrente o recurrente, contra determinada sitio web de ASP.NET a través de la autenticación por formulario.

Un ejemplo clásico de esto es el sistema Login Windows Live  ID de Hotmail, el cual lleva un mecanismo bien estructurado para permitir múltiples variantes de Login con una determinada cuenta de usuario.

Entonces a continuación se detalla la técnica.
Requisitos:
1.    Microsoft Visual Studio 2010 con SP 1
2.    Experiencia con Lenguaje Visual Basic 2010 o C# 2010
3.    Conocimiento fundamental de Autenticación por formulario de ASP.NET

Elementos claves de la técnica de Unicidad:
1.    Soporte de Autenticación por formulario de ASP.NET
2.    Objeto Application de ASP.NET
3.    Objeto Session de ASP.NET
4.    Propiedad SessionID del Objeto Session (HttpSessionState)

Descripción de la técnica de Unicidad:
Por defecto la técnica se enfoca en mantener un registro de los usuarios autenticados de forma global a través de objeto Application para ser usado en combinación con el Objeto Session de cada usuario anónimamente único.
Para estos se inicia con el formulario Login.aspx, donde una vez validado el usuario se procede a usar el siguiente fragmento de código:

Dim iduser As String = “1”
Dim cadusuario As String = “Demo”

Me.Session("usuario") = cadusuario
Me.Session("id_usuario") = iduser

Application.Lock()
If Application.Item(iduser) Is Nothing Then
    Application.Add(iduser, Me.Session.SessionID.ToString)
Else
    Application.Item(iduser) = Me.Session.SessionID.ToString
End If
Application.UnLock()
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(cadusuario, False)

 

Ahora desde determinada página formulario WebForm o página maestra Site.Master se puede usar el evento Init para colocar el siguiente código:

If Session("id_usuario") Is Nothing OrElse Application(Session("id_usuario")) <> Me.Session.SessionID.ToString() Then
   ‘CerrarSesion()
   lblmensajemain.Text = "Atención otro usuario ha iniciado sesión con la actual cuenta de Usuario, consulte con el Administrador"
End If

Finalmente se concreta la técnica, la cual puede llegar a ofrecer a los usuarios una advertencia o cierre abrupto de la sesión dejando en teoría solo la última sesión activa valida vinculado con determinada cuenta de usuario autenticado.

Nota Importante: Esta técnica fue probado en diferentes navegadores, entornos y frecuencias de tiempo, el cual ha obtenido excelente resultado. De toda manera si usted presenta alguna anomalía, por favor póngase en contacto conmigo para estudiar toda alternativa de reestructuración de la misma.

Código fuente:

En Resumen:

Esta alternativa permite construir soluciones Web más escalable y segura sin necesidad de recurrir a complejo mecanismo de persistencias de datos, para hacer seguimiento de sesiones de usuarios autenticados de forma consistente.

Enlaces de Interés:

  1. HttpSessionState Class
  2. HttpSessionState.SessionID Property
  3. HttpApplicationState Class
  4. How to: Implement Simple Forms Authentication

diciembre 12, 2011

Transformación de Web.Config

Archivado en: Aplicaciones Web — JorgePedraza @ 6:15 am
Tags:

 

Hola la presente de este articulo es para resaltar de forma rápida y precisa la característica Transformación de Web.Config disponible dentro de Visual Studio 2010.

Índices:

  1. Requisitos.
  2. Transformación de Web.Config.
  3. Como funciona Transformación de Web.Config.
  4. Pasos Claves para Transformar Web.Config.
  5. Transformar Web.Config basado en Perfil personalizado.
  6. Código fuente.
  7. Enlaces de Referencia.

1. Requisitos:

  • Visual Studio 2010
  • Conocimientos sobre desarrollo ASP.NET 2.0 o Superior

2. Transformación de Web.Config:

Es una característica equipada dentro de Visual Studio 2010 el cual permitir mantener diferentes versiones de Web.Config dentro de un proyecto del tipo ASP.NET para usar de forma selectiva en la fase de implementación de dicho proyecto.

3. Como funciona Transformación de Web.Config:

Dentro de un proyecto ASP.NET desde Visual Studio 2010, se puede encontrar por defecto 3 archivos Web.Config anidados (Web.Config, Web.Debug.Config, Web.Release.Config), donde los dos últimos mencionado contiene ConnectionStrings por defecto en comentarios, para los cuales se encuentra atributos especiales (xdt:Transform="SetAttributes" y xdt:Locator="Match(name)") dentro de su elemento.

Entonces la idea principal es quitar los comentarios del ConnectionStrings de cada Web.Config y hacer coincidir su nombre (name) para realizar la actualización de valores de ConnectionString en la fase de implementación de acuerdo al perfil de construcción establecido, por ejemplo (Debug o Release).

4. Pasos claves para Transformar Web.Config:

1. Identificar y configurar las versiones por defecto del Web.Config con los ConnectionStrings deseados. 2. Publicar Solución seleccionado determinado Perfil de publicación.
Paso1 Paso2
   
3. Pulsar Botón Publish (Publicar) para genera resultado final bajo el modo de generación, en este caso Debug. 4. Verificar el Web.Config dentro del resultado de publicación.
Paso3 Paso4
   

5. Transformar Web.Config basado en Perfil personalizado:

1. Crear un perfil de construcción, por ejemplo llamado Inicio. 2. Pulsar botón derecho del ratón sobre el Web.Config raíz, luego se da clic sobre la opción Add Config Transforms.
Perfil1 Perfil2
   
3. Identificar y configurar el archivo Web.Inicio.Config, con el ConnectionString deseado. 4. Publicar (Publish) el resultado final basado en el Perfil de construcción Inicio y verificar el Web.Config dentro del resultado de publicación.
Perfil3 Perfil4

Recuerde que para continuar la ejecución y prueba normal del proyecto, se sugiere usar el perfil de construcción tanto Debug o Release.

6. Código Fuente:

7. Enlaces de Referencia:

noviembre 14, 2011

Usando WorkFlows desde ASP.NET 4.0

Archivado en: Aplicaciones Web — JorgePedraza @ 6:03 am
Tags:

 

Hola la presente de este articulo es para resalta de forma general el tema de WorkFlow con un enfoque sobre aplicaciones Web de ASP.NET.

Índices:

  1. WorkFlow
  2. Estilos de Creación de WorkFlow.
  3. Elementos de un WorkFlow.
  4. Motor de tiempo de ejecución del WorkFlow
  5. Pasos básico para iniciar solución ASP.NET con WorkFlow
  6. Descripción Solución de Ejemplo Test WorkFlow ASP.NET
  7. Descripción Solución de Ejemplo Hosting WorkFlow in ASP.NET
  8. Códigos Fuentes.
  9. Puntos de Interés de WorkFlow para su estudio.
  10. En Resumen.
  11. Enlaces de Referencia

1. WorkFlow: Flujo de Trabajo

Un WorkFlow es un conjunto de unidades de trabajos elementales llamadas actividades que están almacenadas como un modelo que describe un proceso real. Los WorkFlow proporcionan una manera de describir el orden de ejecución y las relaciones de dependencia entre las partes de trabajo de ejecución corta o prolongada. Este trabajo pasa a través del modelo desde el principio hasta el final y las actividades pueden ser ejecutadas por personas o por funciones de sistema.

2. Estilos de Creación de WorkFlow

  • WorkFlow Secuencial: Este WorkFlow consta de un conjunto de actividades que se ejecuta de forma secuencial, uno por uno hasta que finalice la última actividad. También a dicho WorkFlow se puede agregar actividades compuesta por defecto o personalizada. Ejemplo de WorkFlow Secuencial:

  • WorkFlow Maquina de Estado: Este WorkFlow consta de un conjunto de Estados. Cada estado puede recibir un determinado conjunto de eventos. Basado en un evento, es posible una transición a otro Estado. El WorkFlow de máquina de Estado tiene un estado Inicial y puede tener un estado final. Cuando se realiza una transición al estado final, se completa el WorkFlow. Ejemplo de WorkFlow Maquina de Estado:

3. Elementos de un WorkFlow:

Elementos de WF 4 Descripción
Control Flow (Flujo de Control)
DoWhile Ejecuta una actividad contenida, mientras una condición es true.
ForEachT Recorre una lista y ejecuta un actividad contenida para cada elemento en la lista.
IF Ejecuta Actividades contenidas basado en una condición especificada.
Parallel Ejecuta Actividades contenidas en paralelo.
ParallelForEach Recorre una lista y ejecuta una actividad contenida en paralelo para cada elemento en la lista.
Pick Suministra un modelado de flujo de control basado en evento en un WorkFlow
PickBranch Rama en una actividad Pick
Sequence Un flujo de control que ejecuta actividades secuencialmente.
SwitchT

Ejecuta uno de sus hijos en función del resultado de una expresión

While Ejecuta una actividad contenida, mientras una condición es true.
Flowchart (Diagrama de Flujo)
FlowChart2 Permite modelado de procesos con una sola ruta de ejecución y bucles hacia los puntos previos de ejecuciones.
FlowDecision Rama condicional en un diagrama de flujo (Flowchart)
FlowSwitch Selecciona el próximo nodo in Diagrama de flujo (Flowchart) dependiendo sobre el valor de una expresión.
State Machine (Maquina de estado)
State Representa un estado en una maquina de estado.
StateMachine2 Permite modelado de procesos con un enfoque orientado a eventos
FinalState Representa un estado final una maquina de estado.
Messaging (Mensajería)
CorrelationScope Ejecuta un conjunto de actividades de mensajerías debajo de la misma correlación.
InitializeCorrelation Inicializa una nueva correlación.
Receive Recibe un mensaje Windows Communications Foundation (WCF).
ReceiveAndSendReply Recibe un mensaje Windows Communications Foundation (WCF) y envía una respuesta al remitente.
Send Envía un mensaje Windows Communications Foundation (WCF).
SendAndReceiveReply Envía un mensaje Windows Communications Foundation (WCF) y espera por un respuesta.
TransactedReceiveScope Envía un mensaje Windows Communications Foundation (WCF) con transacción y ejecuta actividades debajo de esa transacción.
Runtime (Tiempo de Ejecución)
Persist Guarda un WorkFlow.
TerminateWorkFlow Termina la ejecución de un WorkFlow
Primitives (Primitivos)
Assign Asigna un valor a una variable o argumento.
Delay Ejecuta un retardo para una cantidad especificada de tiempo.
InvokeMethod Invoca un método sobre un tipo o objeto CLR.
WriteLine Escribe texto a un TextWriter.
Transaction (Transacción)
CancellationScope Ejecuta una actividad contenida y permite proveer una lógica de cancelación.
CompensableActivity Defina una unidad de trabajo el cual puede ser compensada o confirmada en cualquier punto después de la finalización correcta.
Compensate Invoca el manejador de compensación de una actividad de compensación.
Confirm Invoca el manejador de confirmación de una actividad de compensación.
TransactionScope Ejecuta una actividad contenida debajo de una transacción.
Collection (Colección)
AddToCollectionT Agrega un elemento a una colección.
ClearCollectionT Limpia una colección.
ExistsInCollection Retorno true Sí un elemento existe en la colección.
RemoveFromCollectionT Remueve un elemento de una colección.
Error Handling (Control de Errores)
Rethrow Vuelve a producir una excepción en un Catch.
Throw Lanza una excepción en un WorkFlow.
TryCatch Proporciona manejos de errores en un WorkFlow.

4. Motor de tiempo de ejecución del WorkFlow:

  • Una clase WorkflowInvoker, que invoca el flujo de trabajo como si se tratara de un método.
  • Una clase WorkflowApplication para el control explícito de la ejecución de una única instancia de flujo de trabajo.Una
  • Una clase WorkflowServiceHost para las interacciones basadas en mensajes en escenarios de varias instancias.

Cada una de estas clases ajusta el tiempo de ejecución de la actividad principal, representado como una clase ActivityInstance responsable de la ejecución de la actividad. Puede haber varios objetos ActivityInstance ejecutándose simultáneamente dentro de un dominio de aplicación.

Los tres objetos de interacción de host anteriores se crean a partir de un árbol de actividades al que se hace referencia como programa de flujo de trabajo. Con estos tipos o con un host personalizado que ajuste la clase ActivityInstance, los flujos de trabajo se pueden ejecutar dentro de cualquier proceso de Windows, incluidos las aplicaciones de consola, las aplicaciones basadas en formularios, los Servicios de Windows, los Sitios web de ASP.NET y los servicios de Windows Communication Foundation (WCF).

5. Pasos básico para iniciar solución ASP.NET con WorkFlow :

1. Crear Proyecto ASP.NET Web Application 2. Agregar Nuevo elemento Activity de WorkFlow llamado ActivityAritmetica al proyecto ASP.NET 3. Diseñar y Desarrollar WorkFlow para dar operación aritmética a dos numero.
Paso1 Paso2 Paso3
     
4. Diseñar interfaz de usuario web en Default.aspx con entradas y salida de datos de ActivityAritmetica 5. Introducir Código en el botón igual, para invocar ActivityAritmetica con su parámetros de entrada y salida. 6. Compilar y probar la solución de ASP.NET.
Paso4 Paso5 Paso6
     

6. Descripción Solución de Ejemplo Test WorkFlow ASP.NET :

Se trata de la función Cifrado .NET llevada a la versión WorkFlow la cual es consumida desde Aplicación Web de ASP.NET

1. Diseño y Desarrollo WF 2. Generación 3. Consumo
WFCifradoNET WFCifradoNETDLL WFCifradoNETASPNET

7. Descripción Solución de Ejemplo Hosting WorkFlow in ASP.NET :

Se trata de una solución que involucra 3 proyectos (Actividad de Envió de Email, Servicio WCF para Envío de Email, Aplicación Web de ASP.NET). Esta solución tiene finalidad de Enviar Email desde Aplicación cliente (ASP.NET) a través de un series elementos Workflow enlazado como un servicio WCF y biblioteca de proceso. Aquí es importe paremetrizar correctamente (From, host, password, subject, to, UserName) de la actividad SendEmailActivity contenida en el WorkFlow del Servicio WCF de Envío de Email, para obtener resultado satisfactorio.

1. Actividad de Envío de Email 2. Servicio WCF de Envío de Email 3. Consumo de Servicio WCF Email
WFSendEmailActivityDesigner WFSendEmailService WFEnviarEmailASPNET

WFSendEmailActivityDesignerDLL

WFSendEmailServiceRun WFEnviarEmailASPNETrun

8. Códigos Fuentes:

9. Puntos de Interés de WorkFlow para su estudio:

  1. Diseñar e implementar actividades personalizadas.
  2. Modelo de datos de Windows Workflow Foundation.
  3. Esperar entrada en un flujo de trabajo.
  4. Excepciones, transacciones y compensación.
  5. Hospedar de WorkFlow.
  6. Servicios de WorkFlow.
  7. Persistencia del WorkFlow.
  8. Migrar WorkFlow.
  9. Seguimiento y traza del WorkFlow
  10. Seguridad del WorkFlow

10. En Resumen:

Windows Workflow Foundation (WF) genera el nivel de abstracción para desarrollar aplicaciones interactivas de ejecución prolongada. Las unidades de trabajo se encapsulan como actividades. Las actividades se ejecutan en un entorno que proporcione los medios para el control de flujo, el control de excepciones, la propagación de errores, la persistencia de los datos de estado, la carga y descarga de flujos de trabajo en progreso de la memoria, el seguimiento y el flujo de la transacción.

11. Enlaces de Referencia:

septiembre 4, 2011

Maestro Detalles ADO.NET en WPF

Archivado en: Aplicaciones Windows — JorgePedraza @ 10:17 am
Tags:

Hola, el presente artículo intenta resaltar de forma rápida y sencilla el desarrollo de una aplicación de datos de última generación (Aplicación Maestro Detalles) donde involucra tecnologías actuales de Microsoft .

Esta aplicación de ejemplo del tipo Windows está comprendida en tres aspectos de interés como: presentación grafica de la aplicación para el usuario (WPF Windows Presentation Foundation), Manipulación de datos (ADO.NET) y finalmente repositorio de datos (SQL Server Compact 4.0).

Con esta información se busca ofrecer una base fundamental para el desarrollo y expansión de soluciones en diferentes escenarios de forma genérica como es el caso de otros motores de base de datos y aplicaciones relacionadas con tecnologías.

Índice:

  1. Requisitos.
  2. Conceptos Claves para este Articulo.
  3. Diagrama entidad relación de Base Datos del Ejemplo (Maestro Detalles).
  4. Esquema del Documento (Document Outline) – Aplicación Demo WPF.
  5. Arquitectura de la Aplicación WPF con Maestro Detalles ADO.NET.
  6. ItemTemplate de ListBox WPF
  7. Representación y enlaces de ItemTemplate del ListBox desde XAML.
  8. Código de Aplicación Maestro Detalles ADO.NET en WPF
  9. Código Fuente.
  10. En Resumen.
  11. Enlaces de Interés.

1. Requisitos:

  1. Microsoft Visual Studio 2010 SP 1
  2. Microsoft Visual Studio 2010 SP1 Tools for SQL Server Compact 4.0
  3. Experiencia con Microsoft Visual Basic 2010 o C# 2010
  4. Experiencia con ADO.NET

2. Conceptos claves para este Articulo:

  • WPF: Windows Presentation Foundation (WPF) es un sistema de presentación grafica de ultima generación para construir aplicaciones clientes Windows con experiencias de usuario visualmente impresionantes.
  • XAML: Es un lenguaje de marcado basado en XML, que se utiliza para implementar la apariencia de una aplicación de forma declarativa.
  • SQL Server Compact 4.0 : Es una base de datos compacta ideal para incrustarse en aplicaciones de escritorio y web. Este ofrece funcionalidad de base de datos relacional en un espacio reducido: un sólido almacén de datos, un procesador de consultas de optimización y una conectividad confiable y escalable.
  • DataSet : Es un caché de memoria interna de datos y representa un componente fundamental de la arquitectura de ADO.NET. Un DataSet puede contener uno o más tablas llamadas DataTable que a su ves puede ser relacionadas por uno o más objetos de relación llamados DataRelation.

3. Diagrama entidad relación de Base Datos del Ejemplo (Maestro Detalles):

EntidadRelacionDB

4. Esquema del Documento (Document Outline) – Aplicación Demo WPF:

XAMLyDesign Document OutlineWPF
     

Descripción a nivel de XAML

Window:     Representa una Ventana de la aplicación Windows
  Resources:   Forma sencilla de reutilizar objetos y valores comúnmente definido.
    DataSet (myds) Elemento proxy establecido para el objeto mydscode del tipo DataSet
    CollectionViewSource (EncDocViewSource) Elemento proxy establecido para el objeto MasterEncDocViewSource del tipo CollectionViewSource.
    CollectionViewSource (EncDoc_DetDocViewSource) Elemento proxy establecido para el objeto DetailEncDoc_DetDocViewSource del tipo CollectionViewSource.
  Grid:   Define un área de cuadrícula flexible que se compone de filas y columnas.
    ListBox (lbxEncDoc) Caja de Lista para mostrar datos del DataTable (EncDoc)
    Button (btnProximoEncDoc) Botón para invocar instrucción próximo registro dentro del MasterEncDocViewSource.View
    TextBox (txtNombre) Caja de Texto para mostrar o establecer datos en el campo Nombre del DataTable (EncDoc)
    Button (btnNuevoEncDoc) Botón para invocar instrucción Nuevo Registro dentro del MasterEncDocViewSource.View
    ListBox (lbxDetDoc) Caja de Lista para mostrar datos del DataTable (DetDoc)
    Button (txtCifra) Caja de Texto para mostrar o establecer valor numérico en el campo Cifra del DataTable (DetDoc)
    Button (btnNuevoDetDoc) Botón para invocar instrucción Nuevo Registro dentro del DetailEncDoc_DetDocList.View
    Button (btnQuitarDetDoc) Botón para invocar instrucción Quitar Registro actual dentro del DetailEncDoc_DetDocList.View
    Button (btnUpdate) Botón para invocar rutina de actualización de datos contra el origen de datos.
    Button (btnQuitarEncDoc) Botón para invocar instrucción Quitar Registro actual dentro del MasterEncDocViewSource.View
    Button (btnBuscar) Botón para invocar rutina de filtro de datos
    Button (btnTodos) Botón para invocar instrucción Quitar filtro de datos
    Button (btnOrdenar) Botón para invocar instrucción de ordenación de datos.

5. Arquitectura de la Aplicación WPF con Maestro Detalles ADO.NET:

FlujoAr

6. ItemTemplate de ListBox WPF:

ItemTemplateAndAppWPF

         

Descripción a nivel de XAML

ListBox(lbxEncDoc)         Caja de Lista en WPF
  ItemTemplate       Obtiene o establece el DataTemplate utilizado para mostrar cada elemento.
    DataTemplate     Describe la estructura visual de un objeto de datos.
      Grid   Define un área de cuadrícula flexible que se compone de filas y columnas.
        ColumnDefinition Define propiedades específicas de la columna que se aplican a elementos Grid.
        ColumnDefinition  
      TextBlock   Proporciona un control ligero para mostrar pequeñas cantidades de contenido de flujo.
      TextBlock    

7. Representación y enlaces de ItemTemplate de ListBox desde XAML:

ItemTemplateXAML3

8. Código de Aplicación Maestro Detalles ADO.NET en WPF:

A continuación se comenta algunos aspectos claves del código fuente en Visual Basic 2010 necesario para dar marcha a la aplicación planteada:

ADONETWPFVB

9. Código Fuente:

  • DemoWpf4Adonet (Visual Basic 2010, WPF 4, ADO.NET, SQL Server Compact 4)

10. En Resumen:

La aplicación Demo Maestro Detalles ADO.NET en WPF 4 descrita en este artículo ofrece un acceso directo a determinada estrategia de desarrollo de aplicaciones de última generación relacionado con actuales tecnologías Microsoft como WPF 4, SQL Server Compact 4.0, ADO.NET, etc. Y así establecer una alternativa sólida para dar inicio y continuidad a soluciones más compleja de forma rápida y segura.

11. Enlaces de Interés:

agosto 9, 2011

SQL Server Compact 4.0 y ASP.NET 4.0

Hola, la presente de este articulo es para resaltar de forma rápida y sencilla el tema de SQL Server Compact 4.0 dentro del escenario de ASP.NET 4.0.

Índice:

  1. Requisitos.
  2. SQL server Compact 4.0.
  3. SQL Server Compact 4.0 con ASP.NET 4.0.
  4. Código Fuente.
  5. En Resumen.
  6. Enlaces de interés.

Requisitos:

  1. Visual Studio 2010 Service Pack 1 (SQL Server Compact 4.0)
  2. Visual Studio 2010 SP1 Tools for SQL Server Compact 4.0

SQL server Compact 4.0:

Es una base de datos compacta ideal para incrustarse en aplicaciones de escritorio y web. SQL Server Compact 4.0 proporciona a los desarrolladores un modelo de programación común a otras ediciones de SQL Server para el desarrollo tanto de aplicaciones nativas como administradas. SQL Server Compact ofrece funcionalidad de base de datos relacional en un espacio reducido: un sólido almacén de datos, un procesador de consultas de optimización y una conectividad confiable y escalable.

Características de SQL Server Compact 4.0:

  • Integración con WebMatrix y Visual Studio 2010 Service Pack 1
  • Compatibilidad por defecto con ASP.NET 4.0
  • Sencilla implementación privada
  • Integración con ADO.NET Entity Framework 4.0
  • Mayor Confiabilidad (capaz de tratar la carga de trabajo de los sitios web para principiantes)
  • Mayor Seguridad (uso de algoritmo SHA2)
  • Sintaxis de T-SQL para OFFSET y FETCH (Para realizar consulta de Paginación)
  • Mejoras de la API (System.Data.SqlServerCe.SqlCeConnection.GetSchema y System.Data.SqlServerCe.SqlCeConnectionStringBuilder)

SQL Server Compact 4.0 y ASP.NET 4.0:

SQL Server Compact 4.0 se ha optimizado y ajustado para usarse con aplicaciones Web ASP.NET. En él se garantiza que puede tratar la carga de los sitios Web para principiantes.

Características de SQL Server Compact 4.0 con ASP.NET 4.0:

  • Memoria Virtual optimizada para permitir un máximo de 256 conexiones por base de datos.
  • Uso de Confianza Parcial para ejecución dentro de escenario de aplicaciones ASP.NET
  • Mejor desempeño en escenario de conexiones simultáneas a la base de datos desde aplicaciones ASP.NET.
  • La marca SQLServerCompactEditionUnderWebHosting ya no se requiere en SQL Server Compact 4.0.

Pasos claves para trabajar con SQL Server Compact 4.0 y ASP.NET 4.0:

  1. Crear un sitio o aplicación del tipo ASP.NET 4.0 desde Visual Studio 2010.
  2. Dentro del proyecto y a nivel de la carpeta App_Data, se debe crear una o más Base de datos del tipo SQL Server Compact 4.0 (por ejemplo Database1.sdf)
  3. En dicha base de datos, se debe crear estructuras de datos (Tablas, Columnas, Clave Primaria, etc.) según sea el caso requerido.
  4. A nivel de propiedad de proyecto ASP.NET 4.0 en la parte de configuración debe crear uno o más valores del tipo de cadena de conexión que apunte correctamente a la base de datos ya mencionada.
  5. Verifique que la cadena de conexión generada dentro del Web.Config; tenga establecido su ProviderName =”System.Data.SqlServerCe.4.0
  6. Finalmente ya se puede comenzar a desarrollo con diferentes opciones de ASP.NET 4.0; por Ejemplo: ADO.NET, Control SqlDataSource, Control EntityDataSource, etc.

Código Fuente:

En Resumen:

Con la versión 4.0 de SQL Server Compact, ahora es posible trabajar de forma predeterminada con aplicaciones Web del tipo ASP.NET 4.0 en escenarios bien específicos sin necesidad de recurrir a la complejidad de otros motores de base de datos; para realizar gestiones de datos de menos impacto.

Enlaces de interés:

Página siguiente »

El tema Rubric Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.