La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Migración a Visual Basic .NET

Presentaciones similares


Presentación del tema: "Migración a Visual Basic .NET"— Transcripción de la presentación:

1 Migración a Visual Basic .NET
Rodrigo Bruno Application Development Consultant Soporte Premier a Desarrolladores

2 Objetivos … Explicar porqué un desarrollador de VB6 debería pasar a VB.NET Ayudar/facilitar la transición de VB6 a VB.NET

3 Agenda Referencias: Guías de arquitectura, diseño y código
Arquitectura del .NET Framework y la CLR Estrategias de migración VB6 vs VB.NET: Diferencias en el lenguaje Acceso a datos: ADO.NET Asistente de Actualización de Aplicaciones Interoperabilidad con COM Implantación de aplicaciones (no touch) Seguridad en el .NET Framework

4 1.- Guías de arquitectura / diseño y código
Guías de Arquitectura (PAG) Estándares de desarrollo Application Blocks Guías de migración

5 Guías de arquitectura Guías de diseño para aplicaciones .NET
Muestran como encaja todo junto Blueprint para decisiones a nivel de diseño Alto riesgo en la etapa de diseño Arquitectos son contrarios al riesgo No es una solución para todos los diseños Hay escenarios específicos Preservar las inversiones “¿Tendré que rehacer todo en el futuro?”

6 Data Access Components
Guías de Arquitectura Operational Management Security Communication Users and Devices Business Presentation Data UI Components UI Process Components Services Svc Interfaces Svc Agents Business Workflows Business Components Business Entities Data Access Components Data Sources

7 Guías de Arquitectura http://msdn.microsoft.com/practices/
Application Architecture for .NET: Designing Applications and Services .NET Data Access Architecture Guide Building Secure ASP.NET Applications Debugging .NET Applications Exception Management in .NET .NET/COM Migration and Interoperability Monitoring in .NET Deploying .NET Applications Team Development with SourceSafe UNIX Code Migration Guide

8 Estándares de desarrollo
Ayudan a escribir código robusto y seguro que funciona de manera consistente con el Framework .NET Facilitan la propiedad colectiva del código .NET Framework Design Guidelines FxCop: analiza el código managed para chequear las prácticas recomendadas

9 Application Blocks Data Access Application Block for .NET
Componente .NET que contiene código optimizado de acceso a datos Exception Management Application Block for .NET Provee un framework simple y extensible para manejar excepciones

10 Referencias Estrategia de migración: Guía de migración a .NET:
Microsoft .NET/COM Migration and Interoperability: Guía de migración a .NET: Upgrading to .NET:  Guía específica para VB: Upgrade to Visual Basic .NET from Visual Basic 6.0: Visual Studio 2003:

11 2.- Arquitectura del .NET Framework y la CLR
Objetivos de diseño Arquitectura Beneficios Compilación

12 Introducción a .NET Objetivos de diseño de .NET Framework
Entorno consistente de orientación a objetos: mismo modelo para ejecución local, código remoto o entorno distribuido en Internet Minimizar conflictos: implantación y versiones Proporcionar ejecución segura de código Eliminar problemas de rendimiento de código interpretado o con scripting Mayor productividad del desarrollador tanto para aplicaciones Windows como Web Comunicación basada en estándares de la industria

13 Introducción a .NET Framework, Lenguajes y Herramientas
Sistema Operativo Common Language Runtime Base Class Library ADO.NET y XML ASP.NET Web Forms Web Services Mobile Internet Toolkit Windows Forms (.NET CF) Common Language Specification VB C++ C# JScript® J# Visual Studio® .NET

14 Introducción a .NET Framework, Languajes y herramientas
System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Common OleDb SQLTypes SqlClient XPath XSLT Runtime InteropServices Remoting Serialization SessionState Caching Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Printing System.Windows.Forms Design ComponentModel

15 Introducción a .NET Beneficios del .NET Framework
Simplifica el desarrollo y la implantación Proporciona un entorno de ejecución seguro y robusto Unifica modelos de programación Soporta múltiples lenguajes de programación Independiente de la plataforma

16 Introducción a .NET Beneficios del .NET Framework
Sistema común de tipos Instancias y definición de tipos comunes Orientación a objetos: Clases e interfaces Constructores, propiedades, métodos, eventos Herencia cruzada entre lenguajes Interoperabilidad Con COM Con DLLs nativas (del estilo Win32)

