Programación con
Visual Basic .NET
1 – Plataforma .NET
Francisco Ruiz
Manuel Ángel Serrano
Escuela Superior de Informática
Universidad de Castilla-La Mancha
Programación con Visual Basic .NET
Contenidos sesión 1
• Plataforma .NET • Primer programa: "Hola
n Objetivos Mundo“
n Estrategias de desarrollo e n Creación y ejecución
implantación n Código generado
n .NET Framework n Archivos en disco
n Entorno de Ejecución común • VS.NET Aspectos avanzados
n Biblioteca de clases común n Demo
n Tipos de aplicaciones • Segundo programa:
• Introducción al Visual Studio “Preguntar usuario”
.NET (VS.NET) n Escribiendo código
n Demo de uso
UCLM-ESI. Programación con Visual Basic .NET 1. 2
Plataforma .NET
• ¿Qué es .NET?
n Una arquitectura tecnológica para la creación y
distribución de software como servicio.
n Servicio en cualquier plataforma, cliente en cualquier
dispositivo, programación en cualquier lenguaje, integración
basada en estándares.
• ¿Qué incluye?
n .NET Framework, infraestructura para la creación y
ejecución de las aplicaciones.
n Visual Studio .NET, entorno de desarrollo integrado
(IDE).
n Otros servicios.
UCLM-ESI. Programación con Visual Basic .NET 1. 3
Plataforma .NET
Objetivos fundamentales (i)
nNueva manera de desarrollar software
1996 1997 2000
Internet Internet Internet
1st Gen 2nd Gen 3rd Gen
IE/IIS DNA/COM+
1992
Cliente/Servidor
.NET
Win32
UCLM-ESI. Programación con Visual Basic .NET 1. 4
Plataforma .NET
Objetivos fundamentales (ii)
• Soporte multi-lenguaje
n La plataforma .NET es independiente del lenguaje
n Todos los lenguajes .NET son considerados por igual
n Un Runtime único
=> mejor aprovechamiento de los conocimietnos existentes
n Es posible integrar otros lenguajes y crear otros compiladores
n Common Language Specification (CLS)
n Lenguajes disponibles:
n Por Microsoft: Visual Basic, C++, C#, J#
n Por terceros : APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon,
Perl, Python, Scheme, Smalltalk, Fortran, …
UCLM-ESI. Programación con Visual Basic .NET 1. 5
Plataforma .NET
Objetivos fundamentales (iii)
• Soporte
multi-
lenguaje
UCLM-ESI. Programación con Visual Basic .NET 1. 6
Plataforma .NET
Objetivos fundamentales (iv)
• Soporte multi-plataforma
n Proyecto Rotor
n Common Language Infraestructure (CLI)
n Código fuente abierto, no comercial, modificable
n Compilar/ejecutar en FreeBSD, Windows, Mac OS X
http://msdn.microsoft.com/net/sscli
n Proyecto Mono
n Implementación open source del .NET Framework
n Compilador de C#, VB.NET, CLR, librería de clases, etc.
n Linux, S390, SPARC, HPPA
n Implementa ADO.NET, ASP.NET, etc.
www.go-mono.com
UCLM-ESI. Programación con Visual Basic .NET 1. 7
Plataforma .NET
Objetivos fundamentales (v)
• Basado en estándares
n XML (XML Schemas, Xpath, XSLT)
n Servicios Web
n SOAP (Simple Object Access Protocol)
n UDDI (Universal Description, Discovery & Integration)
n WSDL (Web Service Description Language)
n Lenguaje intermedio común CIL
n Lenguaje de programación C#
UCLM-ESI. Programación con Visual Basic .NET 1. 8
Plataforma .NET
Estrategias de Desarrollo (i)
• Facilitar la integración del software permitiendo
n Diversas plataformas (Windows, UNIX, Mainframe)
n Diferentes middleware de componentes (DDE, COM, CORBA)
n Diferentes sistemas operativos
• Homogeneizar lenguajes mediante
n Sistema de Tipos Común
n Biblioteca de Clases base comunes
• Redefinir soluciones preexistentes como servicios
• Simplificar la forma de programar mediante
n Orientación a objetos plena : clases, interfaces, constructores , atributos,
métodos, herencia inter-lenguajes, …
n Herramientas y entorno comunes para todos los desarrollos.
n Interoperabilidad pre-construida (con COM, DLL’s, etc.)
n Un Framework que libera al programador de muchas tareas: memoria ,
seguridad, etc.
UCLM-ESI. Programación con Visual Basic .NET 1. 9
Plataforma .NET
Estrategias de Desarrollo (ii)
n Paradigma de desarrollo unificado
API consistente independiente del
lenguaje y el modelo de programación
.NET Framework
RAD, OOP, Web,
Composición, Potencia, Estándar,
Delegación Expresividad En HTML
VB Forms MFC/ATL ASP
Windows API
UCLM-ESI. Programación con Visual Basic .NET 1. 10
Plataforma .NET
Estrategias de Implantación (i)
• Instalación de impacto cero
n Aplicaciones y componentes compartidos o privados
• Ejecución “side-by-side”
n Coexistencia de varias versiones del mismo componente
• Ensamblados (Assemblies)
n Colección de funcionalidad creada, versionada e implantada como una unidad de
implementación única (incluyendo uno o varios archivos)
n Son autodescriptivos
n En tiempo de ejecución se resuelven las referencias entre componentes,
compon entes, se
garantiza la política de enlace de versiones y se valida la integridad
integridad de los
ensamblados cargados.
n El Manifiesto (Manifest
Manifest)) contiene los metadatos del ensamblado incluyendo
n la identidad del ensamblado
n los archivos que implementan el ensamblado
n las dependencias en tiempo de compilación con otros ensamblados
n los tipos y recursos que forman el ensamblado
n el conjunto de permisos para ejecutarse apropiadamente
UCLM-ESI. Programación con Visual Basic .NET 1. 11
Plataforma .NET
Estrategias de Implantación (ii)
• Ventajas de los Ensamblados:
n No son necesarios más archivos para usar el componente
n No más archivos de cabeceras, IDL, librerías de tipos, ...
n Se reduce la dependencia del Registro
n No más “infierno de las DLLs”: se evitan las faltas de
sincronismo entre una librería compartida respecto de la
aplicación que la invoca
n Sistema de nombres robusto
n Auto-reparación de aplicaciones
UCLM-ESI. Programación con Visual Basic .NET 1. 12
.NET Framework (i)
• De cara al programador, es la pieza base de
.NET, ya que proporciona las herramientas y
servicios para desarrollar el software:
n Entorno de Ejecución Común (CLR)
n Biblioteca de clases básicas
n Motor de generación de interfaces de usuario
n Web (ASP .NET)
n Tradicionales Windows (Windows Forms)
n Especificación de Lenguaje Común (CLS)
UCLM-ESI. Programación con Visual Basic .NET 1. 13
.NET Framework (ii)
VB C++ C# J# Cobol…
Common Language Specification
Visual Studio.NET
ASP.NET Windows Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
Windows COM+ Services
UCLM-ESI. Programación con Visual Basic .NET 1. 14
Entorno de Ejecución Común
Common Language Runtime (CLR) (i)
• Es un motor encargado de la gestión del código de las
aplicaciones en cuanto a su
n Carga
n Ejecución
n Manipulación de memoria
n Seguridad
n Etc.
• Servicios que proporciona:
n En tiempo de ejecución
– Gestión de memoria (incluida recolección de basura), gestión
de procesos, threads (hilos), garantizar seguridad, satisfacer
dependencias sobre otros componentes.
n En tiempo de desarrollo
– Gestión del tiempo de vida, nominación de tipos robusta,
tratamiento de excepciones multilenguaje
multilenguaje,, gestión de
eventos basada en delegados, enlace dinámico, ..
UCLM-ESI. Programación con Visual Basic .NET 1. 15
Entorno de Ejecución Común
Common Language Runtime (CLR) (ii)
Sistema de Tipos Común (CTS)
Soporte Threads Componentes
Control Tipos Gestor Excepciones
Motor Seguridad Motor Depuración
Lenguaje Gestor Recolector
Intermedio (IL) de código de basura
Carga de clases y disposición en memoria
UCLM-ESI. Programación con Visual Basic .NET 1. 16
CLR
Lenguaje intermedio IL
VB VC ... Script
Código
Código
generado IL
Nativo instalación
Common Language Runtime
“Econo”-JIT Standard JIT
Compilador Compilador
Código Nativo
UCLM-ESI. Programación con Visual Basic .NET 1. 17
CLR
Compilación y ejecución
Compilación
Código IL
Código Compilador Ensamblado
Fuente Lenguaje Metadatos
Código Compilador
nativo JIT Al instalar o la
primera vez que cada
Ejecución método es llamado
UCLM-ESI. Programación con Visual Basic .NET 1. 18
CLR
Sistema de Tipos Común (CTS) (i)
• Common Type System
n Conjunto estándar de tipos y reglas para crear nuevos tipos
n Integración multi-lenguaje:
– Heredar implementaciones de clases escritas en otros lenguajes
– Invocar excepciones de código entre lenguajes
– Depurar transparentemente
n ¡No más versiones de librerías para cada lenguaje o compilador!
n ¡No más librerías de clases limitadas a un lenguaje concreto!
n Todas las implementaciones de clases, interfaces, estructuras,
etc., nativas o creadas por el programador, son tipos .NET.
n Todos los tipos .NET son objetos.
Dim sNombre As String
sNombre = "coche"
MessageBox.Show(sNombre.Length) ' devuelve 5
UCLM-ESI. Programación con Visual Basic .NET 1. 19
CLR
Sistema de Tipos Común (CTS) (ii)
• Categorías de tipos
UCLM-ESI. Programación con Visual Basic .NET 1. 20
CLR
Sistema de Tipos Común (CTS) (iii)
UCLM-ESI. Programación con Visual Basic .NET 1. 21
Biblioteca de clases común (i)
System.Web System.WinForms
Services UI Design ComponentModel
Description HtmlControls
Discovery VBWebControls
C++ C# J# Cobol…
Protocols System.Drawing
Common Language Specification
Caching Security Drawing2D Printing
Configuration SessionState
ASP.NET Imaging
Windows Forms Text
System.Data ADO.NET and XML System.Xml
ADO SQL XSLT
Base Class Library Serialization
Design SQLTypes XPath
Common Language Runtime
System
Windows COM+ Services
Collections IO Security Runtime
Configuration Net ServiceProcess InteropServices
Diagnostics Reflection Text Remoting
Globalization Resources Threading Serialization
UCLM-ESI. Programación con Visual Basic .NET 1. 22
Biblioteca de clases común (ii)
• Lo que vé el desarrollador
n Un API formada por un conjunto de bibliotecas de clases
comunes, orientadas a objetos, jerárquicas y extensibles que
n proveen soporte completo para la programación de diversos tipos
de aplicaciones
n permiten herencia entre lenguajes, gestión de errores y
depuración
n Las clases están organizadas de forma lógica y jerárquica en
“namespaces”
n System, XML, Data (ADO .NET), Drawing, WinForms, Web
(ASP.NET)
n Facilita reutilización
n Evita colisiones
n No es necesario aprender múltiples modelos de objetos:
n Visual C: MFC, Visual J++: WFC, Visual Basic: Fw
UCLM-ESI. Programación con Visual Basic .NET 1. 23
Especificación de Lenguaje Común
Common Language Specification (CLS)
VB C++ C# J# Cobol…
Common Language Specification
ASP.NET Windows Forms
ADO.NET and XML
• Conjunto de características Base Class Library
comunes que deben cumplir Common Language Runtime
todos los lenguajes. Windows COM+ Services
• Su finalidad es
• Independencia del lenguaje
• Integración entre lenguajes
• Apertura a nuevos lenguajes
UCLM-ESI. Programación con Visual Basic .NET 1. 24
Tipos de Aplicaciones
• Aplicaciones normales:
n De consola
n Windows Service (no interactiva)
n Windows Form (interactiva)
n Windows Control Library (biblioteca de controles)
• Aplicaciones para la web:
n Web Application (aplicación web cliente-servidor)
n XML Web Service (servicio web)
UCLM-ESI. Programación con Visual Basic .NET 1. 25
Tipos de Aplicaciones
De Consola
• Ejecutables de línea de comandos
• Escritos con cualquier lenguaje .NET
• Ejecución desatendida
• Muy ligeros
n Hola Mundo ~ 5k
UCLM-ESI. Programación con Visual Basic .NET 1. 26
Tipos de Aplicaciones
Windows Service
• Aplicaciones windows no interactivas.
• Escritas con cualquier lenguaje .NET
• Incluyen el código para el comienzo, el fin y
mientras se ejecuta.
• Tipos de comienzo:
n Manual
n Automático
n Deshabilitado
UCLM-ESI. Programación con Visual Basic .NET 1. 27
Tipos de Aplicaciones
Windows Form
• Aplicaciones Windows interactivas
• Basadas en formularios
n p.e., interfaz a bases de datos
• SDI/MDI (multidocumento)
• Estilo Explorer
n Con conectores y divisores entre “frames”
• Instalación
n XCopy
n No-tocar (!todavía más fácil que con XCopy!)
n Ejecutar desde una URL
• Impresión
n Configuración de páginas
n Previsualización
UCLM-ESI. Programación con Visual Basic .NET 1. 28
Tipos de Aplicaciones
Windows Control Library
• Usables en cualquier formulario con cualquier
lenguaje.
• Derivados desde cualquier otro control
n Extender controles .NET pre-construidos.
n Construir nuevos controles.
• Ejemplo:
n Acceso a datos particularizado y ampliado.
UCLM-ESI. Programación con Visual Basic .NET 1. 29
Tipos de Aplicaciones
Web Application
• Mucho menos código
n Con Web Forms que con ASP clásico
• Estilo de programación a lo VB
• Controles para validar entradas
• Controles complejos mejorados
n DataGrid
n DataList
n Calendar
• Sesiones seguras
n Cookies no requeridos
• Traza y depuración mejoradas
• Caching más potente
• Más eventos detectables
UCLM-ESI. Programación con Visual Basic .NET 1. 30
Tipos de Aplicaciones
XML Web Service
• Evolución de aplicaciones y sitios web
n Interacciones seguras
• Nueva metodología de integración
n Entre cualquier sistema operativo y/o lenguaje
n Olvidando procolos propietarios (Java RMI, CORBA IIOP,
DCOM)
• Componentes de aplicación programables
n Accesibles via protocolos Internet estándares
n HTTP, XML, SOAP, WSDL, UDDI
• Soporte provisto por el Framework
n Generación automática de XML, SOAP, WSDL
n Conversión automática de un componente en Web Service
(WebMethod)
UCLM-ESI. Programación con Visual Basic .NET 1. 31
VS.NET
Introducción al Visual Studio .NET
• Entorno Integrado de Desarrollo (IDE) para .NET
• Multi-lenguaje integrado
n Lo mismo se hace siempre igual, independientemente del
lenguaje.
• Permite elegir los tipos de aplicación
• Abierto
n se pueden añadir nuevos lenguajes o nuevas herramientas.
• Integración con arquitectura COM
UCLM-ESI. Programación con Visual Basic .NET 1. 32
Introducción al VS.NET
Demo de uso (i)
• Página de inicio
n Editar “Mi perfil”
n Ver “recursos en línea”
n Proyectos (nuevo / abrir)
• Crear nuevo proyecto
n Aplicación windows, biblioteca de clases, servicio web, ...
• Elementos principales del entorno
n Menú
n Barra de herramientas
n Ventana principal de trabajo
n Fichas
n Ventanas desplegables (pestañas)
n Ventanas combinadas
UCLM-ESI. Programación con Visual Basic .NET 1. 33
Introducción al VS.NET
Demo de uso (ii)
• Agregar nuevos elementos a un proyecto
n Windows Form, Clase, Módulo, Clase de componentes, Control
de usuario, Dataset, Archivo XML, ... hasta 33 diferentes
• Configuración del entorno
• Estados de las ventanas
n Acoplable / Ocultar / Flotante / Ocultar automáticamente
• Explorador de soluciones
n Solución: colección de proyectos abiertos en una misma sesión
de trabajo.
n Para cada proyecto muestra sus elementos: Formularios,
módulos, clases, recursos, referencias, etc.
n References => referencias a los espacios de nombres usados
n AssemblyInfo.vb => información del Ensamblado
UCLM-ESI. Programación con Visual Basic .NET 1. 34
Introducción al VS.NET
Demo de uso (iii)
• Propiedades de un proyecto
• Propiedades de la solución
• Agregar un control a un formulario
• Menú contextual
• Ventana de propiedades
n Formulario / control
UCLM-ESI. Programación con Visual Basic .NET 1. 35
Primer programa “Hola Mundo”
Creación y ejecución
1. Crear un nuevo proyecto de Visual Basic, tipo
“Aplicación para Windows”
2. Añadir un formulario (clase de objeto visual)
3. Editar sus propiedades
text <- Programa de prueba 1”
4. Añadir un control de tipo “label” (clase de objeto visual
incrustado dentro de un formulario)
5. Editar sus propiedades
text <- “Hola Mundo”
font <- MS Sans Serif, 20 pt
6. Ejecutar la aplicación
UCLM-ESI. Programación con Visual Basic .NET 1. 36
Primer programa “Hola Mundo”
Código generado
1. Ver código
Expandir/contraer regiones
2. Clase del formulario
Un formulario es un objeto => una clase
3. El método constructor New()
Se hereda de la clase base (padre)
4. El método InitializeComponent()
Crea un nuevo objeto Label
Asigna valores a las propiedades del Label
Asigna valores a las propiedades del Form
Añade el objeto Label al Form
5. El método Dispose()
Libera recursos de memoria
UCLM-ESI. Programación con Visual Basic .NET 1. 37
Primer programa “Hola Mundo”
Archivos en disco
1. Ver lo que se ha creado en el disco.
n Directorios de la figura
2. Tipos de Archivos:
n VB: código fuente en Visual Basic (clases, módulos, etc.)
n VBPROJ: información sobre los elementos del proyecto
n SLN: solución
n VBPROJ.USER: opciones de usuario del proyecto
n RESX: plantilla de recursos en XML
n EXE: aplicación ejecutable
n Guardado en el directorio bin
n Es lo único necesario para instalar en otro equipo que tiene .NET
Framework
n PDB: información para depuración
UCLM-ESI. Programación con Visual Basic .NET 1. 38
VS.NET
Aspectos avanzados – demo (i)
• Cuadro de herramientas
n Agregar/eliminar controles
n Contenedor de código fuente (anillo del portapapeles)
• Barras de herramientas
n Menú contextual
n Personalizar
• Barras personalizadas
n Crear nueva
n Añadir/quitar comandos
• Editor de código
n Fuentes y colores
n Otras opciones
UCLM-ESI. Programación con Visual Basic .NET 1. 39
VS.NET
Aspectos avanzados – demo (ii)
• Dividir ventana edición
• Menú Edición
n Buscar/Reemplazar
n Ajuste de línea
n Marcadores
n Mostrar espacios en blanco
n Regiones y esquematización
n Comentarios en bloques de líneas
n Intellisense (ayuda “inteligente” al escribir código)
• Ir a definición de procedimiento
• Mostrar pantalla completa
UCLM-ESI. Programación con Visual Basic .NET 1. 40
VS.NET
Aspectos avanzados – demo (iii)
• Ventana vista de clases
• Ventana explorador de objetos
n Buscar símbolo
• Tareas
{Agenda para registrar trabajos pendientes}
n Crear/Eliminar tareas
n Comentarios / Marcadores
n Ventana Lista de Tareas
• Macros
n Explorador
n Ejecución
n Grabación (estilo Office)
n IDE de macros
UCLM-ESI. Programación con Visual Basic .NET 1. 41
VS.NET
Aspectos avanzados – demo (iv)
• Sistema de Ayuda
MSDN (Microsoft Development Network Library)
Son CD’s separados de los de Visual Studio .NET
Formato HTML
n Ayuda dinámica
n Contenido
n Índice
n Buscar
n Ayuda externa al IDE
n Mantener temas visibles
n Documentación completa
.NET Framework SDK / MSDN for Visual Studio 7.0
UCLM-ESI. Programación con Visual Basic .NET 1. 42
Segundo programa “Preguntar usuario”
Escribiendo código (i)
1. Crear nuevo proyecto EscribirCodigo de tipo “Aplicación para
Windows”
2. Añadir módulo MiCodigo [contenedor de código]
Module MiCodigo
....
End Module
3. Añadir comentario
‘Aplicación EscribirCodigo
4. Añadir procedimiento Main dentro de MiCodigo
Sub Main() ‘punto de entrada a la aplicación
....
End Module
5. Mostrar mensaje de inicio usando la clase del sistema MessageBox
MessageBox .Show(“Empieza el programa”)
UCLM-ESI. Programación con Visual Basic .NET 1. 43
Segundo programa “Preguntar usuario”
Escribiendo código (ii)
6. Configurar propiedades del proyecto
Nombre ensamblado: EscribirCodigo
Espacio de nombres: EscribirCodigo
Objeto inicial: Sub Main
7. Declarar la variable Nombre de tipo string
Dim Nombre As String
8. Usar función InputBox() para preguntar nombre del usuario y
almacenarlo en la variable Nombre
Nombre=InputBox
Nombre= InputBox(“Nombre
(“Nombre del usuario:”)
9. Utilizar el operador de concatenar textos (&) para mostrar
mensaje de control
MessageBox.Show(“El usuario es “ & Nombre, “Programa de
MessageBox.Show(“El
prueba”)
10. Ejecutar el programa y grabarlo en disco
11. Probar depuración errores (poner la declaración Dim como comentario)
UCLM-ESI. Programación con Visual Basic .NET 1. 44