Title: De DNA a 'NET Interoperabilidad y Migracin
1De DNA a .NETInteroperabilidad y Migración
2Agenda
- Modelo de componentes .NET
- Interoperabilidad entre COM y .NET
- .NET utilizando componentes COM
- COM utilizando componentes .NET
- Plataform Invoke (P/Invoke)
- Servicios COM y Enterprise Services
- Migración de aplicaciones a .NET
- Migración de VB 6 a VB.NET
- Migración de ASP a ASP.NET
3Modelo de Componentes .NET
4.NET Framework Objetivos
- Simplificar el desarrollo y el despliegue de
aplicaciones. - Modelo unificado de programación.
- Proporcionar un entorno de ejecución robusto y
seguro. - Soportar múltiples lenguajes de programación.
5Framework, Lenguajes, y Herramientas
6Framework, Lenguajes, y Herramientas
Visual Studio.NET
Common Language Specification
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
7La evolución .NET
Aplicación
Código y estructura de datos
Anteriormente en COM, las aplicaciones eran
entidades completamente separadas con poca o
ninguna integración.
8La evolución .NET
COM proporciona mecanismos para que los
componentes se integren. Pero cada componente
debe proporcionar la infraetructura de conexión
y los objetos no pueden interactuar directamente.
9La evolución .NET
Con el CLR (common language runtime) del
Framework de .NET los componentes son construidos
sobre un substrato común. Los objetos pueden
interactuar directamente, sin necesidad de
ninguna infraestructura adicional.
10Compilación y Ejecución
Compilación
Código (IL)
Código Fuente
Metadatos
Al instalar o la primera vez que un método es
llamado
11Desarrollo Simplificado
- Eliminado completamente la infraestructura COM
- Ya no
- Registration
- GUIDs
- .IDL files
- HRESULTs
- IUnknown
- AddRef/Release
- CoCreateInstance
gtaplicación autodescrita.
gtjerarquía de namespaces
gtmodelo objectos unificado
gtexcepciones estructuradas
gtobjeto raíz común
gtrecolector automático
gtoperador new
12Desarrollo Simplificado
- Sistema común de tipos
- Definición común de instancias y tipos.
- Programación OO
- Clases e interfaces
- Constructores, propiedades, métodos, eventos
- Herencia entre lenguajes
- Interoperatividad incorporada
- Con COM
- Con DLL nativas (estilo Win32)
13Todo es un objeto
- Perspectiva tradicional sobre tipos primitivos
- C, Java Son mágicos
- Smalltalk, Lisp Son objetos completos
- .NET Framework Value types
- Unificados sin perdida de rendimiento
- Gran simplicidad por todo el sistema
- Mejor extensibilidad y reusabilidad
- Nuevos tipos primitivos Decimal, SQL
- Colecciones, etc., funcionan con todos los tipos
14Todo es un objeto
- Boxing
- Reserva caja, copia el valor en ella.
- Unboxing
- Comprobar el tipo de la caja, saca el valor
int i 123 object o i int j (int)o
Dim i As Integer 123 Dim o As Object i Dim j
As Integer CInt(o)
15Entorno Robusto
- Gestión automática de la vida de los objetos
- Todos los objetos son gestionados por el
recolector de basura. - Manejadores de Excepciones
- Gestión de errores de gran calidad
- Tipos seguros
- Sin desbordamiento de buffer, sin conversiones de
datos no seguras, sin variables no inicializadas
16Entorno Seguro
- Seguridad por diseño
- Seguridad reforzada para acceder al código
- Seguridad basada en la identidad del código
- Configurable mediante políticas
- Autenticación integrada en ASP.NET
- Windows identity, Passport, forms-based,
- Librería criptográfíca con soporte de XML DSIG
- Firma digital para XML (www.w3.org/signature)
17Instalación y Administración Simplificada
- Instalación impacto cero
- Aplicaciones y componentes pueden ser compartidas
o privadas - Ejecución múltiples versiones
- Múltiples versiones de un mismo componente pueden
coexistir en un mismo sistema - Assemblies
- Contienen la información de dependencias
18Framework, Lenguajes, y Herramientas
Visual Studio.NET
Common Language Specification
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
19Modelo programación unificada
20Cuánto más simple?
Windows API
HWND hwndMain CreateWindowEx( 0,
"MainWClass", "Main Window",
WS_OVERLAPPEDWINDOW WS_HSCROLL WS_VSCROLL,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL,
hInstance, NULL) ShowWindow(hwndMain,
SW_SHOWDEFAULT) UpdateWindow(hwndMain)
21Factorizado y Extensible
- El Framework no es una caja negra
- Cualquier clase en .NET puede ser extendida
mediante herencia - Proporciona a los desarrolladores mucha más
flexibilidad - Componentes y subsistemas Plug and Play
22Librería del .NET Framework
ADO.NET and XML
Base Class Library
23Librería del .NET Framework
24Base Framework
System
Security
Collections
ServiceProcess
Configuration
Text
Diagnostics
Threading
Globalization
IO
Runtime
InteropServices
Net
Remoting
Reflection
Serialization
Resources
25Datos y XML
System.Data
SQLClient
OleDb
SQLTypes
Common
System.Xml
Serialization
XSLT
XPath
26ASP.NET
System.Web
Services
UI
HtmlControls
Description
WebControls
Discovery
Protocols
Caching
Security
Configuration
SessionState
27Windows Forms
System.Windows.Forms
Design
ComponentModel
System.Drawing
Drawing2D
Printing
Imaging
Text
28Framework, Lenguajes, y Herramientas
Visual Studio.NET
Common Language Specification
ADO.NET and XML
Base Class Library
Common Language Runtime
Operating System
29Lenguajes
- La plataforma .NET es lenguaje neutral
- Todos los lenguajes de .NET son igual de
importantes - Permite reaprovechar la experiencia de cada
programador. - Especificaciones de lenguaje comunes
- Conjunto de características garantizadas en todos
los lenguajes - MS proporciona
- Visual Basic, C, C, J, JScript
- Proporcionados por terceros
- APL, COBOL, Delphi, Pascal, Eiffel, Haskell, ML,
Oberon, Perl, Python, Scheme, Smalltalk
30Estandarización
- Un subconjunto del .NET Framework y C enviados a
ECMA - Adoptado como estándar internacional en Dic.
2001 - En la ISO actualmente en proceso.
- Co-patrocinado por Intel, Hewlett-Packard
- Infraestructura común de lenguajes
- Basado en common language runtime y base
framework - Organizado en crecientes niveles de funcionalidad
31Sumario
- El .NET Framework
- Simplifica el desarrollo y el despliegue de
aplicaciones - Modelo unificado de programación
- Proporciona un entorno de ejecución robusto y
seguro - Soporta múltiples lenguajes de programación
32Interoperabilidad entre COM y .NET
33Migración o Interoperar
- Migración
- Todo el código en una plataforma unificada
- Migrar para aprovechar las ventajas de .NET
- Interoperar
- Reusar código existente
- Rentabilizar inversiones ya realizadas
- Acceso a funcionalidades no portables.
34COM y .NET
- COM Interop
- Comunicación bidireccional entre COM y .NET
- Preservar/Utilizar las inversiones ya realizadas
- Facilita la migración incremental
- Realidad hay cosas que nunca cambian
- Es necesario interoperar porque hay código que no
puede migrarse
35COM and .NET
- Componentes
- DCOM
- COM
- Recordset
- ltno equivalentegt
- IUnknown/IDispatch
- GUID/CLSID/etc
- Assemblies
- Remoting
- EnterpriseServices
- DataSet
- Serialización
- ltno equivalentgt
- ltno equivalentgt
36IntroducciónBidireccional COM Interop
- .NET usando COM
- Clases .NET acceden a componentes COM
- COM usando .NET
- Componentes COM acceden a clases .NET
.NET
COM
COM
.NET
37.NET Llamando a COM
Common Language Runtime
38.NET Llamando a COM
- Runtime Callable Wrapper
- Creado mediante Visual Studio .NET
- Creado mediante tlbimp.exe
- Primary Interop Assembly
- Marshal.ReleaseComObject()
39COM, .NET y el despliegue
- Volvemos al mundo de COM
- GUID, CLSID, etc.
- Windows Registry
- System-level namespace
- Las cuestiones de despliegue persisten cuando se
usa COM desde .NET
40COM Wrappers
Common Language Runtime
41COM Llamando a .NET
- El componente de .NET llamado desde COM debe
estar registrado - COM Callable Wrapper (CCW)
- Contador de referencias como un objeto COM
- Hace aparecer una clase .NET como un objeto COM
de forma transparente. - Realiza el marshalling de datos
42Usando controles ActiveX
- Similar a utilizar cualquier otro componente COM
- .NET wrapper delegates to ActiveX
- Aparece como un control .NET para .NET
- Actúa como un contenedor de controles ActiveX
para el control ActiveX
43COM Llamando a .NET
Common Language Runtime
IFoo
44COM invocando a .NET
- COM Callable Wrapper
- Creado mediante Visual Studio .NET
- Creado mediante tlbexp.exe
- Haciendo un assembly disponible en COM
- Global Assembly Cache (GAC)
- /codebase switch
45Plataform Invoke (P/Invoke)
- Facilita el acceso a DLLs nativas (Win32)
- Es similar a
- Sentencia Declare en Visual Basic
- LoadLibrary/GetProcAddress
- En C se define el acceso mediante atributos y en
Visual Basic mediante sentencia Declare - Usa el mismo mecanismo de marshalling que COM
Interop
46Rendimiento
- La transición entre código manejado y nativo
tiene un coste - Entre 20-30 instrucciones por llamada
- La transformación de datos tiene un coste
- Depende del tipo y tamaño de los datos
- Tipos básicos no tienen coste
47Sumario
- Los componentes COM existentes pueden ser
reutilizado en .NET - Las aplicaciones pueden mezclar .NET con
componentes preexistentes - Win32 y otros APIs pueden ser usados en .NET
48Usando Servicios COM en .NET Framework
49Los Servicios de COM son
- Servicios MTS
- Transacción
- Seguridad
- Administración
- Además, Nuevos servicios
- Object Pooling
- Queued Components
- Events
- Others
- Auto Completion, Compensating Resource Managers
50Servicios de COMTransacciones
- MTS Soportaba
- Atributos transaccionales
- Required, Requires New, Supports, Does not
support - Gestor de recursos conforme a la especificación
XA - COMTI - COM Transaction Integrator
- COM Añade
- AutoComplete, AutoAbort
- Gestor de Recursos por compensación
- TIP - Transaction Internet Protocol
- BYOT - Bring Your Own Transactions
51Usando Servicios de COM En componentes .NET
- Componentes .NET pueden ser alojados en
Aplicaciones de Servicios COM - Pueden usar todos los servicios COM
- Transacciones
- Activación Just in Time
- Activity Synchronization
- Object Pooling
- Queued Components
- Events
- Etc.
52Usando Servicios de COM En componentes .NET
(cont.)
- Componentes .NET
- Activados en un ObjectContext de COM
- ObjectContext proporciona Servicios
- Integración con aplicaciones ya existentes de
COM - El Contexto fluye entre componentes COM y
componentes .NET - Independiente del lenguaje de implementación
53Modelo de programación
- Atributos para servicios
- E.g., TransactionAttribute
- Especificados al desarrollar la clase
- Compilados en el Metadata
- Usados para configurar el catálogo de COM
- Los atributos habilitan COM Services
- Los componentes son automáticamente creados en un
ObjectContext de COM
54Account - Atributos
- using System
- namespace CSharpBank
-
-
- public class Account
-
- public void Post(int accountNo, int amount)
-
- try
-
-
-
- catch()
-
-
-
using System.EnterpriseServices
TransactionAttribute(TransactionOption.Requir
ed)
ServicedComponent
55Gestor de Recursos
- Puedo usar las APIs normales de gestión de
recursos - MSMQ mediante COM Interop
- Gestores de recursos de 3 Partes
- Puedo usar nuevas APIs
- ADO.NET - System.Data.
- MSMQ Messaging System.Messaging.
- Enganche Automático con Transacciones COM
56Account - Recurso
- using System
- namespace CSharpBank
-
-
- public class Account
-
- public void Post(int accountNo, int amount)
-
- try
-
-
-
- catch()
-
-
-
using System.EnterpriseServices
TransactionAttribute(TransactionOption.Requir
ed)
ServicedComponent
//. . . Do some resource operations
57Modelo de programación
- Para construir servicios COM utilizar las APIs
de System.EnterpriseServices - Confirmar transacción
- ContextUtil.SetComplete
- Abortar transacción
- ContextUtil.SetAbort
58Account Modelo programación
- using System
- namespace CSharpBank
-
-
- public class Account
-
- public void Post(int accountNo, int amount)
-
- try
-
-
-
- catch()
-
-
-
using System.EnterpriseServices
TransactionAttribute(TransactionOption.Requir
ed)
ServicedComponent
//. . . Do some resource operations
ContextUtil.SetComplete()
ContextUtil.SetAbort()
59Construir
- Un Assembly es la unidad de despliegue de código
manejado - Proporcionar un nombre compartido a el Assembly
- sn -k CSharpBank.snk
- Compilar el código para crear el Assembly
- Suministrar el nombre compartido CSharpBank.snk
en las opciones de línea de comando.
60Despliegue
- Crear aplicación COM
- Usar la herramienta de administración COM
Component Services o un script de administración - Añadir los Assembly al Global Assembly Store
- al /iCSharpBank.dll
- Añadir Assembly a una aplicación COM
- RegSvcs CSharpBank.dll BankApp
61Atributos de ServiciosSystem.EnterpriseServices
- Transactions
- Activación Just in Time
- Synchronization
- Más en el futuro
62ContextUtil ClassSystem.EnterpriseServices
- Conjunto de operaciones comunes para interactuar
con COM - SetComplete, SetAbort
- IsCallerInRole
- IsInTransaction, TransactionId
- ObjectContext
- Etc.
63Registro en COMSystem.EnterpriseServices
- RegistrationHelper
- Añade componentes .NET en una Aplicación COM
- Configura el Catálogo de COM basándose en los
Atributos de Servicio contenidos en el componente
.NET
64SecuritySystem.EnterpriseServices
- Componentes .NET alojados en COM pueden usar la
seguridad basada en roles de COM - SecurityCallContext
- SecurityIdentity
- SecurityCallers
- Etc.
65Account ComEmulate
- using System
- namespace CSharpBank
-
-
-
- public class Account
-
-
-
-
-
-
- public void Post(int accountNo, int amount)
-
- //. . .
using System.EnterpriseServices
ComEmulateAttribute(CSharpBank.AccountIntern
al)
GuidAttribute("B9E8F6DE-94EE-4aa9-B2E4-3B0B08
585500")
TransactionAttribute(TransactionOption.Requir
ed)
internal class AccountInternal
66ADO.NETUsing COM Services
- SQL Server Provider
- System.Data.SQL.
- Todo en código manejado
- Usa el protocolo nativo TDS de SQL Server
- Usa el Pool de Objetos de los Servicios COM
- Enganche a transacciones automáticas
67Migración de aplicaciones VB 6 a VB.NET
68VB.NET es más que VB61
- Construido sobre una nueva plataforma .NET
- Mejores aplicaciones Windows y COM
- Lenguaje básico de .NET
- No es 100 compatible con VB6
- El Upgrade Wizard convierte el 95
- Modificaciones manuales un 5
- Da paso a un nuevo mundo
6910 Razones Principales para Migrar
- Código Más Robusto
- Potentes Aplicaciones Windows
- Potente y Flexible Acceso a Datos
- Despliegue Simplificado
- Creación Componentes Simplificado
- Creación de Control Mejorada
- Acceso Directo a la Platforma
- Reporting Integrado
- Desarrollo fácil de aplicaciones Web
- Llevar las inversiones realizadas un paso hacia
delante
70Upgrade Wizard
Form Layout
ActiveX Controls
ADO Data Binding
RES files
Code
Syntax Changes
COM Libraries
Behavior warnings
71Upgrade WizardForm Upgrade
ActiveX controls
User controls
Intrinsic controls
Compatibility class
72Upgrade WizardLanguage Upgrade
Most code is same
Syntax changes
Compatibility class
Behavior Warning
http//msdn.microsoft.com/vbasic/technical/upgrade
73Comentarios Upgrade Wizard
- UPGRADE_ISSUE
- Errores de compilación
(debe ser corregido para compilar) - UPGRADE_WARNING
- Diferencias en comportamiento
(debe ser examinado antes de ejecutar) - UPGRADE_TODO
- Código parcialmente migrado
(requiere migración manual adicional) - UPGRADE_NOTE
- Código modificado de forma significativa
(no son necesarios cambios manuales)
74Cuestiones de detalle
75No migra automáticamente
- Documentos ActiveX
- Páginas ActiveX DHTML
- Vinculaciones en DAO y RDO
- Controles OLE de formas
- Páginas de propiedades a medida
- Extensiones Add-in
- Características del lenguaje
- LSet, ObjPtr, VarPtr, StrPtr,
- GoSub and Return, Computed Goto
76Variables Fuertemente Tipadas
- Código Visual Basic 6.0
- Después de migrar
- Resultado funciona perfectamente
Dim myTextBox As TextBox myTextBox "Hey There"
Dim myTextBox As System.Windows.Forms.TextBox myTe
xtBox.Text "Hey There"
77Variables Fuertemente Tipadas
- Código Visual Basic 6.0
- Después de migrar
- Resultado Error de ejecución
Dim myTextBox myTextBox "Hey There"
Dim myTextBox As Object 'UPGRADE_WARNING
Couldn't resolve default property of object
myTextBox. myTextBox "Hey There"
78Opciones para solucionarlo
- Solución 1 Preparar en Visual Basic 6.0
- Solución 2 Corregir después de migrar
As TextBox
Dim myTextBox myTextBox "Hey There"
Dim myTextBox As Object 'UPGRADE_WARNING
Couldn't resolve default property of object
myTextBox. myTextBox.Text "Hey There"
.Text
79Propiedades ByRef
- Get CustId recibe param ByRef
- Demo Si se pasa Text1.Text
- Resultado
- En VB6, Text1.Text Ari
- En VB.NET, Text1.Text Ari.NET
Private Property Get CustId(CustName As String)
As String CustName CustName .NET
CustId CustName End Property
Text1.Text Ari strCustId CustId(Text1.Text)
Ari.NET
80Soluciones ByRef
- Solución 1 Usar ByVal
- Solución 2 Añadir paréntesis
Private Property Get CustId(ByVal CustName As
String) As String CustName CustName
.NET CustId CustName End Property
ByVal
strCustId CustId((Text1.Text) )
(Text1.Text)
81Recomendaciones programación
- Usar el tipo Date para almacenar fechas
Dim dbl As Double Dim dat As Date dat Now
' GOOD dbl dat ' ? dbl DateAdd(d,
1, dbl) ' ?
- Usar vectores zero-based
- Vectores Non-zero-based arrays migrados a una
clase de compatibilidad - No usar Option Base 1
Dim a(10) As Integer ' GOOD Dim a(1 to 10) As
Integer ' ?
82Recomendación Programación
- Evitar propagación de Null
- En Visual Basic.NET, funciones y operadores no
acepta o retorna Null - Usar IsNull() para comprobar Null
If IsNull( rs!Field1 ) Then 'GOOD ... End If
- Usar ADO
- Viculación de datos
- Data control
- Data environment
83Recomendación Programación
Timer1.Enabled False 'Good Timer1.Interval
0 ' ?
Usar constantes en lugar de valores directos
Form1.BorderStyle vbSizable 'Good Form1.BorderSt
yle 2 ' ? Form1.BorderStyle x
' ?
84Opciones sobre código VB 6
- Migración no es un requisito
- Interoperar con código existente VB 6.0
- Consideraciones
- Arquitectura de aplicaciones y de tecnología
- Mantenimiento y nuevos desarrollos
85Añadir valor a la migración
- Ahora disponible para el WEB
- Remplazar controles ActiveX con controles Windows
Forms - Remplazar ADO con ADO.NET
- Multitarea
- Características gráficas
86Sumario
- Existen opciones para realizar la migración de
código VB 6 - Etapas de la migración
- Preparar código existente
- Aprender VB .NET
- Migrar
- Añadir valor a la migración
87Migración ASP a ASP.NET
88Active Server Pages
- Plataforma de desarrollo web lider
- Cerca de 1 millón de desarrolladores usan ASP hoy
- Múltiples web y aplicaciones bien conocidas
- Simple y abordable
- No requiere compiladores
- Lenguajes y modelo de objeto sencillo de usar
- Soporte amplio
- Comunidades Online
- Soporte mediante Libros/Consultoría/conferencias
89Por qué migrar a ASP.NET?
90Cuestiones con ASP clásico
- Requiere realizar mucha codificación
- Tareas simples a menudo no son fáciles
- Aplicaciones contienen código spaghetti
- Pobre reutilización/encapsulado
- Lenguaje limitado
- Late-bound scripting, débilmente tipado
- Problemas del desarrollo
- COM y metabase
9110 Razones para migrar a ASP.NET
- Es verdaderamente rápido!
- Despliegue y actualización de aplicaciones con
XCOPY - Apoyado en magníficas herramientas
- Detección y recuperación automática de errores
- Estado de la sesión escalable en granjas Web
- Cache incorporada para fácilmente incrementar el
rendimiento - Soporta un amplio rango de dispositivos móviles
- Se puede usar un amplio rango de lenguajes
compilados - Construir o usar servicios web es muy fácil
- Modelo Simple de desarrollo de páginas
92Ideas generales
- ASP.NET no es ASP
- No se puede reutilizar código reescribir
completamente - Fácilmente multiplica por x10 la funcionalidad
disponible en ASP - Compatibilidad con ASP
- Intenta ser 100 compatible
- En la realidad esto no es posible
93Las malas noticias
- La migración siempre requerirá trabajo
- No hay herramientas de migración
- Páginas triviales puede ser sencillo
- Aplicaciones será mucho más difícil
- La realidad es
- No se puede simplemente cambiar la extensión de
las páginas - Múltiples incompatibilidades
- Existencia de servidores COM
94Las buenas noticias
- Elemento que permanecen
- Objetos básicos de ASP permanecen
- Codificación con VB
- Codificación en línea, intercalada con HTML
- Los beneficios de migrar
- 2-3 veces mejor rendimiento
- Soporta Web Farm y despliegue con XCopy
- Output Caching y Seguridad a medida
- Controles de Página
- Infraestructura para Servicios Web
95Las buenas noticias
- ASP.NET se puede ejecutar simultáneamente con ASP
- Extensiones fichero distintas (.aspx vs .asp)
- Configuración separada
- No hay modificaciones del ASP.DLL ISAPI
- Cuestiones de la Integración
- En el mismo directorio, pero
- Aplicaciones completamente separadas
- No hay compartición de sesión
96Las buenas noticias
- Magnífica mejora de rendimiento
- No es un lenguaje interpretado
- ASP.NET es compilado
- Fuertemente tipado
- Impresionante mejoras de productividad
- Controles de Servidor
- Cache de salida de la página o parte de la
página - Servicios Web
97Opciones de la Migración
- Codo-con-Codo
- Usar ambos ASP y ASP.NET
- Aplicaciones separadas
- Integración
- Usar ambos ASP y ASP.NET
- Integración mediante componentes comunes
- Re-escribir
- Migrar completamente a ASP.NET
- Aprovechar las ventajas de ASP.NET
98Cambios Semánticos
- Un sólo lenguaje
- No se pueden mezclar lenguajes
- Múltiples lenguajes para elegir
- Funciones en Página
- Contenidas en bloques ltscript runatservergt
- Las funciones no pueden usar el estilo en línea
de ASP lt gt - Page Render functions
- No suportadas, usar Response.Write()
99Cambios al lenguaje VB
- Probablemente el mayor problema de la migración
- No más Set y Let
- No más propiedad por defecto (aspecto importante)
- Los paréntesis son necesarios para llamar a
subrutinas - Argumentos a funciones ahora ByVal por defecto
- Todos los tipos .NET son del tipo Object
100Gestión de estado
- Estado a nivel de aplicación
- ASP y ASP.NET no comparten datos
- ASP Usar objeto aplicación construido a medida.
- Sólo usar objeto aplicación para datos de sólo
lectura - Estado a nivel de sesión
- ASP and ASP.NET no comparten la sesión
- ASP.NET evento Application_AcquireState
- Usar objeto sesión construido a medida en ASP
101Cambios de Configuración
- ASP Configuración
- Almacén de Datos Binarios del IIS (metabase)
- Cambios requieren acceso local al servidor
- ASP.NET Configuración XML
- Ficheros Machine.config, web.config
- Parámetros del IIS no afectan a ASP.NET
- Cambios no requieren acceso local al servidor
102Integración con COM
- Componentes COM
- Llamar Server.CreateObject(progid) y acceder
mediante late-bound - Crear clases wrapper en .NET
- Permite early binding
- Mejor rendimiento
- Utilidad TLBIMP.exe o Visual Studio
103Componentes en ASP Clásico
- Soporte para ASP instrinsics
- ObjectContext intrinsic Flow
- Aplicaciones OnStartPage y OnEndPage
- Modo ASPCompat
- lt_at_ page aspcompattrue gt
- ASP.NET ejecuta en STA
104Consideraciones de rendimiento
- Coste del Marshalling
- Llamadas entre ASP.NET and COM
- Mejor rendimiento si reescribimos COM con .NET
- ASP.NET Thread Pool ahora MTA -- not STA
- Perdida de rendimiento con componentes
apartment - VB5 y VB6 Componentes Apartment Model
- Se puede habilitar STA Thread Pool por página
para mejorar rendimiento con componentes VB 6
existentes - lt_at_ Page ASPCompattrue gt
- No necesario en componentes C MTA
105Sumario
- Migración no sencilla
- Requiere cierto trabajo
- Pero pueden convivir codo-con-codo.
- Beneficios del esfuerzo
- Mejor rendimiento
- Desarrollo mucho más fácil y productivo
- Código más limpio
- Aplicaciones preparadas para el futuro
106(No Transcript)