Enciclopedia de Microsoft
®
Visual Basic
Interfaces gráficas y aplicaciones para Internet
con Windows Forms y ASP.NET
3.ª edición
Fco. Javier Ceballos Sierra
Profesor titular de laEscuela Politécnica Superior Universidad de Alcalá
Enciclopedia de Microsoft Visual Basic
Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET 3.ª edición.
© Fco. Javier Ceballos Sierra © De la edición: RA-MA 2013
MARCAS COMERCIALES: las marcas de los productos citados en el contenido de este libro (sean o no marcas registradas) pertenecen a sus respectivos propietarios. RA-MA no está asociada a ningún producto o fabricante mencionado en la obra, los datos y los ejemplos utilizados son ficticios salvo que se indique lo contrario.
RA-MA es una marca comercial registrada.
Se ha puesto el máximo empeño en ofrecer al lector una información completa y precisa. Sin embargo, RA-MA Editorial no asume ninguna responsabilidad derivada de su uso, ni tampoco por cualquier violación de patentes ni otros derechos de terceras partes que pudieran ocurrir. Esta publicación tiene por objeto proporcionar unos conocimientos precisos y acreditados sobre el tema tratado. Su venta no supone para el editor ninguna forma de asistencia legal, administrativa ni de ningún otro tipo. En caso de precisarse asesoría legal u otra forma de ayuda experta, deben buscarse los servicios de un profesional competente.
Reservados todos los derechos de publicación en cualquier idioma.
Según lo dispuesto en el Código Penal vigente ninguna parte de este libro puede ser reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o cualquier otro, sin autorización previa y por escrito de RA-MA; su contenido está protegido por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente, reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica. Editado por:
RA-MA Editorial
C/ Jarama, 3A, Polígono industrial Igarsa 28860 PARACUELLOS DEL JARAMA, Madrid Teléfono: 91 658 42 80
Telefax: 91 662 81 39
Correo electrónico: [email protected] Internet: www.ra-ma.es y www.ra-ma.com
ISBN: 978-84-9964-265-9 Depósito Legal: M-xxxxx-2013 Autoedición: Fco. Javier Ceballos
Filmación e impresión: Closas-Orcoyen, S.L. Impreso en España
Si no puedo dibujarlo es que no lo entiendo. (Einstein)
Dedico esta obra a María del Carmen, mi esposa, y a mis hijos Francisco y Javier.
CONTENIDO
PRÓLOGO ... XXIII
PARTE 1. INTRODUCCIÓN ... 1
CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET ... 3
PLATAFORMA .NET ... 4
.NET Framework ... 5
Aplicaciones de cliente ... 7
Aplicaciones web ... 7
ADO.NET ... 9
Biblioteca de clases base ... 9
Entorno de ejecución común de los lenguajes ... 9
.NET Framework y COM+ ... 12
Visual Studio ... 13
CAPÍTULO 2. MI PRIMERA APLICACIÓN ... 15
MICROSOFT VISUAL STUDIO ... 15
Crear un nuevo proyecto ... 17
El formulario ... 21
Dibujar los controles ... 22
Borrar un control ... 27
Propiedades de los objetos ... 27
Bloquear la posición de todos los controles ... 29
Icono de la aplicación ... 29
VIII
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Guardar la aplicación ... 33
Verificar la aplicación ... 33
Propiedades del proyecto ... 35
Crear soluciones de varios proyectos ... 36
Opciones del EDI ... 37
Personalizar el EDI ... 37
WPF ... 38
PARTE 2. INTERFACES GRÁFICAS ... 41
CAPÍTULO 3. APLICACIÓN WINDOWS FORMS ... 43
PROGRAMANDO EN WINDOWS ... 45
ESTRUCTURA DE UNA APLICACIÓN ... 47
Compilar y ejecutar la aplicación ... 51
DISEÑO DE LA INTERFAZ GRÁFICA ... 53
Crear un componente ... 53
Controles más comunes ... 53
Añadir una etiqueta y editar sus propiedades ... 54
Añadir un botón de pulsación y editar sus propiedades ... 56
Añadir una descripción abreviada a un componente ... 57
CONTROL DE EVENTOS ... 58
Asignar controladores de eventos a un objeto ... 61
CICLO DE VIDA DE UN FORMULARIO ... 62
PROPIEDADES BÁSICAS DE UN FORMULARIO ... 64
Administración de la duración ... 64
Administración de formularios ... 65
Apariencia y comportamiento ... 65
CONFIGURACIÓN DE UNA APLICACIÓN ... 66
RECURSOS DE UNA APLICACIÓN ... 68
ATRIBUTOS GLOBALES DE UNA APLICACIÓN ... 70
CICLO DE VIDA DE UNA APLICACIÓN... 71
Permitir una sola instancia de la aplicación ... 74
Argumentos en la línea de órdenes ... 75
Pantalla de presentación ... 76
CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS ... 79
BIBLIOTECA DE CLASES DE WINDOWS FORMS ... 79
CAJAS DE TEXTO, ETIQUETAS Y BOTONES ... 82
CONTENIDO IX
Objetos ... 83
Eventos ... 83
Pasos a seguir durante el desarrollo ... 83
El formulario, los controles y sus propiedades ... 84
Tecla de acceso ... 85
Botón predeterminado ... 85
Responder a los eventos ... 85
Enfocar un objeto ... 89
Seleccionar el texto de una caja de texto ... 90
INTERCEPTAR LA TECLA PULSADA ... 91
VALIDACIÓN DE UN CAMPO DE TEXTO ... 93
Eventos Validating y Validated ... 96
Expresiones regulares ... 99
Ejemplos de expresiones regulares ... 99
El motor de expresiones regulares ... 102
MaskedTextBox ... 104
EJERCICIOS RESUELTOS ... 105
Diseño de una calculadora ... 106
Objetos ... 106
Eventos ... 106
Pasos a seguir durante el desarrollo ... 106
Diseño de la ventana y de los controles ... 107
Establecer una fuente ... 109
Color ... 109
Escribir el código ... 110
EJERCICIOS PROPUESTOS ... 119
CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS ... 121
ARQUITECTURA ... 121
MENÚS ... 123
DISEÑO DE UNA BARRA DE MENÚS ... 124
Crear un menú mediante programación ... 125
Controlador de un elemento de un menú ... 128
Aceleradores y nemónicos ... 129
IMÁGENES EN CONTROLES ... 130
Recursos de una aplicación ... 130
LISTA DE TAREAS ... 133
BARRA DE HERRAMIENTAS... 134
Diseño de una barra de herramientas ... 134
BARRA DE ESTADO ... 136
X
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
DESARROLLO DE UN EDITOR DE TEXTOS ... 138
Caja de texto multilínea ... 139
Diseño del editor ... 140
El portapapeles ... 142
Objeto My.Computer.Clipboard ... 142
Trabajar con texto seleccionado ... 143
Diseño de la barra de menús ... 144
Diseño de la barra de herramientas ... 146
Asociar un método con un elemento de un menú ... 147
Archivo - Salir... 148 Edición - Cortar... 148 Edición - Copiar ... 149 Edición - Pegar ... 149 Opciones - Fuente ... 149 Opciones - Tamaño ... 151
Habilitar o inhabilitar los elementos de un menú ... 152
Marcar el elemento seleccionado de un menú ... 153
Deshacer ... 154
Recordar las ediciones reversibles ... 154
Añadir a la interfaz la orden Deshacer ... 154
Listas desplegables en menús ... 155
MENÚS CONTEXTUALES ... 159
MENÚS DINÁMICOS ... 161
EJERCICIOS PROPUESTOS ... 164
CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO ... 169
CAJAS DE DIÁLOGO MODALES Y NO MODALES ... 170
CAJAS DE MENSAJE ... 170
Requerir datos con InputBox ... 174
Cómo se utilizan estas cajas de diálogo ... 175
CAJAS DE DIÁLOGO PERSONALIZADAS ... 176
Crear una caja de diálogo ... 177
Mostrar una caja de diálogo ... 178
Introducción de datos y recuperación de los mismos ... 179
DIÁLOGO ACERCA DE ... 181
FORMULARIO PROPIETARIO... 182
OTROS CONTROLES WINDOWS FORMS ... 183
Casillas de verificación ... 184
Botones de opción ... 188
Listas simples ... 193
CONTENIDO XI
Iniciar la lista ... 196
Acceder a los elementos seleccionados ... 196
Colección de elementos de una lista ... 197
Clase CheckedListBox ... 198
Listas desplegables ... 198
Diseñar la lista ... 200
Iniciar la lista ... 201
Acceder al elemento seleccionado ... 201
Colección de elementos de una lista desplegable ... 202
Controles de rango definido ... 203
ScrollBar ... 203
TrackBar ... 207
ProgressBar ... 208
Control con pestañas ... 210
Gestión de fechas ... 211
FlowLayoutPanel y TableLayoutPanel ... 213
CAJAS DE DIÁLOGO ESTÁNDAR ... 216
Cajas de diálogo Abrir y Guardar ... 217
Caja de diálogo Color ... 220
Caja de diálogo Fuente ... 221
REDIMENSIONAR UN COMPONENTE ... 222
TEMPORIZADORES ... 223
EJERCICIOS RESUELTOS ... 227
EJERCICIOS PROPUESTOS ... 238
CAPÍTULO 7. TABLAS Y ÁRBOLES ... 241
TABLAS ... 241
Arquitectura de un control DataGridView ... 243
Construir una tabla ... 244
Añadir las columnas a la tabla ... 245
Iniciar la tabla ... 246
Tamaño de las celdas ... 252
Acceder al valor de la celda seleccionada ... 253
ÁRBOLES ... 254
Arquitectura de un árbol ... 255
Construir un árbol ... 255
Añadir nodos a un árbol ... 256
Imágenes para los nodos del árbol ... 257
Iniciar el árbol ... 258
Acceder al nodo seleccionado ... 260
XII
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Añadir y borrar nodos ... 264
Añadir un nodo ... 265
Borrar el nodo seleccionado ... 268
Borrar todos los nodos excepto la raíz ... 268
Personalizar el aspecto de un árbol ... 269
VISTAS DE UNA LISTA ... 269
Personalizar el aspecto de una vista ... 270
La colección Columns ... 271
Elemento de la lista ... 272
La colección Items ... 273
Un ejemplo con ListView, TreeView y SplitContainer ... 273
EJERCICIOS RESUELTOS ... 276
EJERCICIOS PROPUESTOS ... 292
CAPÍTULO 8. DIBUJAR Y PINTAR ... 293
SERVICIOS DE GDI+... 295
OBJETOS DE DIBUJO BÁSICOS ... 296
Objeto Graphics ... 298 Objeto Color ... 299 Objeto Pen ... 300 Objeto Brush ... 301 Objeto Point ... 302 Objeto Rectangle ... 302 Objeto Font ... 303 Objeto GraphicsPath ... 304 MÉTODOS DE DIBUJO ... 304 Líneas y rectángulos ... 304 Elipses y arcos ... 305 Tartas ... 306 Polígonos ... 306 Curvas flexibles ... 307 Trazados ... 308 Regiones ... 308 GRÁFICOS PERSISTENTES ... 311
SISTEMAS DE COORDENADAS Y TRANSFORMACIONES ... 313
Tipos de sistemas de coordenadas ... 317
Transformaciones de color ... 318
MOSTRAR IMÁGENES ... 320
Mapas de bits ... 320
Cargar y mostrar un mapa de bits ... 322
CONTENIDO XIII
CAMBIAR LA FORMA DEL PUNTERO DEL RATÓN ... 329
EJERCICIOS RESUELTOS ... 330
EJERCICIOS PROPUESTOS ... 340
CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS ... 343
CREACIÓN DE UNA APLICACIÓN MDI ... 344
Organizar los formularios hijo ... 347
EDITOR DE TEXTO MDI ... 348
Formulario padre ... 348
Formulario hijo ... 350
Vincular código con los controles ... 352
Iniciar y finalizar la aplicación... 353
Nuevo documento ... 353
Abrir un documento ... 354
Guardar un documento ... 355
Guardar como ... 356
Imprimir un documento ... 357
Cortar, copiar y pegar ... 359
Recordar las ediciones reversibles ... 360
Barras de herramientas y de estado ... 361
Menú Ventana ... 362
Selección actual del texto ... 363
El documento ha cambiado ... 365
Operaciones de arrastrar y soltar ... 366
EJERCICIOS RESUELTOS ... 366
EJERCICIOS PROPUESTOS ... 371
CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES ... 373
REUTILIZACIÓN DE CONTROLES EXISTENTES ... 373
Control TextBox extendido ... 374
Clasificación de las propiedades de un control ... 379
CONTROLES DE USUARIO ... 379
Construir el control de usuario ... 380
Añadir propiedades ... 381
Añadir métodos ... 382
Añadir eventos ... 383
Opciones fecha-hora alarma o actual ... 383
Verificar el control de usuario ... 384
EJERCICIOS RESUELTOS ... 386
XIV
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
CAPÍTULO 11. PROGRAMACIÓN CON HILOS ... 391
ESPACIO DE NOMBRES System.Threading ... 392
Clase Thread ... 395
Resumen de los métodos y propiedades de Thread ... 398
Estados de un hilo ... 398
ACCESO A CONTROLES DESDE HILOS ... 399
Delegados ... 399
Componente BackgroundWorker ... 404
Ejecutar una tarea de forma asíncrona ... 405
Notificar el progreso a la interfaz gráfica del usuario ... 406
Recuperar el estado después de la finalización de la tarea ... 407
Cancelación anticipada ... 407
MECANISMOS DE SINCRONIZACIÓN ... 408
Objetos de sincronización ... 409
Secciones críticas ... 410
Controladores de espera ... 412
DETENER UN HILO DE FORMA CONTROLADA ... 414
EJERCICIOS RESUELTOS ... 417
EJERCICIOS PROPUESTOS ... 420
PARTE 3. ACCESO A DATOS ... 421
CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS ... 423
ASPECTOS BÁSICOS ... 423
Enlace de datos manual ... 423
Notificar cuándo cambia una propiedad ... 427
Enlace de datos con las clases de .NET ... 430
La clase Binding ... 431
Tipos de enlace ... 432
Componente BindingSource ... 432
Notificación de cambios en un enlace de Windows Forms ... 433
Crear un enlace ... 433
Enlaces con otros controles ... 435
Aplicar conversiones ... 435
ORÍGENES DE DATOS COMPATIBLES CON WINDOWS FORMS ... 439
Enlace a colecciones de objetos ... 442
List ... 442
BindingList ... 447
BindingSource ... 451
CONTENIDO XV
Ventana de orígenes de datos ... 457
Vinculación maestro-detalle ... 461
Operaciones con los datos ... 465
Elemento actual ... 465
Navegar ... 466
Ordenación, filtrado y búsqueda ... 469
BindingListView ... 471
Elemento actual de la vista ... 472
Ordenar ... 473
Filtrar ... 474
Buscar ... 474
Datos introducidos por el usuario ... 475
Error en los datos ... 477
Validación ... 478
Datos que no necesitan validación ... 479
CAPÍTULO 13. ACCESO A UNA BASE DE DATOS ... 487
SQL ... 488
Crear una base de datos ... 488
Crear una tabla ... 488
Escribir datos en la tabla ... 490
Modificar datos de una tabla ... 490
Borrar registros de una tabla ... 491
Seleccionar datos de una tabla ... 491
Crear una base de datos ... 493
Base de datos Microsoft Access ... 493
Base de datos Microsoft SQL Server ... 495
ADO.NET ... 496 Componentes de ADO.NET ... 497 Conjunto de datos... 498 Proveedor de datos ... 500 Objeto conexión ... 501 Objeto orden ... 503
Objeto lector de datos ... 503
Adaptador de datos ... 504
Modos de conexión ... 506
Probando una conexión ... 508
ACCESO CONECTADO A UNA BASE DE DATOS ... 509
ATAQUES DE INYECCIÓN DE CÓDIGO SQL ... 512
Órdenes parametrizadas ... 516
XVI
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
TRANSACCIONES ... 518
Transacción implícita TransactionScope ... 519
Transacciones explícitas ... 523
ESCRIBIR CÓDIGO INDEPENDIENTE DEL PROVEEDOR ... 525
CONSTRUIR COMPONENTES DE ACCESO A DATOS ... 531
Capa de presentación ... 533
Operaciones contra la base de datos ... 533
Objetos de negocio ... 535
Capa de acceso a datos ... 537
Capa de lógica de negocio ... 541
Diseño de la capa de presentación ... 542
Lógica de interacción con la capa de presentación ... 544
Desacoplar la IU del resto de la aplicación ... 547
Adaptar la colección de objetos ... 548
Capa de lógica de negocio ... 551
Lógica de interacción con la capa de presentación ... 554
Validación ... 555
ACCESO DESCONECTADO A UNA BASE DE DATOS ... 555
ASISTENTES DE VISUAL STUDIO ... 559
Crear la infraestructura para el acceso a la base de datos ... 561
Crear el conjunto de datos ... 566
Agregar un control rejilla al formulario ... 567
Código subyacente ... 568
Asistente para configurar orígenes de datos ... 570
VISTA EN DETALLE DEL CONJUNTO DE DATOS ... 574
Diseño del formulario ... 576
Vincular las cajas de texto con el conjunto de datos ... 577
Controles de navegación ... 579
Añadir, borrar y buscar datos ... 582
CONTROL BindingNavigator ... 586
DISEÑO MAESTRO-DETALLE ... 587
EJERCICIOS RESUELTOS ... 596
EJERCICIOS PROPUESTOS ... 616
CAPÍTULO 14. LINQ ... 619
RECURSOS DEL LENGUAJE COMPATIBLES CON LINQ... 619
Declaración implícita de variables locales ... 620
Matrices de tipos definidos de forma implícita ... 620
Tipos anónimos ... 620
Propiedades autoimplementadas ... 621
CONTENIDO XVII
Métodos extensores ... 622
Expresiones lambda ... 623
El delegado Func(Of T, TResu) ... 625
Operadores de consulta ... 626
Árboles de expresiones lambda ... 629
EXPRESIONES DE CONSULTA ... 632
Compilación de una expresión de consulta ... 635
Sintaxis de las expresiones de consulta ... 637
Cláusula Group ... 637 Productos cartesianos ... 638 Cláusula Join ... 638 Cláusula Into ... 639 Cláusula Let ... 640 PROVEEDORES DE LINQ ... 641 ENTITY FRAMEWORK ... 642
MARCO DE ENTIDADES DE ADO.NET ... 643
Consultar un modelo de objetos ... 647
ACCESO A UNA BASE DE DATOS ... 651
Conectarse a la base de datos ... 652
Generar el modelo de entidades ... 652
Las clases de entidad y el contexto de objetos ... 661
Propiedades de navegación ... 664
Mostrar datos en una interfaz gráfica ... 666
Una aplicación con interfaz gráfica ... 667
Vincular controles con el origen de datos ... 668
Proveedor de datos ... 669
Filtros ... 673
Contextos de corta duración ... 675
REALIZAR CAMBIOS EN LOS DATOS ... 675
Modificar filas en la base de datos ... 680
Insertar filas en la base de datos ... 682
Borrar filas en la base de datos ... 685
Problemas de concurrencia ... 689
El seguimiento de cambios ... 695
CODE FIRST: UN NUEVO MODELO DE TRABAJO ... 700
Aplicando Code First ... 702
Definir el modelo de entidades ... 702
Definir el contexto de objetos ... 703
Anotaciones en datos y convenciones predeterminadas ... 704
Cadena de conexión ... 705
Generar la base de datos... 707
Validación de entidades ... 710
XVIII
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Interfaz fluida ... 712
Code First desde una base de datos existente ... 713
Cadena de conexión ... 715
Contexto de objetos... 715
El modelo de entidades ... 716
Acceder a los datos ... 717
EJERCICIOS RESUELTOS ... 718
EJERCICIOS PROPUESTOS ... 720
PARTE 4. APLICACIONES PARA INTERNET ... 721
CAPÍTULO 15. ASP.NET ... 723
ASP.NET ... 725
Conceptos básicos de ASP.NET ... 726
Páginas web ASP.NET ... 727
Controles HTML ... 728
Controles de servidor web ... 729
Presentación del texto ... 730
Controles de entrada ... 730
Envío y devolución ... 732
Exploración ... 733
Controles de diseño ... 733
Selección de fechas ... 733
Controles con enlaces a datos ... 734
Controles de validación ... 734
Un ejemplo de diseño de una página web ASP.NET ... 735
Software para el desarrollo de aplicaciones ASP.NET ... 737
Componentes de una página web ASP.NET ... 739
¿Cómo se publica una aplicación web? ... 741
Crear un directorio virtual ... 742
Convertir la aplicación en una aplicación web de IIS ... 744
Seguridad asociada con una carpeta ... 746
Modelo de ejecución de una página web ASP.NET ... 747
Lógica de negocio ... 749
Enlaces de datos en ASP.NET ... 753
Expresiones de enlace de datos ... 753
Controles de lista enlazados a datos ... 754
Modelo de enlace de ASP.NET ... 757
GridView ... 759
Seleccionar datos ... 761
CONTENIDO XIX
Insertar datos (FormView) ... 765
Estado del modelo y validación ... 767
Asistente para publicar un proyecto web ASP.NET ... 768
CAPÍTULO 16. FORMULARIOS WEB ... 773
APLICACIÓN WEB ASP.NET ... 774
Crear la capa de acceso a datos ... 778
Añadir un nuevo formulario web ... 780
Descripción de un formulario web ASP.NET ... 781
Agregar controles y texto a la página ... 782
Ciclo de vida de una página ... 784
Modelo de eventos de ASP.NET ... 787
Añadir los controladores de eventos ... 787
Obtener acceso a la base de datos ... 790
CONTROLES DE VALIDACIÓN ... 792
HERRAMIENTA DE PRECOMPILACIÓN ASP.NET ... 796
PROCESAMIENTO DE FORMULARIOS ... 798
Formato de la petición HTTP ... 798
Petición HTTP get ... 799
Petición HTTP post ... 800
Respuestas en el protocolo HTTP ... 801
Contexto de un formulario web... 801
Redireccionar una solicitud a otra URL ... 803
ESTADO DE UNA PÁGINA ASP.NET ... 803
Administración de estado en el cliente ... 804
Cookies ... 804
Cadenas de consulta ... 806
Campos de formulario ocultos ... 807
Estado de vista ... 807
Administración de estado en el servidor ... 809
Estado de aplicación ... 810
Estado de sesión ... 810
Bases de datos ... 811
MEJORANDO EL RENDIMIENTO EN EL SERVIDOR ... 812
Almacenamiento en la caché de resultados ... 812
Configurar el almacenamiento en caché a nivel de página ... 813
Actualización dinámica de fragmentos de una página en caché ... 814
Configurar el almacenamiento en caché por programación ... 815
Almacenamiento en caché de datos procedentes de SQL Server ... 816
Reducir la información hacia y desde el servidor ... 817
XX
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
SQL y desarrollo web ... 820
Control SqlDataSource ... 822
Responder a los eventos ... 826
LINQ y desarrollo web ... 828
Control EntityDataSource ... 829
Responder a los eventos ... 835
Generar la consulta Select mediante código ... 836
Realizar cambios en los datos ... 838
Actualizar y eliminar filas en la base de datos ... 839
Controlar los errores en una página ASP.NET ... 841
Insertar filas en la base de datos ... 841
MODELO DE ENLACE DE ASP.NET ... 847
Realizar cambios en los datos ... 852
Actualizar y eliminar filas en la base de datos ... 852
Controlar los errores en una página ASP.NET ... 855
Insertar filas en la base de datos ... 855
Capa de la lógica de negocio ... 860
Paginación, ordenación y filtrado ... 863
EJERCICIOS PROPUESTOS ... 869
CAPÍTULO 17. SERVICIOS WEB ... 871
Integrar un servicio web en una aplicación ... 872
SERVICIOS WCF ... 873
MODELO DE PROGRAMACIÓN DE WCF ... 874
Implementar un servicio WCF ... 875
Definir un contrato ... 876
Configuración del servicio WCF ... 882
Implementar un cliente WCF ... 884
Configuración del cliente WCF ... 888
Obtener acceso al servicio web ... 888
Ejecución asíncrona ... 890
Seguridad en WCF ... 893
SERVICIOS WEB Y LINQ ... 894
Arquitectura de N capas lógicas y N niveles físicos ... 895
Crear la base de datos ... 896
Crear el servicio WCF ... 897 Cliente WCF ... 904 Llenar la lista ... 907 Mostrar datos ... 908 Actualizar datos ... 909 Cambiar foto ... 909
CONTENIDO XXI
Agregar datos ... 910
Borrar datos ... 911
Errores inesperados ... 911
EJERCICIOS PROPUESTOS ... 912
CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET ... 919
ARQUITECTURA ASP.NET ... 920
CICLO DE VIDA DE UNA APLICACIÓN ASP.NET ... 921
GRUPOS DE APLICACIONES EN IIS ... 922
AUTENTICACIÓN DE WINDOWS ... 923
AUTORIZACIÓN ... 930
SUPLANTACIÓN DE IDENTIDAD ... 932
AUTENTICACIÓN MEDIANTE FORMULARIOS ... 933
CONTROLES PARA INICIO DE SESIÓN ... 938
SERVICIO DE SUSCRIPCIONES... 951
SEGURIDAD EN LA TRANSMISIÓN DE DATOS ... 958
Criptografía simétrica ... 959
Criptografía asimétrica ... 959
AUTENTICACIÓN USANDO CERTIFICADOS ... 961
Instalar un certificado SSL en IIS 7.0 o superior ... 963
Certificado de cliente rechazado ... 968
CAPÍTULO 19. PÁGINAS MAESTRAS ... 969
ESTRUCTURA DE UNA PÁGINA MAESTRA ... 969
Controles de usuario web ... 974
Mejorar el aspecto de la interfaz ... 979
Temas y máscaras en ASP.NET ... 980
Perfiles ... 983 EJERCICIOS RESUELTOS ... 987 Base de datos ... 988 Cliente web ... 992 CAPÍTULO 20. AJAX ... 1001 FUNDAMENTOS DE AJAX ... 1003 XMLHttpRequest ... 1004
AJAX con ASP.NET ... 1012
GENERACIÓN DE CÓDIGO JAVASCRIPT ... 1014
XXII
ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Vincular un evento con una función JavaScript ... 1015 Inyectar código JavaScript desde el lado del servidor ... 1017 ASP.NET AJAX ... 1018 Crear un sitio web ASP.NET AJAX ... 1019 Clase ScriptManager ... 1020 Clases ScriptManager y ScriptManagerProxy ... 1028 Clase UpdatePanel ... 1028 Clase AsyncPostBackTrigger ... 1030 Clase UpdateProgress... 1031 Cancelar una llamada asíncrona ... 1033 Clase Timer ... 1034 Servicios web ... 1034 Métodos de página ... 1038 EJERCICIOS RESUELTOS ... 1040
PARTE 5. ACERCA DEL MATERIAL ADICIONAL
Y DE LOS APÉNDICES ... 1043
HERRAMIENTAS DE DESARROLLO ... 1045 PÁGINAS WEB ... 1061 INTERNACIONALIZACIÓN ... 1093 .NET PARA LINUX ... 1103 ÍNDICE ... 1105
PRÓLOGO
Visual Basic es hoy el lenguaje de programación más popular del mundo. Desde que Microsoft liberó Visual Basic 1.0 en 1991 han tenido lugar muchos cambios. Visual Basic 1.0 revolucionó la forma de desarrollar software para Windows; desmitificó el proceso de desarrollo de aplicaciones con interfaz gráfica de usua-rio y abrió este tipo de programación a las masas. En sus posteusua-riores versiones, Visual Basic ha continuado proporcionando nuevas características que facilitaron la creación de aplicaciones para Windows cada vez más potentes; por ejemplo, la versión 3.0 introdujo el control de datos para facilitar el acceso a bases de datos, y la versión 4.0 mejoró y potenció este acceso con los objetos DAO. Con la apari-ción de Windows 95, Microsoft liberó Visual Basic 4.0 que abrió la puerta al desarrollo de aplicaciones de 32 bits y a la creación de DLL. La versión 5.0 mejo-ró la productividad con la incorporación de la ayuda inteligente y la introducción de los controles ActiveX. Posteriormente la versión 6.0 nos introdujo en la pro-gramación de Internet con las aplicaciones DHTML y el objeto WebClass. Des-pués dispusimos de Visual Basic .NET que vino a revolucionar el mundo de las comunicaciones permitiendo escribir aplicaciones escalables para Internet. Siguie-ron Visual Basic 2005, 2008, 2010 y ahora Visual Basic 2012, una evolución del lenguaje Visual Basic, que se diseñó para generar aplicaciones con seguridad de tipos y orientadas a objetos de manera productiva. Esta generación de Visual Ba-sic continúa la tradición de ofrecer una manera rápida y fácil de crear aplicaciones basadas en .NET Framework.Visual Basic .NET, después Visual Basic 2005, 2008, 2010 y ahora Visual Basic 2012, cambian la idea de programar de las versiones iniciales. Ahora se re-quiere una programación orientada a objetos, lo que obligará al desarrollador a programar de forma ordenada, con unas reglas metodológicas de programación análogas a las de otros lenguajes de programación orientados a objetos como C++, C# o Java por citar algunos de los más utilizados.
XXIV ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
La palabra “Visual” hace referencia, desde el lado del diseño, al método que se utiliza para crear la interfaz gráfica de usuario si se dispone de la herramienta adecuada (con Microsoft Visual Studio se utiliza el ratón para arrastrar y colocar los objetos prefabricados en el lugar deseado dentro de un formulario) y desde el lado de la ejecución, al aspecto gráfico que toman los objetos cuando se ejecuta el código que los crea, objetos que formarán la interfaz gráfica que el usuario de la aplicación utiliza para acceder a los servicios que ésta ofrece. La palabra “Basic” hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction
Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en
la historia de la informática. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora está soportado por una biblioteca orientada a objetos di-rectamente relacionada con la interfaz gráfica de Windows. Y “NET” hace refe-rencia al ámbito donde operarán nuestras aplicaciones web (Network - red).
Resumiendo, Visual Basic es un lenguaje orientado a objetos seguro y ele-gante que permite a los desarrolladores construir un amplio rango de aplicaciones seguras y robustas que se ejecutan sobre .NET Framework. .NET Framework (que incluye entre otras cosas la biblioteca básica de .NET y el compilador Visual Ba-sic) junto con otros componentes de desarrollo, como ASP.NET (formularios web y servicios web) y ADO.NET, forman un paquete de desarrollo denominado
Mi-crosoft Visual Studio que podemos utilizar para crear aplicaciones Windows
tra-dicionales (aplicaciones de escritorio que muestren una interfaz gráfica al usuario) y aplicaciones para la Web. Para ello, este paquete proporciona un editor de códi-go avanzado, diseñadores de interfaces de usuario apropiados, depurador integra-do y muchas otras utilidades para facilitar un desarrollo rápiintegra-do de aplicaciones.
Para quién es este libro
Este libro está pensado para aquellas personas que quieran aprender a desarrollar aplicaciones que muestren una interfaz gráfica al usuario, aplicaciones para acce-so a bases de datos y para Internet (páginas web). Para ello, ¿qué debe hacer el lector? Pues simplemente leer ordenadamente los capítulos del libro, resolviendo cada uno de los ejemplos que en ellos se detallan.
Evidentemente, no vamos a enseñar a programar aquí, por eso es necesario tener algún tipo de experiencia con un lenguaje de programación orientado a obje-tos (Visual Basic, C#, Java, etc., son lenguajes orientados a objeobje-tos). Haber pro-gramado en .NET y con Visual Basic sería lo ideal, así como tener conocimientos de HTML y XML. Estos requisitos son materia de mis otros libros Microsoft
Vi-sual Basic - Lenguaje y aplicaciones y Microsoft ViVi-sual Basic - Curso de pro-gramación, ambos editados también por RA-MA y Alfaomega Grupo Editor.
PRÓLOGO XXV
Microsoft Visual Basic - Lenguaje y aplicaciones se centra en la programa-ción básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una intro-ducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para Internet, y Microsoft Visual Basic - Curso de programación cubre la programa-ción básica (expuesta en menor medida en el libro anterior) y la programaprograma-ción orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, espacios de nombres, excepciones, etc.; después, utilizando la POO, añade otros temas co-mo estructuras dinámicas de datos, algoritco-mos de uso común, hilos (programación concurrente), etc. Éste sí que es un libro de programación con Visual Basic en to-da su extensión. Puede ver más detalles de cato-da uno de ellos en mi web:
www.fjceballos.es.
Cómo está organizado el libro
El libro se ha estructurado en 20 capítulos más algunos apéndices que a continua-ción se relacionan. Los capítulos 1 y 2 nos introducen en .NET y en el desarrollo de aplicaciones de escritorio. Los capítulos 3 al 11 nos enseñan a desarrollar apli-caciones de escritorio que muestran una interfaz de ventanas al usuario. Los capí-tulos 12 al 14 cubren el enlace a datos, el acceso a bases de datos (ADO.NET), el lenguaje de consultas integrado (LINQ) y el acceso a bases de datos con Entity Framework. Y los capítulos 15 al 20 nos enseñan cómo desarrollar aplicaciones para Internet (ASP.NET) a base de formularios web, servicios web WCF y AJAX.
CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET CAPÍTULO 2. MI PRIMERA APLICACIÓN
CAPÍTULO 3. APLICACIÓN WINDOWS FORMS CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO CAPÍTULO 7. TABLAS Y ÁRBOLES
CAPÍTULO 8. DIBUJAR Y PINTAR
CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES
CAPÍTULO 11. PROGRAMACIÓN CON HILOS
CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS CAPÍTULO 13. ACCESO A UNA BASE DE DATOS
CAPÍTULO 14. LINQ CAPÍTULO 15. ASP.NET
CAPÍTULO 16. FORMULARIOS WEB CAPÍTULO 17. SERVICIOS WEB
CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET CAPÍTULO 19. PÁGINAS MAESTRAS
CAPÍTULO 20. AJAX
APÉNDICE A. HERRAMIENTAS DE DESARROLLO APÉNDICE B. PÁGINAS WEB
APÉNDICE C. INTERNACIONALIZACIÓN APÉNDICE D. .NET PARA LINUX
XXVI ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Qué se necesita para utilizar este libro
Este libro ha sido escrito utilizando el paquete Microsoft .NET Framework
Softwa-re Development Kit (SDK) versión 4.5 que forma parte del entorno de desarrollo Microsoft Visual Studio 2012 que incluye todo lo necesario para escribir, construir,
verificar y ejecutar aplicaciones .NET. Por lo tanto, basta con que instale en su má-quina Microsoft Visual Studio 2012, o superior, en cualquiera de sus versiones o, como alternativa, descargue desde http://www.microsoft.com/express/ los paquetes
Visual Studio Express 2012 for Windows Desktop y for Web e instálelos
(opcio-nalmente puede instalar también SQL Server 2012 Express, caso del autor).
Nota: para probar las aplicaciones web se recomienda instalar el servidor de aplicaciones IIS (Internet Information Services) que incluye Windows (Inicio >
Panel de control > Agregar y quitar programas > Windows). Esto tiene que
ha-cerlo antes de instalar Microsoft Visual Studio 2012 o Visual Studio Express 2012
for Web.
Sobre los ejemplos del libro
El código fuente de todos los ejemplos del libro podrá descargarse, según se indi-ca en los apéndices, de la web www.ra-ma.es desde la página web correspondiente al libro.
Agradecimientos
He recibido ayuda de algunas personas durante la preparación de este libro y, por ello, les estoy francamente agradecido. También deseo expresar mi agradecimien-to a Microsoft Ibérica por poner a mi disposición, en particular, y de agradecimien-todos los lec-tores, en general, el software que el estudio de esta obra requiere.
Francisco Javier Ceballos Sierra
P A R T E
Introducción
Introducción a Microsoft .NET
Mi primera aplicación
P A R T E
Interfaces
gráficas
Aplicación Windows Forms
Introducción a Windows Forms
Menús y barras de herramientas
Controles y cajas de diálogo
Tablas y árboles
Dibujar y pintar
Interfaz para múltiples documentos
Construcción de controles
P A R T E
Acceso a datos
Enlace de datos en Windows Forms
Acceso a una base de datos
P A R T E
Aplicaciones para Internet
ASP.NET
Formularios web
Servicios web
Seguridad de aplicaciones ASP.NET
Páginas maestras
P A R T E
Acerca del material adicional
Herramientas de desarrollo
Páginas web
Internacionalización
.NET para Linux
Índice
APÉNDICE A
F.J.Ceballos/RA-MA
HERRAMIENTAS DE DESARROLLO
Cuando se utiliza un entorno de desarrollo integrado (EDI), lo primero que hay que hacer una vez instalado es asegurarse de que las rutas donde se localizan las herramientas, las bibliotecas, la documentación y los ficheros fuente hayan sido establecidos; algunos EDI sólo requieren la ruta donde se instaló el compilador. Este proceso normalmente se ejecuta automáticamente durante el proceso de ins-talación de dicho entorno. Si no es así, el entorno proporcionará algún menú con las órdenes apropiadas para realizar dicho proceso. Por ejemplo, en los EDI que se presentan a continuación las rutas a las que nos referimos quedan establecidas du-rante la instalación de los mismos.VISUAL STUDIO
Visual Studio proporciona una variedad de herramientas tanto para desarrollado-res individuales como para equipos de desarrollo.
http://www.microsoft.com/express/
Ediciones Visual Studio Express
Es la nueva línea de productos que expanden Visual Studio ofreciendo herramien-tas ligeras y sencillas de aprender y de usar para aficionados, entusiasherramien-tas y apren-dices que quieren crear sitios Web y aplicaciones para Windows. Su descarga es gratuita y dependiendo del tipo de aplicación a desarrollar optaremos por una u otra herramienta de desarrollo de las siguientes:
Visual Studio Express for Web. Visual Studio Express for Windows 8.
1046 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Visual Studio Express for Windows Desktop. Visual Studio Express for Windows Phone. Visual Studio Team Foundation Server Express.
Ediciones de Visual Studio para profesionales
Visual Studio en sus versiones professional, premium y ultimate, ofrece una fle-xible herramienta de desarrollo para desarrolladores de aplicaciones de línea de negocio o programadores ocasionales que estén construyendo aplicaciones móvi-les, basadas en Windows o para la Web, soluciones sobre Microsoft Office Sys-tem utilizando Excel, Word e InfoPath, y con herramientas de software de ciclo de vida productivas, integradas y extensibles que permiten a las empresas reducir la complejidad en la creación de soluciones orientadas a servicios. La utilización de estas versiones requiere comprar una licencia.
APLICACIÓN DE CONSOLA
En el capítulo 2 vimos una introducción al desarrollo de aplicaciones con interfaz gráfica de usuario, pero no abordamos el desarrollo de aplicaciones de consola que en ocasiones puede ser útil. Veamos un ejemplo a continuación utilizando cualquiera de las ediciones de Visual Studio.
Para editar y ejecutar el programa HolaMundo utilizando cualquiera de las ediciones de Visual Studio, los pasos a seguir son los siguientes:
1. Partiendo de la página de inicio de MS Visual Visual Basic Express, hacemos clic en Nuevo proyecto... para crear un proyecto nuevo, o bien ejecutamos la orden Archivo > Nuevo proyecto. Esta acción hará que se visualice una ven-tana que mostrará los tipos de plantillas que puede utilizar; la elección de una u otra dependerá del tipo de aplicación que deseemos construir. La figura si-guiente muestra esta ventana:
APÉNDICE A: ENTORNOS DE DESARROLLO 1047
Para que la ventana anterior muestre la lista Ubicación y la caja Nombre de la
solución tiene que habilitar, si no lo está, la opción “Guardar nuevos
proyec-tos al crearlos”. Para ello, ejecute la orden Herramientas > Opciones >
Pro-yectos y soluciones y seleccione esta opción en la ventana que se visualiza:
Para nuestro ejemplo, elegimos la plantilla “Aplicación de consola”. Después, especificamos el nombre del proyecto y su ubicación; observe que el proyecto será creado en una carpeta con el mismo nombre. A continuación pulsamos el botón Aceptar y obtendremos el esqueleto del proyecto de acuerdo con la plantilla seleccionada. Para cambiar el nombre asignado al fichero .vb, hace-mos clic sobre Module1.vb y utilizando el botón derecho del ratón,
seleccio-1048 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
namos del menú contextual que se visualiza la orden Cambiar nombre; tam-bién podemos hacer este cambio a través de la ventana de propiedades.
Si necesitáramos añadir un fichero nuevo a este proyecto, haríamos clic con el botón derecho del ratón sobre el nombre del proyecto y seleccionaríamos
Agregar > Nuevo elemento. Después, elegiríamos el tipo de elemento que
deseamos añadir y, finalmente, haríamos clic en el botón Agregar.
2. A continuación editamos el código que compone el programa. Después, antes de compilar la aplicación, podemos verificar que se trata de una aplicación de consola: Proyecto > Propiedades de HolaMundo > Aplicación > Tipo de
APÉNDICE A: ENTORNOS DE DESARROLLO 1049
3. Para compilar el programa, ejecutamos la orden Generar HolaMundo del me-nú Generar. Finalmente, para ejecutar el programa seleccionamos la orden
Iniciar sin depurar del menú Depurar, o bien pulsamos las teclas Ctrl+F5.
También puede ejecutar el programa seleccionando la orden Iniciar
depura-ción del menú Depurar, o bien pulsando la tecla F5. Los resultados de la
compilación se muestran en la ventana Resultados. La acción de ejecutar el programa acarrea también su compilación si fuera necesario.
DEPURAR UNA APLICACIÓN
¿Por qué se depura una aplicación? Porque los resultados que estamos obteniendo con la misma no son correctos y no sabemos por qué. El proceso de depuración consiste en ejecutar la aplicación paso a paso, indistintamente por sentencias o por métodos, con el fin de observar el flujo seguido durante su ejecución, así como los resultados intermedios que se van sucediendo, con la finalidad de detectar las anomalías que producen un resultado final erróneo.
Por ejemplo, para depurar una aplicación utilizando el depurador del entorno de desarrollo de Visual Studio, ejecute la orden Depurar > Paso por instrucciones y utilice las órdenes del menú Depurar o los botones correspondientes de la barra de herramientas (para saber el significado de cada botón, ponga el puntero del ra-tón sobre cada uno de ellos).
1050 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
De forma resumida, las órdenes disponibles para depurar una aplicación son las siguientes:
Iniciar o F5. Inicia la ejecución de la aplicación en modo depuración hasta encontrar un punto de parada o hasta el final si no hay puntos de parada. Alternar puntos de interrupción o F9. Pone o quita un punto de parada en la
línea sobre la que está el punto de inserción.
Detener depuración o Mayús+F5. Detiene el proceso de depuración.
Paso a paso por instrucciones o F11. Ejecuta la aplicación paso a paso. Si la línea a ejecutar coincide con una llamada a un método definido por el usuario, dicho método también se ejecutará paso a paso.
Paso a paso por procedimientos o F10. Ejecuta la aplicación paso a paso. Si la línea a ejecutar coincide con una llamada a un método definido por el usua-rio, dicho método no se ejecutará paso a paso, sino de una sola vez.
Paso a paso para salir o Mayús+F11. Cuando un método definido por el usuario ha sido invocado para ejecutarse paso a paso, utilizando esta orden se puede finalizar su ejecución en un solo paso.
Ejecutar hasta el cursor o Ctrl+F10. Ejecuta el código que hay entre la últi-ma línea ejecutada y la línea donde se encuentra el punto de inserción. Inspección rápida o Ctrl+Alt+Q. Visualiza el valor de la variable que está
ba-jo el punto de inserción o el valor de la expresión seleccionada (sombreada). Para ejecutar la aplicación en un solo paso, seleccione la orden Iniciar sin
de-purar (Ctrl+F5) del menú Dede-purar.
Además de la barra de herramientas Depurar, dispone también de la barra de herramientas Generar reducida que se muestra en la figura siguiente:
Esta barra de herramientas pone a su disposición las órdenes siguientes: Generar aplicación. Compila la aplicación y genera el fichero ejecutable
APÉNDICE A: ENTORNOS DE DESARROLLO 1051
Generar solución. Compila y genera todos los proyectos que componen la so-lución.
Cancelar. Detiene el proceso de compilación o de generación del fichero eje-cutable.
ARGUMENTOS EN LA LÍNEA DE ÓRDENES
Si ejecuta una aplicación desde el EDI que requiere argumentos en la línea de ór-denes, ¿dónde se introducen estos argumentos? Haga clic sobre el nombre del proyecto con el botón derecho del ratón y seleccione la orden Propiedades. Des-pués, en la ventana que se visualiza, seleccione el panel Depurar y escriba los ar-gumentos según puede observar en la figura:
CONECTAR A LOCALDB O A SQLEXPRESS
El servidor de base de datos que se instala con Visual Studio es diferente depen-diendo de la versión de Visual Studio que haya instalado:
Si se utiliza Visual Studio 2010 se creará una base de datos SQL Express. Si se utiliza Visual Studio 2012 se creará una base de datos LocalDB. Esto no
significa que no pueda utilizar una base de datos SQL Express.
SQL Server Express
SQL Server 2012 Express es el motor de base de datos gratuito, potente, pero sen-cillo, que se integra perfectamente con el resto de productos Express. Se trata de
1052 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
una versión aligerada de la nueva generación de SQL Server que puede descargar gratuitamente del sitio web de Microsoft.
Este producto tiene el mismo motor de base de datos que toda la familia SQL Server y utiliza el mismo lenguaje SQL. Otra característica interesante es la movi-lidad de las bases de datos de un servidor a otro con XCOPY. Con esta utimovi-lidad podemos mover un fichero MDF de una máquina a otra a cualquier ubicación dentro de su sistema de ficheros, quedando la base de datos movida lista para tra-bajar. Para utilizar esta base de datos deberemos hacer uso de la opción
Attach-DBFilename en la cadena de conexión, según se muestra a continuación:
connectionString="Data Source=.\sqlexpress;Initial Catalog=; Integrated Security=True;AttachDBFileName=C:\bd\bd_editorial.mdf"
La entrada Data Source especifica el servidor de base de datos que vamos a utilizar y AttachDBFilename, la localización del fichero de base de datos. Ob-sérvese que la entrada Initial Catalog está vacía.
Para crear una base de datos utilizando SQL Server Express tiene que hacerlo desde la línea de órdenes (véase también el capítulo titulado Acceso a una base de
datos). Para iniciar la consola que le permita trabajar contra el motor de base de
datos SQL Server, localice en su instalación el fichero SQLCMD.EXE, cambie a ese directorio y ejecute la orden:
SQLCMD -S nombre-del-ordenador\SqlExpress
Una vez iniciada la consola, puede escribir órdenes SQL a continuación del símbolo “>”. Para ejecutar un bloque de sentencias escriba GO. Para salir, escriba QUIT. Por ejemplo, el guión que muestra la figura siguiente crea la base de datos
APÉNDICE A: ENTORNOS DE DESARROLLO 1053
tfnos con una tabla telefonos, añade tres filas a la tabla y, finalmente, selecciona
todas las filas de la tabla con todas sus columnas:
Para ver la relación de órdenes que puede utilizar a través de la aplicación
SQLCMD ejecute la orden help como se muestra en la figura siguiente. Obsérvese
1054 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
SQL Server 2012 Express LocalDB
Microsoft SQL Server 2012 Express LocalDB es un modo de ejecución de SQL Server Express destinado a los desarrolladores de programas con el fin de sustituir la característica de instancias de usuario de SQL Server Express, que ha quedado obsoleta. La instalación de LocalDB copia un conjunto de archivos mínimo nece-sario para iniciar el motor de base de datos de SQL Server. Una instancia de SQL Server Express LocalDB se puede administrar con la herramienta de línea de ór-denes SqlLocalDB.exe.
SQL SERVER MANAGEMENT STUDIO EXPRESS
Si instaló SQL Server, habrá comprobado que no dispone de una herramienta de administración de bases de datos. Por tal motivo, Microsoft también ha desarro-llado una nueva aplicación para gestionar bases de datos que puede obtener de forma gratuita de Internet en la dirección especificada a continuación:
http://www.microsoft.com/es-es/downloads
Esta aplicación presenta una interfaz gráfica, muy sencilla de utilizar, para realizar tareas típicas como crear bases de datos, gestionar las tablas de la base, los procedimientos almacenados, crear usuarios, etc.
Cuando inicie SQL Server Management Studio Express, le serán solicitados el nombre del servidor de bases de datos, el tipo de autenticación, y el usuario y la contraseña sólo si eligió autenticación SQL Server:
Una vez realizada la conexión con el gestor de bases de datos, le será mostra-da la ventana de la figura siguiente. Seleccione en la lista del panel de la izquiermostra-da la base de datos con la que desea trabajar, haga clic en el botón Nueva consulta de
APÉNDICE A: ENTORNOS DE DESARROLLO 1055
la barra de herramientas y, después, escriba en el mismo las sentencias SQL que desee ejecutar. Para ejecutar una sentencia SQL haga clic en el botón Ejecutar de la barra de herramientas.
CREAR UNA BASES DE DATOS
Si no instaló SQL Server 2012 Express puede crear una nueva base de datos local al proyecto siguiendo los pasos especificados a continuación. Haga clic con el bo-tón secundario del rabo-tón sobre el nombre del proyecto para agregar un nuevo ele-mento y seleccione Base de datos basada en servicio. A continuación se abrirá el asistente para la configuración de orígenes de datos y, como no hay ningún objeto de base de datos disponible porque la base de datos es nueva, haga clic en
Cance-lar para crear y agregar la base de datos vacía al proyecto. A continuación puede
continuar añadiendo las tablas, los datos de las tablas, las relaciones entre las ta-blas, etc. Puede ver un ejemplo en el apartado Ejercicios resueltos del capítulo
Acceso a una base de datos.
Si instaló SQL Server 2012 Express (nombre predeterminado del servidor:
1056 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
de datos utilizando el explorador de bases de datos. Para ello, abra el Explorador
de bases de datos (Ver > Otras ventanas > Explorador de bases de datos). Haga
clic con el botón secundario del ratón sobre el nodo Conexiones de datos y selec-cione Agregar conexión. Elija como origen de datos Microsoft SQL Server. Se vi-sualizará la ventana siguiente:
Escriba el nombre de la base de datos y haga clic en Aceptar. Se visualizará el mensaje La base de datos ‘bd_telefonos’ no existe. ¿Desea intentar crearla?:
Haga clic en Sí. Observará en el explorador de bases de datos que
APÉNDICE A: ENTORNOS DE DESARROLLO 1057
El paso siguiente es añadir las tablas. Despliegue el árbol correspondiente a la nueva conexión, haga clic con el botón secundario del ratón sobre el nodo Tablas y agregue una nueva tabla. Después complete el proceso de creación de la misma.
Puede ver un ejemplo de este proceso en el apartado Ejercicios resueltos del capítulo Acceso a una base de datos.
INSTALACIÓN DE ASP.NET EN WINDOWS
ASP.NET queda instalado automáticamente cuando instaló Visual Studio o, en su defecto, Visual Studio Express for Web. Ahora bien, para crear y ejecutar aplica-ciones para Internet necesitará un servidor de aplicaaplica-ciones, en el caso de la plata-forma Windows éste es IIS (Internet Inplata-formation Server). La instalación de IIS debe ser anterior a la de .NET Framework. Si no se hizo así, ASP.NET no estará habilitado en IIS y no podremos realizar aplicaciones ASP.NET. En este caso, la solución es registrar manualmente ASP.NET en IIS.
Registro manual de ASP.NET en IIS
Para registrar manualmente ASP.NET en IIS, abra una ventana de consola, sitúese en la carpeta C:\WINDOWS\Microsoft.NET\Framework\vx.x.xxxxx y ejecute:
aspnet_regiis.exe -i -enable
Esto habilitará IIS para la ejecución de ASP.NET, registrará las extensiones de ASP.NET (aspx, amsx, asax, etc.) y ya podremos empezar a trabajar con ASP.NET.
Si echa una ojeada a todas las opciones disponibles (aspnet_regiis.exe -help) podrá observar algunas muy interesantes, como -c, que instala las secuencias de órdenes del cliente de esta versión en el subdirectorio aspnet_client de todos los directorios de sitios IIS.
1058 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Si la operación anterior no solucionó el problema, pruebe a reparar la instala-ción actual a partir del material adicional del producto. Si esto tampoco soluciona-ra el problema, sólo queda desinstalar el producto y volverlo a instalar.
DEPURAR CÓDIGO JAVASCRIPT
En una aplicación ASP.NET que incluya código JavaScript (véase el capítulo 20) es posible utilizar el depurador de Visual Studio o de Visual Web Developer para depurar ese código.
Para poder depurar código JavaScript, el primer paso es habilitar esta opción en el navegador. En el caso de Internet Explorer, seleccione Herramientas >
Op-ciones de Internet > OpOp-ciones avanzadas y asegúrese de que no esté seleccionada
la opción “Deshabilitar la depuración de scripts”:
Cumplido el requisito anterior, sólo queda poner en el código JavaScript a de-purar la sentencia debugger. De esta forma, cuando inicie la depuración de la aplicación y el flujo de ejecución pase por esta sentencia, la ejecución se detendrá y podrá continuarla paso a paso.
function CargarTabla(resultado, contexto) {
debugger; var elementos =
APÉNDICE A: ENTORNOS DE DESARROLLO 1059 LoadXmlFromString(resultado).getElementsByTagName("string"); TablaResultados = document.getElementById("TablaDeResultados"); if (TablaResultados != null) { // ...
DESARROLLO
Para el desarrollo de una aplicación, lo habitual es crear un modelo de clases si-guiendo algún patrón, por ejemplo el patrón de arquitectura de software
Model-View-ViewModel (MVVM) utilizado por WPF y Silverlight, que es un sucesor del
ampliamente conocido Model-View-Controller (MVC) utilizado por ASP.NET MVC, nacido del entorno Smalltalk a finales de los años 70.
En MVC la aplicación se compone de tres tipos de objetos que tienen respon-sabilidades distintas con el objetivo de separar la capa visual de su correspondien-te programación y acceso a datos:
El modelo. Es el responsable de los datos y de la lógica de negocio de la apli-cación.
La vista. Es el responsable de mostrar los datos al usuario y de permitir su ma-nipulación desde y hacia el modelo.
El controlador. Es el responsable de implementar las respuestas a los eventos o acciones de los usuarios e invocar peticiones al modelo y probablemente a la vista.
Con el modelo MVC cada tipo de objeto es responsable de una cosa, lo que simplifica el desarrollo, comprensión y la realización de pruebas del código fuen-te. Además, es fácil remplazar las vistas, o tener más de una actuando sobre los mismos datos.
En el caso de las aplicaciones Silverlight, el .NET Framework dispone de la capacidad de usar enlaces (bindings) para transferir directamente datos desde el controlador hacia la vista, por lo que el controlador solo es responsable de
imple-1060 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
mentar el comportamiento de esta. En este caso, el controlador se denomina mo-delo de vista (view model), dando origen al patrón MVVM donde:
El modelo. Representa los datos o información con la que se trabaja y en la mayoría de los casos la lógica de negocio asociada. Debe encontrarse comple-tamente aislado de la interfaz de usuario.
La vista. Representa la información en la interfaz de usuario y es capaz de aceptar la entrada de datos del usuario a través de controles, teclado, ratón u otros elementos en forma de controles desde la interfaz gráfica.
El modelo-vista. Objeto que separa y aísla completamente a la vista del mode-lo, se puede pensar en este tipo de objetos como una abstracción de la vista, que además hace las funciones de intermediario, transformando los datos reci-bidos del modelo en datos aptos para la vista y viceversa.
Por lo tanto MVVM comparte todos los beneficios de MVC, pero con una ventaja adicional: la simplificación que resulta de usar enlaces declarativos para transferir los datos desde y hacia el modelo a la vista.
APÉNDICE B
F.J.Ceballos/RA-MA
PÁGINAS WEB
¿Quién no ha oído hablar de Internet? La respuesta es evidente, porque donde quiera que esté oirá hablar de Internet. ¿Por qué? Porque hoy en día forma parte del mundo de los negocios y del comercio, aunque en sus inicios no fue ésta la in-tención. Hay muchas empresas que le proporcionan conexión las 24 horas del día por un precio asequible. Pero, ¿qué es Internet?, ¿qué servicios ofrece?¿QUÉ ES INTERNET?
Internet, es decir, inter-red, es una red de redes informáticas distribuidas por todo
el mundo que intercambian información entre sí mediante la familia de protocolos TCP/IP. Puede imaginarse Internet como una gran nube con ordenadores conecta-dos:
Cliente
Servidor Cliente
Internet surgió de un programa de investigación realizado por la Agencia de Proyectos de Investigación Avanzados de Defensa (DARPA) de los Estados Uni-dos sobre la conexión de redes informáticas. El resultado fue ARPANet (1969). Esta red crece y a principios de los años 80 se conecta con CSNet y MILNet, dos redes independientes, lo que se considera como el nacimiento de Internet
(Inter-1062 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
national Network of computers). También forman parte de esta red NSI (NASA Science Internet) y NSFNet (National Science Foundation Net).
Durante muchos años Internet ha servido para que muchos departamentos de investigación de distintas universidades distribuidas por todo el mundo pudieran colaborar e intercambiar información. Sólo recientemente ha comenzado a formar parte de los negocios y de nuestra vida cotidiana.
Internet ha hecho que el mundo empresarial se haya replanteado sus sistemas de comunicación internos y externos y en la mayoría de los casos los haya encau-zado vía Internet. Esto ha dado lugar a dos subpoblaciones dentro de Internet:
in-tranets y exin-tranets.
Intranet
Una intranet no es más que una red local que utiliza los mismos protocolos que Internet, independientemente de que esté o no conectada a Internet. ¿Qué ventajas tiene una intranet? Fundamentalmente dos: independencia de los proveedores ha-bituales de soluciones y una única forma de trabajar que evita tener que aprender sistemas nuevos, lo que redunda en un ahorro de formación. Por otra parte, una
intranet suele estar dotada de una velocidad bastante mayor que la habitual en
In-ternet, lo que posibilita una comunicación muy fluida, incluso, cuando se trata de flujos de información multimedia.
Terminología Internet
Desde el punto de vista físico, Internet no es una simple red, sino miles de redes informáticas que trabajan conjuntamente bajo los protocolos TCP/IP (Transmision
Control Protocol/Internet Protocol - Protocolo de Control de
Transmisiones/Pro-tocolo Internet), entendiendo por proTransmisiones/Pro-tocolo un conjunto de normas que regulan la comunicación entre los distintos dispositivos de una red. Desde el punto de vista del usuario, Internet es una red pública que interconecta universidades, centros de investigación, servicios gubernamentales y empresas.
El conjunto de protocolos de Internet está compuesto por muchos protocolos relacionados con la asociación formada por TCP e IP y relacionados con las dife-rentes capas de servicios de la red; esto es, las funciones de una red se pueden agrupar en capas de servicios de la red. Imagínese las capas como distintas esta-ciones por las que debe pasar un paquete de información cuando realiza la ruta de un ordenador a otro conectados a diferentes puntos dentro de Internet. Por ejem-plo, el protocolo TCP/IP visto desde este punto de vista puede imaginárselo de forma resumida así:
APÉNDICE B: PÁGINAS WEB 1063
Aplicación
(FTP, Telnet, Gopher, Word Wide Web) API de Windows Sockets
Transporte (TCP y UDP)
Red (IP) Enlace
(controlador de dispositivo, tarjeta de red, protocolos de control de la línea)
Entre dos capas puede haber una interfaz de programación (API) para inter-pretar los mensajes o paquetes a medida que van pasando.
Utilizar una interfaz de programación, como la API de Windows Sockets, li-bera al programador de tratar con detalles de cómo se pasan los paquetes de in-formación entre las capas inferiores.
Las capas de enlace y de red se encargan de empaquetar la información y de llevar los paquetes de un lugar a otro de la red. ¿Cómo se identifican estos luga-res? La respuesta es con direcciones de Internet que permitan identificar tanto el ordenador como el usuario, ya que un mismo ordenador puede tener dados de alta diferentes usuarios. Estas direcciones son especificadas según un convenio de
sis-tema de nombres de dominio (DNS).
Un DNS tiene el formato siguiente:
[subdominio].[subdominio].[...].dominio
Por ejemplo:
uni.alcala.es
En este ejemplo, es es el dominio, alcala es un subdominio de es, y uni un
subdominio de alcala. Algunos dominios de nivel superior son:
Dominio Cobertura
com organizaciones comerciales
edu instituciones educativas
net suministradores de servicios de red
us Estados Unidos
de Alemania es España
1064 ENCICLOPEDIA DE MICROSOFT VISUAL BASIC
Cada nombre de dominio se corresponde con una única dirección de Internet o dirección IP. Una dirección IP es un valor de 32 bits dividida en cuatro campos de 8 bits. Por ejemplo:
130.206.82.7
Para referirse a un usuario perteneciente a un determinado dominio, la sintaxis empleada es:
usuario@[subdominio].[subdominio].[...].dominio
Los programas que gestionan los nombres de dominio se denominan
servido-res de nombservido-res. Cada servidor de nombservido-res posee información completa de una
determinada zona (subconjunto de un dominio) y de otros servidores de nombres responsables de otras zonas. De esta forma, cuando llega una solicitud de infor-mación sobre la zona de la que es responsable un determinado servidor, éste sen-cillamente proporciona la información. Sin embargo, cuando llega una solicitud de información para una zona diferente, el servidor de nombres se pone en contac-to con el servidor de esa zona. Los servidores DNS constituyen la base de dacontac-tos distribuida de nombres de Internet.
La capa de transporte es responsable de la entrega fiable de los datos. En esta capa se emplean dos protocolos diferentes: TCP y UDP. TCP toma mensajes de usuario de longitud variable y los pasa al nivel de red, solicitando acuse de recibo; y UDP es similar, salvo en que no solicita acuse de recibo de los datos.
La capa de aplicación proporciona una interfaz a la aplicación que ejecuta un usuario. Dicho de otra forma, proporciona el conjunto de órdenes que el usuario utiliza para comunicarse con otros ordenadores de la red.
Existen muchos protocolos en TCP/IP. A continuación, se indican algunos bastante conocidos:
FTP (File Transfer Protocol - Protocolo de transferencia de ficheros). Copia ficheros de una máquina a otra.
Gopher. Protocolo que permite buscar y recuperar documentos mediante un sistema de menús.
POP 3 (Post Office Protocol - Protocolo de oficina de correos). Protocolo pa-ra gestionar el correo electrónico, en base a su recepción y envío posterior, entre el usuario y su servidor de correo. Con este fin son empleados también los protocolos IMAP (Internet Message Access Protocol) y HTTP (correo web).