Documentos de Académico
Documentos de Profesional
Documentos de Cultura
componentes en Visual
Basic .NET
Descripción
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
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
Uso de módulos como componentes
Límite de Remoting
Creación de componentes con servicio
<ObjectPooling(Enabled:=True,
<ObjectPooling(Enabled:=True, MinPoolSize:=5,
MinPoolSize:=5, __
MaxPoolSize:=50)>
MaxPoolSize:=50)> __
Public
Public Class
Class Account
Account
Inherits
Inherits ServicedComponent
ServicedComponent
...
...
Protected
Protected Overrides
Overrides Function
Function CanBePooled(
CanBePooled( )) As
As Boolean
Boolean
Return
Return True
True
End Function
End Function
End
End Class
Class
Uso de las cadenas de constructor
<ConstructionEnabled(True)>Public
<ConstructionEnabled(True)>Public Class
Class Account
Account
Inherits
Inherits ServicedComponent
ServicedComponent
Protected
Protected Overrides
Overrides Sub
Sub Construct(ByVal
Construct(ByVal ss As
As String)
String)
''Called
Called after
after class
class constructor
constructor
''Use
Use passed
passed in
in string
string
End
End Sub
Sub
End
End Class
Class
Uso de seguridad
<ComponentAccessControl(True),
<ComponentAccessControl(True), seguridadRole("Manager")>
seguridadRole("Manager")> __
Public
Public Class
Class Account
Account
Inherits ServicedComponent
Inherits ServicedComponent
Public
Public Function
Function GetDetails(
GetDetails( )) As
As String
String
With seguridadCallContext.CurrentCall
With seguridadCallContext.CurrentCall
If
If .IsCallerInRole("Manager")
.IsCallerInRole("Manager") Then
Then
Return
Return .OriginalCaller.AccountName
.OriginalCaller.AccountName
End If
End If
End With
End With
End Function
End Function
End
End Class
Class
Uso de otros servicios de componentes
s e
b a
s e System.ComponentModel.Component
Cl a
Interfaz
IComponent
s Clases de componentes
s e das Clases predefinidas
l a
C riva
de Clases personalizadas
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
Demostración: Creación de un componente Stopwatch
Creación de controles de formularios Windows Forms
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
Heredar de un control existente Windows Forms
Public
Public Class
Class MyTextBox
MyTextBox
Inherits System.Windows.Forms.TextBox
Inherits System.Windows.Forms.TextBox
Private
Private strData
strData As
As String
String
Public
Public Property
Property HiddenData(
HiddenData( )) As
As String
String
Get
Get
Return
Return strData
strData
End Get
End Get
Set(ByVal
Set(ByVal Value
Value AsAs String)
String)
strData = Value
strData = Value
End Set
End Set
End Property
End Property
...
...
End
End Class
Class
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
Imports System.ComponentModel
System.ComponentModel
<ToolboxBitmap("C:\txticon.ico"),
<ToolboxBitmap("C:\txticon.ico"), DefaultEvent("Click")>
DefaultEvent("Click")> __
Public
Public Class
Class MyTextBox
MyTextBox
Inherits System.Windows.Forms.UserControl
Inherits System.Windows.Forms.UserControl
<Category("Appearance"),
<Category("Appearance"), __
Description("Stores
Description("Stores extra
extra data"),
data"), __
DefaultValue("Empty")>
DefaultValue("Empty")> __
Public
Public Property
Property HiddenData(
HiddenData( )) As
As String
String
...
...
End Property
End Property
...
...
End Class
End Class
Demostración: Creación de una caja de texto mejorada
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
¿Qué es un hilo?
Programador de subprocesos
Subproc.1
Proceso 1 Subproc. 321
CPU
Subproc. 2
Proceso 2
Subproc. 3
Ventajas de múltiples hilos de ejecución
Sub
Sub Test(
Test( ))
Dim
Dim calc
calc AsAs New
New Calculate(
Calculate( ))
Dim
Dim th
th As
As New
New Threading.Thread(AddressOf
Threading.Thread(AddressOf calc.LongCalculation)
calc.LongCalculation)
calc.iValue
calc.iValue == 10
10
AddHandler
AddHandler calc.Complete, AddressOf
calc.Complete, AddressOf CalcResult
CalcResult
th.Start(
th.Start( ))
End
End Sub
Sub
Sub
Sub CalcResult(ByVal
CalcResult(ByVal Result
Result As
As Integer)
Integer)
...
...
End
End Sub
Sub
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
Sub Worker(
Worker( ))
SyncLock(theData)
SyncLock(theData) 'Lock
'Lock this
this object
object variable
variable
theData.id = iValue
theData.id = iValue
'Perform
'Perform some
some lengthy
lengthy action
action
iValue
iValue == theData.id
theData.id
End SyncLock
End SyncLock 'Unlock
'Unlock the
the object
object variable
variable
End Sub
End Sub
Demostración: Uso de la instrucción SyncLock