Desarrollo de componentes en Visual Basic NET Descripcin
Desarrollo de componentes en Visual Basic. NET
Descripción n Descripción de los componentes n Creación de componentes con servicio n Creación de clases de componentes n Creación de controles de formularios Windows. Forms n Hilos de ejecución
u Descripción de los componentes n Tipos de componentes n Uso de módulos como componentes n Uso de clases como componentes n Uso de componentes en aplicaciones cliente no gestionadas n Descripción de. NET Remoting
Tipos de componentes n Estructuras n Módulos n Clases de componentes n Componentes con servicio n Controles de usuario l Controles de usuario de formularios Windows Forms l Controles de usuario de formularios Web Forms
Uso de módulos como componentes n Declarar el módulo como público n Referenciar e importar el ensamblado en código cliente Public Module My. Math. Functions Public Function Square(By. Val lng As Integer) As Long Return (lng * lng) End Function. . . End Module 'Client code Imports My. Assembly. . . Dim x As Long = Square(20)
Uso de clases como componentes n Declarar la clase como pública n Referenciar e importar el ensamblado en código cliente Public Class Account Public Sub Debit(By. Val Account. Id As Long, Amount As Double) 'Perform debit action End Sub Public Sub Credit(By. Val Account. Id As Long, Amount As Double) 'Perform credit action End Sub End Class 'Client code Imports My. Assembly Dim x As New Account( ) x. Debit(1021, 1000)
Uso de componentes en aplicaciones cliente no gestionadas n n Establecer las propiedades del ensamblado l Generar un nombre seguro l Seleccionar Registrar para COM Interop en las opciones de Generar Exponer miembros declaes a COM y a los servicios de componentes l Definir e implementar interfaces l Utilizar el atributo Class. Interface con valor Auto. Dual l Utilizar el atributo COMClass
Descripción de. NET Remoting Cliente App. Domain Servidor App. Domain Marshal By Reference Código cliente Formateador Servidor Proxy Formateador Canal Objeto servidor Marshal By Value Código cliente Copia objeto servidor Formateador Canal Límite de Remoting
u Creación de componentes con servicio n Hospedar componentes en los servicios de componentes n Uso de transacciones n Uso de la agrupación de objetos n Uso de cadenas de constructor n Uso de seguridad n Uso de otros servicios de componentes n Configurar ensamblados para usar los servicios de componentes
Hospedar componentes en los servicios de componentes n Agregar una referencia a System. Enterprise. Servicesen el ensamblado n El espacio de nombres. System. Enterprise. Services proporciona: l Clase Context. Util l Clase Serviced. Component l Atributos de ensamblado, clase y método
Uso de transacciones n El atributo Transaction especifica cómo participa una clase en las transacciones n La clase Context. Util proporciona votación en una transacción n El atributo Auto. Complete impide el uso de los métodos Set. Abort, Set. Complete y Context. Util <Transaction(Transaction. Option. Required)> Public Class Account Inherits Serviced. Component Public Sub Debit(. . . ) 'Perform debit action Context. Util. Set. Complete( ) End Sub <Auto. Complete( )> Public Sub Credit(. . . ) 'Perform credit action 'No Set. Complete because Auto. Complete is on End Sub End Class
Uso de la agrupación de objetos n La agrupación de objetos permite crear objetos con antelación n El atributo Object. Pooling especifica Min. Pool. Size y Max. Pool. Size n Serviced. Component proporciona el método. Can. Be. Pooled <Object. Pooling(Enabled: =True, Min. Pool. Size: =5, _ Max. Pool. Size: =50)> _ Public Class Account Inherits Serviced. Component. . . Protected Overrides Function Can. Be. Pooled( ) As Boolean Return True End Function End Class
Uso de las cadenas de constructor n Especifican el atributo. Construction. Enabledpara indicar que se necesita una cadena de constructor n Reemplazan el método Construct para recuperar información <Construction. Enabled(True)>Public Class Account Inherits Serviced. Component Protected Overrides Sub Construct(By. Val s As String) 'Called after class constructor 'Use passed in string End Sub End Class
Uso de seguridad n Los atributos de la configuración de seguridad habilitan la configuración de la seguridad y su papel n La clase Security. Call. Contextproporciona comprobación de roles y ofrece información sobre el llamador <Component. Access. Control(True), seguridad. Role("Manager")> _ Public Class Account Inherits Serviced. Component Public Function Get. Details( ) As String With seguridad. Call. Context. Current. Call If. Is. Caller. In. Role("Manager") Then Return. Original. Caller. Account. Name End If End With End Function End Class
Uso de otros servicios de componentes n Otros servicios de componentes incluyen: l Activación Just-in-time l Componentes encolados l Propiedades compartidas l Sincronización
Configurar ensamblados para usar los servicios de componentes n n Establecer atributos a nivel de ensamblado l Application. Name l Description l Application. Activation: biblitoteca o aplícación servidora l Assembly. Key. File Uso de Regsvcs para registrar y crearaplicaciones de servicios de componentes l n Regsvcs. exe my. Application. dll Uso de Lazy Registration l Aplicación registrada la primera vez que se utilice por parte de un cliente
Demostración: Creación de un componente con servicio
u Creación de clases de componentes n Arquitectura de una clase de componentes n Creación de una clase de componentes
Arquitectura de una clase de componentes e s a b e s a System. Component. Model. Component l C Interfaz IComponent Clases de componentes s s e da s Clases predefinidas a va l C ri Clases personalizadas de
Creación de una clase de componentes 1. Heredar de System. Component. Model. Component l Realizar las inicializaciones por parte del constructor l Sobrecargar el método Dispose 2. Agregar los componentes ubicados l Utilizar elementos del Explorador de servidores o del cuadro de herramientas 3. Crear la funcionalidad requerida l Propiedades, métodos y eventos 4. Generar el ensamblado
Demostración: Creación de un componente. Stopwatch
Creación de controles de formularios Windows. Forms n Heredar de la clase User. Control n Heredar de un control existente Windows. Forms n Proporcionar atributos a los controles
Heredar de la clase User. Control n Heredar de System. Windows. Forms. User. Control n Agregar los controles necesarios al diseñador n Agregar propiedades y métodos que correspondan a los de los controles constitutivos n Agregar propiedades y métodos adicionales n No Init. Properties, Read. Properties ni Write. Properties l El almacenamiento de propiedades es automático
Heredar de un control existente Windows. Forms n Permite mejorar la versión de un determinado control n Heredar de un control. System. Windows. Forms Public Class My. Text. Box Inherits System. Windows. Forms. Text. Box Private str. Data As String Public Property Hidden. Data( ) As String Get Return str. Data End Get Set(By. Value As String) str. Data = Value End Set End Property. . . End Class
Proporcionar atributos a los controles n System. Component. Modelproprocionaatributos a los controles n A nivel de clase: Default. Property, Default. Event, Toolbox. Bitmap n A nivel de propiedad: Category, Description, Default. Value Imports System. Component. Model <Toolbox. Bitmap("C: txticon. ico"), Default. Event("Click")> _ Public Class My. Text. Box Inherits System. Windows. Forms. User. Control <Category("Appearance"), _ Description("Stores extra data"), _ Default. Value("Empty")> _ Public Property Hidden. Data( ) As String. . . End Property. . . End Class
Demostración: Creación de una caja de texto mejorada
Manejo de hilos de ejecución n ¿Qué es un hilo? n Ventajas de múltiples hilos de ejecución n Creación de hilos n Uso de hilos n Cuándo utilizar el manejo de hilos
¿Qué es un hilo? n La unidad de ejecución que procesa la CPU l n Todos los procesos de una aplicación contienen al menos un hilo Los hilos están planificados l Parece que el equipo realiza varias tareas a la vez l Cada hilo contiene su propia pila de llamadas y almacenamiento Proceso 1 Proceso 2 Programador de subprocesos Subproc. 1 Subproc. 321 CPU Subproc. 2 Subproc. 3
Ventajas de múltiples hilos de ejecución n Mejor respuesta de la interfaz de usuario l Ejemplo: barra de estado n Sin bloqueos n Comunicación asíncrona n Sin afinidad de hilos l Los objetos no están vinculados a un hilo
Creación de hilos n n Uso de la clase System. Threading. Thread l El constructor especifica el método delegado l Los métodos proporcionan control del procesamiento de hilos l Las propiedades proporcionan información de estado y prioridades Utilizar una clase si se requieren parámetros l Permitir acceso público a variables clase l Lanzar un evento cuando finalice
Uso de hilos Class Calculate Public i. Value As Integer Public Event Complete(By. Val Result As Integer) Public Sub Long. Calculation( ) 'Perform a long calculation based on i. Value. . . Raise. Event Complete(i. Result) 'Raise event to signal finish End Sub End Class Sub Test( ) Dim calc As New Calculate( ) Dim th As New Threading. Thread(Address. Of calc. Long. Calculation) calc. i. Value = 10 Add. Handler calc. Complete, Address. Of Calc. Result th. Start( ) End Sub Calc. Result(By. Val Result As Integer). . . End Sub
Cuándo utilizar el manejo de hilos n Utilizar los hilos con precaución l n El uso de más hilos requiere más recursos del sistema Sincronizar el acceso a recursos compartidos l Evitar que dos hilos accedan simultáneamente a datos compartidos l Utilizar la instrucción Sync. Lock para bloquear secciones de código Sub Worker( ) Sync. Lock(the. Data) 'Lock this object variable the. Data. id = i. Value 'Perform some lengthy action i. Value = the. Data. id End Sync. Lock 'Unlock the object variable End Sub
Demostración: Uso de la instrucción. Sync. Lock
- Slides: 33