17 Introducción a .NET Beneficios del .NET Framework
Elimina la “fontanería” de COM No más … Registro GUIDs Archivos .IDL HRESULTs IUnknown AddRef/Release CoCreateInstance =>Aps autodescriptivas =>namespaces jerárquicos =>objetos autodescriptivos =>excepciones estructuradas =>objeto raiz común =>garbage collector =>operador ”new”

18 Introducción a .NET Compilación y ejecución
Assembly Código (IL) Código fuente Compilador del lenguaje Metadatos En instalación o la primera vez que se invoca a cada método Ejecución Compilador JIT Código Nativo

19 3.- VB6 vs VB.NET: Diferencias en el lenguaje
Visual Basic 6 vs. Visual Basic .NET Compatibilidad con Visual Basic 6 Cambios a nivel de código

20 Se echaba en falta en VB6 ... No totalmente orientado a objetos: herencia No se pueden crear aplicaciones free-threaded Evitar problemas de registro y versiones Una programación Web menos compleja (respecto a la programación Windows) Mecanismos para evitar fugas de memoria Un tratamiento de errores más potente Runtime integrada

21 Novedades del lenguaje
Herencia, sobrecarga, polimorfismo, constructores, … Free-threading (procesamiento asíncrono) No se usa el registry Programación Web: ASP.NET Recolector de basura

22 Novedades del lenguaje (2)
Control de errores estructurado: Try … Catch La runtime de VB.NET forma parte del Framework. Incluida en el redistribuible Más: Punteros a funciones (delegates), nuevos tipos de datos, comprobación estricta de tipos, …

23 ¿ Compatibilidad ? No es fácil
VB.NET no es VB6 + nuevas características Nuevas características requieren rediseño Nuevo formato de ficheros Interoperabilidad entre lenguajes Integración con .NET framework

24 ¿ Compatibilidad ? Alternativas
Actualizar las aplicaciones VB6 Coexistencia (interop) El nuevo código .NET podrá ser: Creado desde cero Migrado  Upgrade Wizard

25 Librería de compatibilidad
Microsoft.VisualBasic.Compatibility Cuando no haya nada equivalente Cuando lo equivalente sea muy diferente VB6.<nombre de función> No recomendable su utilización 'VB6 Form1.Show Form1.Show vbModal Form1.Show X 'Visual Basic.NET Form1.Show Form1.ShowDialog VB6.ShowForm(Form1, X)

26 Cambios a nivel de código
Tipos Variant: sustituidos por Object No hay propiedades por defecto Variables a nivel de bloque Las llamadas a procedimiento necesitan paréntesis Los procedimientos permiten Return Los parámetros son ByVal por defecto Posible declarar & inicializar variables Más …

27 Imports System.Math Namespace Geometria Public Module Module1 Sub Main() Dim tri As New Triangulo(2, 3, 4) Console.WriteLine(tri.CalcularArea()) Console.WriteLine(Circulo.Area(5)) End Sub End Module Public Class Triangulo Dim m_a, m_b, m_c As Integer Public Sub New() Public Sub New (ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) m_a = a : m_b = b : m_c = c Public Function CalcularArea() As Double Dim s As Double = (m_a + m_b + m_c) / 2 Return Sqrt(s * (s – m_a) * (s – m_b) * (s – m_c)) End Function End Class Public Class Circulo Public Shared Function Area(ByVal r As Double) As Double Return Pi * (r ^ 2) End Namespace

28 Demo 1 Novedades del lenguaje

29 4.- Acceso a datos: ADO.NET
ADO vs ADO.NET Características de ADO.NET Arquitectura Enlace a datos (binding)

30 ADO vs ADO.NET ADO trabaja bien, pero:
Necesita COM y Windows Los recordsets no viajan bien a través de Internet ADO.NET resuelve estos problemas: Utiliza XML (a bajo nivel) para realizar el transporte de datos XML no tiene requisitos específicos de runtime/transporte No se necesita un código especial para hacer el marshaling a través de Internet ADO .NET, una nueva mentalidad: Entorno desconectado Todo el transporte de datos utiliza XML

31 ADO.NET DBLib, ODBC, DAO, RDO, ADO, …. ADO.NET
System.Data: la clase raiz A partir de ahí, principales namespaces: System.Data.OleDB System.Data.SQLClient System.Data.ODBC, System.Data.OracleClient System.XML: para trabajar directamente con XML

