Desarrollo de componentes en Visual Basic .NET - PowerPoint PPT Presentation

1 / 33
About This Presentation
Title:

Desarrollo de componentes en Visual Basic .NET

Description:

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 ... – PowerPoint PPT presentation

Number of Views:177
Avg rating:3.0/5.0
Slides: 34
Provided by: willydevN
Category:

less

Transcript and Presenter's Notes

Title: Desarrollo de componentes en Visual Basic .NET


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)
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)
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
Servidor AppDomain
Cliente AppDomain
Marshal By Reference
Código cliente
Formateador
Servidor Proxy
Marshal By Value
Canal
Código cliente
Copia objeto servidor
Límite de Remoting
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

ltTransaction(TransactionOption.Required)gt Public
Class Account Inherits ServicedComponent
Public Sub Debit(...) 'Perform debit
action ContextUtil.SetComplete( ) End Sub
ltAutoComplete( )gt 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

ltObjectPooling(EnabledTrue, MinPoolSize5,
_ MaxPoolSize50)gt _ 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

ltConstructionEnabled(True)gtPublic 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

ltComponentAccessControl(True), seguridadRole("Mana
ger")gt _ 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
Clase base
Interfaz IComponent
Clases de componentes
Clases derivadas
Clases predefinidas
Clases personalizadas
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
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 ltToolboxBitmap("C\
txticon.ico"), DefaultEvent("Click")gt _ Public
Class MyTextBox Inherits System.Windows.Forms.
UserControl ltCategory("Appearance"), _
Description("Stores extra data"), _
DefaultValue("Empty")gt _ 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

Programador de subprocesos
Proceso 1
CPU
Subproc. 2
Subproc. 1
Subproc. 3
Subproc. 1
Subproc. 2
Subproc. 3
Proceso 2
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
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
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
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
33
Demostración Uso de la instrucción SyncLock
Write a Comment
User Comments (0)
About PowerShow.com