Descargar la presentación
La descarga está en progreso. Por favor, espere
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 </>
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.