32 ADO.NET System.Data.OleDb: trabaja con todas las fuentes OLE DB
Soporta unmanaged providers de ADO System.Data.SQLClient: sólo SQL Server (managed) VStudio 2003: System.Data.ODBC, System.Data.OracleClient

33 Arquitectura de ADO.NET
Presentación Windows Forms MiAp.Exe DataSet Negocio Datos Web forms Internet intranet Data object (class) IE Data adapter DataSet DataSet Xml Data adapter Business to business (BizTalk, por ejemplo)

34 Diferencia fundamental
En ADO: Buffer de datos Acceso a datos Recordset En ADO.NET: Buffer de datos Acceso a datos DataAdapter DataSet

35 ADO.NET: Connection OleDbConnection/SQLConnection
Representa la sesión contra la BD Utilizados por objetos Data Adapter y Command para recuperar/actualizar Inicia las transacciones Connection.BeginTransaction() devuelve un objeto Transaction xxxTransaction Un comando se enlista en una transacción IsolationLevel Commit() / Rollback() Configuración del pool de conexiones en el connection string

36 ADO.NET: Command OleDbCommand/SQLCommand
Representa Transact-SQL o procedimientos almacenados Devuelve un resultset (ExecuteReader), un valor (ExecuteScalar), o ejecuta sentencias de modificación (ExecuteNonQuery) Generación automática con el objeto CommandBuilder

37 ADO.NET: DataReader OleDbDataReader/SQLDataReader
Stream forward-only read-only Utilizado por el DataAdapter Muy rápido Creado por un objeto Command (ExecuteReader)

38 ADO.NET: DataAdapter OleDbDataAdapter/SQLDataAdapter
Representa un conjunto de Commands y una Connection Puente entre el DataSet y la BD Lee y actualiza la BD: SelectCommand, UpdateCommand, InsertCommand, DeleteCommand

39 ADO.NET – DataAdapter DataAdapter Base de datos SelectCommand
InsertCommand UpdateCommand DeleteCommand DataSet TableMappings

40 ADO.NET: DataSet Objeto estrella en ADO.NET
Representa una caché de datos en memoria Contiene DataTables Lee y escribe datos y esquemas en XML Serializable Puede ser tipado o no tipado: Ambos heredan de la clase DataSet El tipado se apoya en un esquema XML (.XSD) para generar la clase El tipado tiene ventajas: Expone estructura como propiedades y métodos: Intellisense Recoge la Primary key

41 ADO.NET: Otros objetos DataTable DataView DataRelation
Representa una tabla en memoria Lo rellena un DataAdapter o a mano Componente principal de los objetos DataSet y DataView DataView Vista personalizada de un objeto DataTable Filtros, ordenación, búsquedas … DataRelation Define relaciones entre tablas Utiliza columnas de un DataTable

42 ADO.NET - DataSet DataTable DataSet DataColumn DataTable DataRow
Relations Constraints XML Schema

43 ADO.NET: Lecturas Método Fill del objeto DataAdapter
Se utiliza el SelectCommand del DataAdapter Inserta/actualiza datos del DataSet Si la tabla existe, actualiza datos Si no existe, crea y rellena la tabla Una tabla por cada resultset Mantiene la conexión en su estado original

44 ADO.NET: Actualizaciones
La funcionalidad en ADO es implícita. Recordset = caja negra. Ejemplo: UpdateBatch En ADO.NET: Se crea un modelo más explícito y transparente. InsertCommand, UpdateCommand, DeleteCommand Eventos de Update CommandBuilder: generación automática de los comandos de Insert, Update y Delete a partir del SelectCommand

45 ADO.NET: Actualizaciones
DataAdapter.Update: Analiza los cambios del DataSet Ejecuta los comandos Insert, Update y Delete necesarios Refresca el DataSet Orden de ejecución por defecto: Insert, Update y Delete.

46 ADO.NET: Enlace a datos ADO .NET soporta enlazar (binding) DataSets a Windows Forms / Web Forms y sus controles VStudio .NET incluye bastantes wizards para hacer el enlace entre datos y controles

47 Demo 2: Aplicación maestro-detalle

48 5.- Asistente de actualización de aplicaciones: código
Consideraciones Asistente: lo no soportado Upgrade Wizard Final de la actualización

