La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Migración a Visual Basic.NET Rodrigo Bruno Application Development Consultant Soporte Premier a Desarrolladores."— 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 UI Components Operational Management Security Communication UI Process Components Data Access Components Business Workflows Business Components Users and Devices Data Sources Business Entities Services Svc Interfaces Svc Agents Guías de Arquitectura Business Presentation Data

7 Guías de Arquitectura 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 us/cpgenref/html/cpconnetframeworkdesignguideli nes.asp us/cpgenref/html/cpconnetframeworkdesignguideli nes.asp 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: Microsoft.NET/COM Migration and Interoperability: us/dnbda/html/cominterop.asp us/dnbda/html/cominterop.asp Guía de migración a.NET: Upgrading to.NET: us/dndotnet/html/upgradingtodotnet.asp us/dndotnet/html/upgradingtodotnet.asp 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 WindowsForms (.NET CF) Common Language Specification VBC++C# JScript JScript ®J# Visual Studio.NET Visual Studio ®.NET

14 System System.DataSystem.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 Serialization ConfigurationSessionState CachingSecurity Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms DesignComponentModel Introducción a.NET Framework, Languajes y herramientas

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

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 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 ¿ Compatibilidad ? No es fácil

24 ¿ Compatibilidad ? Alternativas 1. Actualizar las aplicaciones VB6 2. 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. 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() End Sub Public Sub New (ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) m_a = a : m_b = b : m_c = c End Sub 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 Function End Class 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 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 ADO vs ADO.NET

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 NegocioDatos Presentación Windows Forms Web forms Business to business Data object (class) DataSet DataSet DataSet Internet intranet Data adapter (BizTalk, por ejemplo) Xml MiAp.Exe IE Arquitectura de ADO.NET

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

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 SelectCommand InsertCommand UpdateCommand DeleteCommand TableMappings Base de datos DataSet

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 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 DataSet DataTable DataTable DataRow DataColumn 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 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 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 Upgrade Wizard Aspecto del formulario Controles ActiveX ADO (data binding) Código Cambios de sintaxis Librerías COM Archivos.RES 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 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.NET utilizando COM 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.NET COM COM.NET

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

61 COM Callable Wrapper Common Language Runtime Llamadas desde COM a.NET Objeto Referencias traceadas Referencias por contador Servidor COM IUnknown IDispatch IPropio IPropio 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 MiApp.exe Web Server InternetExplorer DownloadCache Aplicacióncliente.NETFramework ManagedExe? MiApp.dll HTTP HTTP

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? 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\Admminist rators) 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 Rodrigo Bruno Application Development Consultant Soporte Premier a Desarrolladores."

Presentaciones similares


Anuncios Google