La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Desarrollo de componentes en Visual Basic.NET. Descripción Descripción de los componentes Creación de componentes con servicio Creación de clases de componentes.

Presentaciones similares


Presentación del tema: "Desarrollo de componentes en Visual Basic.NET. Descripción Descripción de los componentes Creación de componentes con servicio Creación de clases de componentes."— Transcripción de la presentación:

1 Desarrollo de componentes en Visual Basic.NET

2 Descripción Descripción de los componentes Creación de componentes con servicio Creación de clases de componentes Creación de controles de formularios Windows Forms Hilos de ejecución

3 Descripción de los componentes Tipos de componentes Uso de módulos como componentes Uso de clases como componentes Uso de componentes en aplicaciones cliente no gestionadas Descripción de.NET Remoting

4 Tipos de componentes Estructuras Módulos Clases Clases de componentes Componentes con servicio Controles de usuario Controles de usuario de formularios Windows Forms Controles de usuario de formularios Web Forms

5 Uso de módulos como componentes Declarar el módulo como público Referenciar e importar el ensamblado en código cliente Public Module MyMathFunctions Public Function Square(ByVal lng As Integer) As Long Return (lng * lng) End Function... End Module 'Client code Imports MyAssembly... Dim x As Long = Square(20) Public Module MyMathFunctions Public Function Square(ByVal lng As Integer) As Long Return (lng * lng) End Function... End Module 'Client code Imports MyAssembly... Dim x As Long = Square(20)

6 Uso de clases como componentes Declarar la clase como pública Referenciar e importar el ensamblado en código cliente Public Class Account Public Sub Debit(ByVal AccountId As Long, Amount As Double) 'Perform debit action End Sub Public Sub Credit(ByVal AccountId As Long, Amount As Double) 'Perform credit action End Sub End Class 'Client code Imports MyAssembly Dim x As New Account( ) x.Debit(1021, 1000) Public Class Account Public Sub Debit(ByVal AccountId As Long, Amount As Double) 'Perform debit action End Sub Public Sub Credit(ByVal AccountId As Long, Amount As Double) 'Perform credit action End Sub End Class 'Client code Imports MyAssembly Dim x As New Account( ) x.Debit(1021, 1000)

7 Uso de componentes en aplicaciones cliente no gestionadas Establecer las propiedades del ensamblado Generar un nombre seguro Seleccionar Registrar para COM Interop en las opciones de Generar Exponer miembros de claes a COM y a los servicios de componentes Definir e implementar interfaces Utilizar el atributo ClassInterface con valor AutoDual Utilizar el atributo COMClass

8 Descripción de.NET Remoting Marshal By Reference Código cliente Servidor Proxy Canal Formateador Límite de Remoting Servidor AppDomain Código cliente Marshal By Value Copia objeto servidor Cliente AppDomain Canal Formateador Objeto servidor Canal Formateador

9 Creación de componentes con servicio Hospedar componentes en los servicios de componentes Uso de transacciones Uso de la agrupación de objetos Uso de cadenas de constructor Uso de seguridad Uso de otros servicios de componentes Configurar ensamblados para usar los servicios de componentes

10 Hospedar componentes en los servicios de componentes Agregar una referencia a System.EnterpriseServices en el ensamblado El espacio de nombres System.EnterpriseServices proporciona: Clase ContextUtil Clase ServicedComponent Atributos de ensamblado, clase y método

11 Uso de transacciones El atributo Transaction especifica cómo participa una clase en las transacciones La clase ContextUtil proporciona votación en una transacción El atributo AutoComplete impide el uso de los métodos SetAbort, SetComplete y ContextUtil Public Class Account Inherits ServicedComponent Public Sub Debit(...) 'Perform debit action ContextUtil.SetComplete( ) End Sub Public Sub Credit(...) 'Perform credit action 'No SetComplete because AutoComplete is on End Sub End Class Public Class Account Inherits ServicedComponent Public Sub Debit(...) 'Perform debit action ContextUtil.SetComplete( ) End Sub Public Sub Credit(...) 'Perform credit action 'No SetComplete because AutoComplete is on End Sub End Class