49 Consideraciones Opciones El nuevo código .NET podrá ser:
Continuar con VB6 Interoperar entre VB6 y VB.NET Actualizar a VB .NET El nuevo código .NET podrá ser: Creado desde cero Migrado  Upgrade Wizard Ventajas de la actualización Aprovechar las características del .NET Framework Aprovechar las características de Visual Basic .NET Desventajas de la actualización Algunas características no se actualizan Más trabajo de desarrollo y pruebas La actualización de código es sólo una parte

50 Consideraciones Migración horizontal Migración vertical
Una sola capa, al completo Migración vertical Aislar y reemplazar una parte en todas las capas

51 Consideraciones Elegir una estrategia que minimice el riesgo
Elegir actividades que permitan continuar utilizando la base de código COM mientras nos movemos a .NET Sacar partido rápidamente a las nuevas funcionalidades del entorno .NET Factores a tener en cuenta: Aislamiento Nueva funcionalidad Uso intensivo de recordsets entre capas Arquitectura existente

52 Asistente: lo no soportado
Data binding de DAO y RDO Controles de Visual Basic 5.0 Aplicaciones DHTML ActiveX® documents Páginas de propiedades Add-ins Controles de usuario (Web classes)

53 Aspecto del formulario Avisos de comportamiento
Upgrade Wizard Aspecto del formulario Controles ActiveX ADO (data binding) Archivos .RES Código Cambios de sintaxis Librerías COM Avisos de comportamiento

54 Final de la actualización
Proyecto Visual Basic .NET El Upgrade Wizard enumera: Upgrade issues Upgrade to-dos Upgrade warnings Upgrade notes Completar los cambios Compilar la aplicación

55 Demo 3: Upgrade Wizard

56 6.- Interoperabilidad con COM
Migrar o interoperar COM y .NET Llamadas desde .NET a COM Llamadas desde COM a .NET

57 Migrar o interoperar Migrar Interoperar
Todo el código en un entorno consistente Actualizar para tomar ventaja de .NET Interoperar Reutilizar código existente Preservar inversiones Acceso a funcionalidad no migrable

58 COM y .NET Componentes DCOM COM+ Recordset </>
IUnknown/IDispatch GUID/CLSID/etc Assemblies Remoting EnterpriseServices DataSet Serialization </>

59 COM y .NET COM .NET COM .NET .NET utilizando COM COM utilizando .NET
Los tipos .NET pueden acceder a tipos COM Vuelta al registry y a las limitaciones de implantación actuales COM utilizando .NET Los tipos COM pueden acceder a tipos .NET COM .NET COM .NET

60 Llamadas desde .NET a COM
Common Language Runtime Servidor COM Objeto Runtime Callable Wrapper Referencias por contador Cliente Referencias traceadas RCW: Creado con Visual Studio .NET ò tlbimp.exe Primary interop assembly Marshal.ReleaseComObject()

61 Llamadas desde COM a .NET
Common Language Runtime Referencias traceadas Servidor COM IUnknown IDispatch COM Callable Wrapper IPropio Objeto IPropio Referencias por contador Cliente

62 Llamadas desde COM a .NET
Creación del assembly .NET: Definir interface en el componente Tipos públicos Opcional: crear strong name e incluir en la GAC COM Callable Wrapper Crear el assembly con Visual Studio .NET Exportar la librería de tipos con tlbexp.exe Hacer que el assembly esté disponible para COM regasm.exe, ò Global Assembly Cache (GAC)

63 Demo 4: COM Interop

64 7.- Implantación Smart Clients
Consideraciones Nuevas opciones No-Touch Seguridad Apoyos

65 Implantación Consideraciones
Impacto en el sistema ¿ La instalación de la aplicación 1 romperá la aplicación 2 ? Implantación la primera vez Cada cliente debe tener la aplicación explícitamente instalada Actualización de la aplicación Si hay cambios en el interfaz de usuario, cada cliente debe reinstalar la aplicación para actualizarse

66 Implantación Consideraciones
Problema a resolver: Ejecutar o actualizar una aplicación sin tocar el cliente Si ya utilizamos un software de gestión de instalaciones (IntelliMirror, SMS, etc), continuar utilizándolo.

67 Implantación Consideraciones
Las aplicaciones son aisladas Implantación privada por defecto Las aplicaciones son autodescriptivas Pueden coexistir múltiples versiones La compartición es controlada y explícita: Strong name, GAC Por defecto, las aplicaciones utilizan el assembly con el que fueron construidas, no la última versión Side-by-side

68 Implantación Nuevas opciones
La implantación es simple XCOPY en el cliente Ejecución desde un recurso de red Click sobre un enlace en el browser (no touch) No-touch deployment Por defecto, aislamiento de aplicaciones No se necesita registro Componentes compartidos (strong names, versión)

69 Implantación No touch Internet Aplicación Explorer cliente MiApp.exe
HTTP MiApp.exe Managed Exe? .NET Framework HTTP MiApp.dll Web Server Download Cache

70 Implantación No-Touch
Ejecutable lanzado como URL (IEEXec) Sin instalación, actualización automática Click en un link en el browser El EXE y los assemblies referenciados se descargan Otros assemblies: utilizar Assembly.LoadFrom Almacenamiento en download cache C:\Documents and Settings\usuario\Local Settings\Application Data\assembly Descarga sólo cuando hay actualizaciones Por usuario Descarga de assemblies dependientes: según se van necesitando

71 Implantación No-Touch con loader
Otra opción: EXE local pequeño: loader Carga de assemblies desde un Web server La aplicación se descarga en tiempo de ejecución Para actualizar la aplicación, actualizar los assemblies del servidor Para cargar los assemblies: Assembly.LoadFrom(URL) URL: URL a un assembly Descarga y cachea el assembly Chequeo automático de nuevas versiones Permisos: depende de dónde viene el assembly

72 Implantación Seguridad
Las aplicaciones son semi-confiables Se ejecutan, y pueden realizar un número limitado de tareas Seguridad en función del origen de la aplicación (de dónde viene) Similar a páginas web en el browser Configuración de seguridad: herramienta .NET Framework Configuration Strong names Proporcionan un grado de seguridad mayor Distinto de signcode

73 Implantación Apoyos Auto Updater (componente):
.NET Client Applications: .NET Application Updater Component Artículo en MSDN Magazine: Write Auto-Updating Apps with .NET and the Background Intelligent Transfer Service API (utiliza Windows Update)

74 Demo 5: No Touch Deployment

75 8.- Seguridad en el .NET Framework
Conceptos de seguridad Seguridad basada en roles Autenticación Autorización

76 Seguridad ¿Qué se quiere evitar? Qué aporta .NET:
Acceso no controlado a la aplicación, por parte de usuarios no conocidos Acceso ilimitado a toda la aplicación, por parte de usuarios autenticados Qué aporta .NET: Nuevas herramientas para proteger la información del usuario (ej. System.Security.Cryptography) Acceso al código Code-access security (evidencias) Acceso de usuarios * De Windows Genéricos

77 Seguridad Usuarios: seguridad basada en roles
Roles con una serie de permisos Fácil administración Soporte para Grupos de Windows Roles genéricos Import de: System.Threading System.Security.Principal Enterprise Services también dispone de roles

78 Seguridad Autenticación
Identificar al usuario Verificar sus credenciales Seguridad Windows Base de datos Archivo XML Creación del objeto Identity Identifica al usuario Tipo de autenticación: Windows o Generic Creación del objeto Principal Incluye el Identity y almacena la pertenencia al role Se aplica a usuarios Genéricos y de Windows

79 Seguridad Autenticación
Usuario de Windows Dim winIdentity as WindowsIdentity = WindowsIdentity.GetCurrent() Dim winPrincipal As New WindowsPrincipal(winIdentity) Thread.CurrentPrincipal = winPrincipal Usuario Generic Dim genIdentity as New GenericIdentity(“John”) Dim Roles() as String = {“Employee”,”Manager”} Dim genPrincipal As New GenericPrincipal(genIdentity, Roles) Thread.CurrentPrincipal = genPrincipal

80 Seguridad Autorización
Proceso de autorización de acceso El usuario ya ha sido autenticado El usuario solicita realizar una tarea Se comprueba la pertenencia al role Se restringe el acceso a ciertas partes de la aplicación

81 Seguridad Autorización
Usuarios Windows / Generic If Thread.CurrentPrincipal.IsInRole(“Manager”) Or _ Thread.CurrentPrincipal.IsInRole(“BuiltIn\Admministrators”) Then BindEmployeesGrid() BindEmployeeDetailsGrid() bnViewSalaryReport.Enabled = True Else BindEmployeeGrid() bnViewSalaryReport.Enabled = False End If

82 Demo 6: Seguridad en las aplicaciones

83 Preguntas / Dudas </>


Descargar ppt "Migración a Visual Basic .NET"

Presentaciones similares


Anuncios Google