12 Uso de la agrupación de objetos La agrupación de objetos permite crear objetos con antelación El atributo ObjectPooling especifica MinPoolSize y MaxPoolSize ServicedComponent proporciona el método CanBePooled _ Public Class Account Inherits ServicedComponent... Protected Overrides Function CanBePooled( ) As Boolean Return True End Function End Class _ Public Class Account Inherits ServicedComponent... Protected Overrides Function CanBePooled( ) As Boolean Return True End Function End Class

13 Uso de las cadenas de constructor Especifican el atributo ConstructionEnabled para indicar que se necesita una cadena de constructor Reemplazan el método Construct para recuperar información Public Class Account Inherits ServicedComponent Protected Overrides Sub Construct(ByVal s As String) ' Called after class constructor ' Use passed in string End Sub End Class Public Class Account Inherits ServicedComponent Protected Overrides Sub Construct(ByVal s As String) ' Called after class constructor ' Use passed in string End Sub End Class

14 Uso de seguridad Los atributos de la configuración de seguridad habilitan la configuración de la seguridad y su papel La clase SecurityCallContext proporciona comprobación de roles y ofrece información sobre el llamador _ Public Class Account Inherits ServicedComponent Public Function GetDetails( ) As String With seguridadCallContext.CurrentCall If.IsCallerInRole("Manager") Then Return.OriginalCaller.AccountName End If End With End Function End Class _ Public Class Account Inherits ServicedComponent Public Function GetDetails( ) As String With seguridadCallContext.CurrentCall If.IsCallerInRole("Manager") Then Return.OriginalCaller.AccountName End If End With End Function End Class

15 Uso de otros servicios de componentes Otros servicios de componentes incluyen: Activación Just-in-time Componentes encolados Propiedades compartidas Sincronización

16 Configurar ensamblados para usar los servicios de componentes Establecer atributos a nivel de ensamblado ApplicationName Description ApplicationActivation : biblitoteca o aplícación servidora AssemblyKeyFile Uso de Regsvcs para registrar y crear aplicaciones de servicios de componentes Regsvcs.exe myApplication.dll Uso de Lazy Registration Aplicación registrada la primera vez que se utilice por parte de un cliente

17 Demostración: Creación de un componente con servicio

18 Creación de clases de componentes Arquitectura de una clase de componentes Creación de una clase de componentes

19 Arquitectura de una clase de componentes System.ComponentModel.Component Clases predefinidas Clases personalizadas Interfaz IComponent Clase base Clases derivadas Clases de componentes

20 Creación de una clase de componentes 1.Heredar de System.ComponentModel.Component Realizar las inicializaciones por parte del constructor Sobrecargar el método Dispose 2.Agregar los componentes ubicados Utilizar elementos del Explorador de servidores o del cuadro de herramientas 3.Crear la funcionalidad requerida Propiedades, métodos y eventos 4.Generar el ensamblado

21 Demostración: Creación de un componente Stopwatch

22 Creación de controles de formularios Windows Forms Heredar de la clase UserControl Heredar de un control existente Windows Forms Proporcionar atributos a los controles

23 Heredar de la clase UserControl Heredar de System.Windows.Forms.UserControl Agregar los controles necesarios al diseñador Agregar propiedades y métodos que correspondan a los de los controles constitutivos Agregar propiedades y métodos adicionales No InitProperties, ReadProperties ni WriteProperties El almacenamiento de propiedades es automático

24 Heredar de un control existente Windows Forms Permite mejorar la versión de un determinado control Heredar de un control System.Windows.Forms Public Class MyTextBox Inherits System.Windows.Forms.TextBox Private strData As String Public Property HiddenData( ) As String Get Return strData End Get Set(ByVal Value As String) strData = Value End Set End Property... End Class Public Class MyTextBox Inherits System.Windows.Forms.TextBox Private strData As String Public Property HiddenData( ) As String Get Return strData End Get Set(ByVal Value As String) strData = Value End Set End Property... End Class

25 Proporcionar atributos a los controles System.ComponentModel proprociona atributos a los controles A nivel de clase: DefaultProperty, DefaultEvent, ToolboxBitmap A nivel de propiedad: Category, Description, DefaultValue Imports System.ComponentModel _ Public Class MyTextBox Inherits System.Windows.Forms.UserControl _ Public Property HiddenData( ) As String... End Property... End Class Imports System.ComponentModel _ Public Class MyTextBox Inherits System.Windows.Forms.UserControl _ Public Property HiddenData( ) As String... End Property... End Class

26 Demostración: Creación de una caja de texto mejorada

27 Manejo de hilos de ejecución ¿Qué es un hilo? Ventajas de múltiples hilos de ejecución Creación de hilos Uso de hilos Cuándo utilizar el manejo de hilos

28 ¿Qué es un hilo? La unidad de ejecución que procesa la CPU Todos los procesos de una aplicación contienen al menos un hilo Los hilos están planificados Parece que el equipo realiza varias tareas a la vez Cada hilo contiene su propia pila de llamadas y almacenamiento CPU Proceso 1 Proceso 2 Subproc.1 Subproc. 2 Subproc. 3 Subproc. 2 Programador de subprocesos Subproc. 1Subproc. 3Subproc. 1Subproc. 2Subproc. 3

29 Ventajas de múltiples hilos de ejecución Mejor respuesta de la interfaz de usuario Ejemplo: barra de estado Sin bloqueos Comunicación asíncrona Sin afinidad de hilos Los objetos no están vinculados a un hilo

30 Creación de hilos Uso de la clase System.Threading.Thread El constructor especifica el método delegado Los métodos proporcionan control del procesamiento de hilos Las propiedades proporcionan información de estado y prioridades Utilizar una clase si se requieren parámetros Permitir acceso público a variables clase Lanzar un evento cuando finalice

31 Sub Test( ) Dim calc As New Calculate( ) Dim th As New Threading.Thread(AddressOf calc.LongCalculation) calc.iValue = 10 AddHandler calc.Complete, AddressOf CalcResult th.Start( ) End Sub Sub CalcResult(ByVal Result As Integer)... End Sub Sub Test( ) Dim calc As New Calculate( ) Dim th As New Threading.Thread(AddressOf calc.LongCalculation) calc.iValue = 10 AddHandler calc.Complete, AddressOf CalcResult th.Start( ) End Sub Sub CalcResult(ByVal Result As Integer)... End Sub Uso de hilos Class Calculate Public iValue As Integer Public Event Complete(ByVal Result As Integer) Public Sub LongCalculation( ) 'Perform a long calculation based on iValue... RaiseEvent Complete(iResult)'Raise event to signal finish End Sub End Class Class Calculate Public iValue As Integer Public Event Complete(ByVal Result As Integer) Public Sub LongCalculation( ) 'Perform a long calculation based on iValue... RaiseEvent Complete(iResult)'Raise event to signal finish End Sub End Class

32 Cuándo utilizar el manejo de hilos Utilizar los hilos con precaución El uso de más hilos requiere más recursos del sistema Sincronizar el acceso a recursos compartidos Evitar que dos hilos accedan simultáneamente a datos compartidos Utilizar la instrucción SyncLock para bloquear secciones de código Sub Worker( ) SyncLock(theData)'Lock this object variable theData.id = iValue 'Perform some lengthy action iValue = theData.id End SyncLock'Unlock the object variable End Sub Sub Worker( ) SyncLock(theData)'Lock this object variable theData.id = iValue 'Perform some lengthy action iValue = theData.id End SyncLock'Unlock the object variable End Sub

33 Demostración: Uso de la instrucción SyncLock


Descargar ppt "Desarrollo de componentes en Visual Basic.NET. Descripción Descripción de los componentes Creación de componentes con servicio Creación de clases de componentes."

Presentaciones similares


Anuncios Google