Está en la página 1de 120

Enciclopedia de Microsoft ® Visual C#

Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET

4.ª edición

Fco. Javier Ceballos Sierra

Profesor titular de la Escuela Politécnica Superior Universidad de Alcalá

www.fjceballos.es

Javier Ceballos Sierra Profesor titular de la Escuela Politécnica Superior Universidad de Alcalá www.fjceballos.es
Enciclopedia de Microsoft Visual C# Interfaces gráficas y aplicaciones para Internet con Windows Forms y

Enciclopedia de Microsoft Visual C# Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET 4.ª 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: editorial@ra-ma.com Internet: www.ra-ma.es y www.ra-ma.com ISBN: 978-84-9964-264-2 Depósito Legal: M-xxxxx-2013 Autoedición: Fco. Javier Ceballos Filmación e impresión: Closas-Orcoyen, S.L. Impreso en España Primera impresión: octubre 2013

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

Escribir los controladores de eventos

30

VIII

ENCICLOPEDIA DE MICROSOFT VISUAL C#

Guardar la aplicación

32

Verificar la aplicación

33

Propiedades del proyecto

35

Crear soluciones de varios proyectos

35

Opciones del EDI

36

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

64

Apariencia y comportamiento

65

CONFIGURACIÓN DE UNA APLICACIÓN

66

RECURSOS DE UNA APLICACIÓN

68

ATRIBUTOS GLOBALES DE UNA APLICACIÓN

69

CICLO DE VIDA DE UNA APLICACIÓN

70

Permitir una sola instancia de la aplicación

72

Argumentos en la línea de órdenes

73

Pantalla de presentación

74

CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS

79

BIBLIOTECA DE CLASES DE WINDOWS FORMS

79

CAJAS DE TEXTO, ETIQUETAS Y BOTONES

82

Desarrollo de la aplicación

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

100

Ejemplos de expresiones regulares

100

El motor de expresiones regulares

103

MaskedTextBox

104

EJERCICIOS RESUELTOS

106

Diseño de una calculadora

106

Objetos

106

Eventos

107

Pasos a seguir durante el desarrollo

107

Diseño de la ventana y de los controles

107

Establecer una fuente

109

Color

110

Escribir el código

111

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

Diseño de una barra de estado

137

X

ENCICLOPEDIA DE MICROSOFT VISUAL C#

DESARROLLO DE UN EDITOR DE TEXTOS

138

Caja de texto multilínea

139

Diseño del editor

140

El portapapeles

142

Objeto 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ú

148

Archivo - Salir

148

Edición - Cortar

148

Edición - Copiar

149

Edición - Pegar

149

Opciones - Fuente

150

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

165

CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO

169

CAJAS DE DIÁLOGO MODALES Y NO MODALES

170

CAJAS DE MENSAJE

170

CAJAS DE DIÁLOGO PERSONALIZADAS

173

Crear una caja de diálogo

174

Mostrar una caja de diálogo

176

Introducción de datos y recuperación de los mismos

177

DIÁLOGO ACERCA DE

179

FORMULARIO PROPIETARIO

180

OTROS CONTROLES WINDOWS FORMS

181

Casillas de verificación

182

Botones de opción

186

Listas simples

191

Diseñar la lista

193

Iniciar la lista

194

Acceder a los elementos seleccionados

194

CONTENIDO XI

Colección de elementos de una lista

195

Clase CheckedListBox

196

Listas desplegables

197

Diseñar la lista

198

Iniciar la lista

199

Acceder al elemento seleccionado

199

Colección de elementos de una lista desplegable

200

Controles de rango definido

201

ScrollBar

202

TrackBar

205

ProgressBar

206

Control con pestañas

208

Gestión de fechas

209

FlowLayoutPanel

y TableLayoutPanel

210

CAJAS DE DIÁLOGO ESTÁNDAR

214

Cajas de diálogo Abrir y Guardar

215

Caja de diálogo Color

218

Caja de diálogo Fuente

219

REDIMENSIONAR UN COMPONENTE

221

TEMPORIZADORES

222

EJERCICIOS RESUELTOS

225

EJERCICIOS PROPUESTOS

236

CAPÍTULO 7. TABLAS Y ÁRBOLES

239

TABLAS

239

Arquitectura de un control DataGridView

241

Construir una tabla

242

Añadir las columnas a la tabla

243

Iniciar la tabla

244

Tamaño de las celdas

250

Acceder al valor de la celda seleccionada

251

ÁRBOLES

252

Arquitectura de un árbol

253

Construir un árbol

253

Añadir nodos a un árbol

254

Imágenes para los nodos del árbol

255

Iniciar el árbol

256

Acceder al nodo seleccionado

258

Recorrer todos los nodos del árbol

262

Añadir y borrar nodos

262

Añadir un nodo

263

XII

ENCICLOPEDIA DE MICROSOFT VISUAL C#

Borrar el nodo seleccionado

266

Borrar todos los nodos excepto la raíz

266

Personalizar el aspecto de un árbol

267

VISTAS DE UNA LISTA

267

Personalizar el aspecto de una vista

268

La colección Columns

269

Elemento de la lista

270

La colección Items

271

Un ejemplo con ListView, TreeView y SplitContainer

271

EJERCICIOS RESUELTOS

274

EJERCICIOS PROPUESTOS

290

CAPÍTULO 8. DIBUJAR Y PINTAR

291

SERVICIOS DE GDI+

293

OBJETOS DE DIBUJO BÁSICOS

294

Objeto Graphics

296

Objeto

Color

297

Objeto

Pen

298

Objeto Brush

299

Objeto Point

300

Objeto

Rectangle

300

Objeto Font

301

Objeto GraphicsPath

302

MÉTODOS DE DIBUJO

302

Líneas y rectángulos

302

Elipses y arcos

303

Tartas

304

Polígonos

304

Curvas flexibles

305

Trazados

306

Regiones

306

GRÁFICOS PERSISTENTES

309

SISTEMAS DE COORDENADAS Y TRANSFORMACIONES

311

Tipos de sistemas de coordenadas

315

Transformaciones de color

316

MOSTRAR IMÁGENES

318

Mapas de bits

318

Cargar y mostrar un mapa de bits

320

Intercambiar imágenes a través del portapapeles

326

CAMBIAR LA FORMA DEL PUNTERO DEL RATÓN

327

EJERCICIOS RESUELTOS

328

CONTENIDO XIII

EJERCICIOS PROPUESTOS

339

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

385

Verificar el control de usuario

386

EJERCICIOS RESUELTOS

388

EJERCICIOS PROPUESTOS

391

XIV

ENCICLOPEDIA DE MICROSOFT VISUAL C#

CAPÍTULO 11. PROGRAMACIÓN CON HILOS

393

ESPACIO DE NOMBRES System.Threading

394

Clase Thread

397

Resumen de los métodos y propiedades de Thread

400

Estados de un hilo

400

ACCESO A CONTROLES DESDE HILOS

401

Delegados

401

Componente BackgroundWorker

406

Ejecutar una tarea de forma asíncrona

407

Notificar el progreso a la interfaz gráfica del usuario

409

Recuperar el estado después de la finalización de la tarea

409

Cancelación anticipada

410

MECANISMOS DE SINCRONIZACIÓN

410

Objetos de sincronización

411

Secciones críticas

413

Controladores de espera

414

DETENER UN HILO DE FORMA CONTROLADA

417

EJERCICIOS RESUELTOS

420

EJERCICIOS PROPUESTOS

423

PARTE 3. ACCESO A DATOS

425

CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS

427

ASPECTOS BÁSICOS

427

Enlace de datos manual

427

Notificar cuándo cambia una propiedad

431

Enlace de datos con las clases de .NET

434

La clase Binding

435

Tipos de enlace

436

Componente BindingSource

437

Notificación de cambios en un enlace de Windows Forms

437

Crear un enlace

437

Enlaces con otros controles

439

Aplicar conversiones

439

ORÍGENES DE DATOS COMPATIBLES CON WINDOWS FORMS

444

Enlace a colecciones de objetos

446

List

447

BindingList

452

BindingSource

456

ACCEDIENDO A LOS DATOS

459

CONTENIDO XV

Ventana de orígenes de datos

462

Vinculación maestro-detalle

466

Operaciones con los datos

470

Elemento actual

470

Navegar

471

Ordenación, filtrado y búsqueda

474

BindingListView

476

Elemento actual de la vista

478

Ordenar

478

Filtrar

479

Buscar

479

Datos introducidos por el usuario

480

Error en los datos

482

Validación

483

Datos que no necesitan validación

485

CAPÍTULO 13. ACCESO A UNA BASE DE DATOS

493

SQL

494

Crear una base de datos

494

Crear una tabla

494

Escribir datos en la tabla

496

Modificar datos de una tabla

496

Borrar registros de una tabla

497

Seleccionar datos de una tabla

497

Crear una base de datos

499

Base de datos Microsoft Access

499

Base de datos Microsoft SQL Server

501

ADO.NET

502

Componentes de ADO.NET

503

Conjunto de datos

504

Proveedor de datos

506

Objeto conexión

507

Objeto orden

509

Objeto lector de datos

509

Adaptador de datos

510

Modos de conexión

512

Probando una conexión

514

Servicio de conexiones

515

ACCESO CONECTADO A UNA BASE DE DATOS

516

ATAQUES DE INYECCIÓN DE CÓDIGO SQL

519

Órdenes parametrizadas

523

XVI

ENCICLOPEDIA DE MICROSOFT VISUAL C#

Procedimientos almacenados

524

TRANSACCIONES

525

Transacción implícita TransactionScope

526

Transacciones explícitas

530

ESCRIBIR CÓDIGO INDEPENDIENTE DEL PROVEEDOR

533

CONSTRUIR COMPONENTES DE ACCESO A DATOS

539

Capa de presentación

540

Operaciones contra la base de datos

541

Objetos de negocio

542

Capa de acceso a datos

545

Capa de lógica de negocio

550

Diseño de la capa de presentación

551

Lógica de interacción con la capa de presentación

553

Desacoplar la IU del resto de la aplicación

556

Adaptar la colección de objetos

557

Capa de lógica de negocio

561

Lógica de interacción con la capa de presentación

564

Validación

566

ACCESO DESCONECTADO A UNA BASE DE DATOS

566

ASISTENTES DE VISUAL STUDIO

570

Crear la infraestructura para el acceso a la base de datos

572

Crear el conjunto de datos

577

Agregar un control rejilla al formulario

578

Código subyacente

579

Asistente para configurar orígenes de datos

581

VISTA EN DETALLE DEL CONJUNTO DE DATOS

585

Diseño del formulario

587

Vincular las cajas de texto con el conjunto de datos

588

Controles de navegación

590

Añadir, borrar y buscar datos

593

CONTROL BindingNavigator

597

DISEÑO MAESTRO-DETALLE

598

EJERCICIOS RESUELTOS

608

EJERCICIOS PROPUESTOS

627

CAPÍTULO 14. LINQ

631

RECURSOS DEL LENGUAJE COMPATIBLES CON LINQ

631

Declaración implícita de variables locales

632

Matrices de tipos definidos de forma implícita

632

Tipos anónimos

632

Propiedades autoimplementadas

633

CONTENIDO XVII

Iniciadores de objetos y colecciones

633

Métodos extensores

634

Expresiones lambda

635

El delegado Func<T , TResu >

637

Operadores de consulta

638

Árboles de expresiones lambda

640

EXPRESIONES DE CONSULTA

643

Compilación de una expresión de consulta

647

Sintaxis de las expresiones de consulta

649

Cláusula group

649

Productos cartesianos

650

Cláusula join

650

Cláusula into

651

Cláusula let

652

PROVEEDORES DE LINQ

653

ENTITY FRAMEWORK

654

MARCO DE ENTIDADES DE ADO.NET

656

Consultar un modelo de objetos

659

ACCESO A UNA BASE DE DATOS

663

Conectarse a la base de datos

664

Generar el modelo de entidades

664

Las clases de entidad y el contexto de objetos

673

Propiedades de navegación

676

Mostrar datos en una interfaz gráfica

678

Una aplicación con interfaz gráfica

679

Vincular los controles con sus orígenes de datos

680

Proveedor de datos

681

Filtros

686

Contextos de corta duración

687

REALIZAR CAMBIOS EN LOS DATOS

688

Modificar filas en la base de datos

693

Insertar filas en la base de datos

695

Borrar filas en la base de datos

699

Problemas de concurrencia

703

El seguimiento de cambios

710

CODE FIRST: UN NUEVO MODELO DE TRABAJO

715

Aplicando Code First

717

Definir el modelo de entidades

717

Definir el contexto de objetos

718

Anotaciones en datos y convenciones predeterminadas

719

Cadena de conexión

720

Generar la base de datos

722

Validación de entidades

726

XVIII

ENCICLOPEDIA DE MICROSOFT VISUAL C#

Atributos de anotación de datos

726

Interfaz fluida

727

Code First desde una base de datos existente

729

Cadena de conexión

730

Contexto de objetos

731

El modelo de entidades

732

Acceder a los datos

733

EJERCICIOS RESUELTOS

734

EJERCICIOS PROPUESTOS

737

PARTE 4. APLICACIONES PARA INTERNET

739

CAPÍTULO 15. ASP.NET

741

ASP.NET

743

Conceptos básicos de ASP.NET

744

Páginas web ASP.NET

745

Controles

HTML

746

Controles de servidor web

747

Presentación del texto

748

Controles de entrada

748

Envío y devolución

750

Exploración

751

Controles de diseño

751

Selección de fechas

751

Controles con enlaces a datos

752

Controles de validación

752

Un ejemplo de diseño de una página web ASP.NET

753

Software para el desarrollo de aplicaciones ASP.NET

755

Componentes de una página web ASP.NET

757

¿Cómo se publica una aplicación web?

759

Crear un directorio virtual

760

Convertir la aplicación en una aplicación web de IIS

762

Seguridad asociada con una carpeta

764

Modelo de ejecución de una página web ASP.NET

765

Lógica de negocio

767

Enlaces de datos en ASP.NET

771

Expresiones de enlace de datos

772

Controles de lista enlazados a datos

772

Modelo de enlace de ASP.NET

775

GridView

777

Seleccionar datos

779

CONTENIDO XIX

Actualizar y eliminar datos

780

Insertar datos (FormView)

783

Estado del modelo y validación

785

Asistente para publicar un proyecto web ASP.NET

787

CAPÍTULO 16. FORMULARIOS WEB

791

APLICACIÓN WEB ASP.NET

792

Crear la capa de acceso a datos

796

Añadir un nuevo formulario web

798

Descripción de un formulario web ASP.NET

799

Agregar controles y texto a la página

800

Ciclo de vida de una página

802

Modelo de eventos de ASP.NET

805

Añadir los controladores de eventos

805

Obtener acceso a la base de datos

808

CONTROLES DE VALIDACIÓN

810

HERRAMIENTA DE PRECOMPILACIÓN ASP.NET

814

PROCESAMIENTO DE FORMULARIOS

816

Formato de la petición HTTP

816

Petición HTTP get

817

Petición HTTP post

818

Respuestas en el protocolo HTTP

819

Contexto de un formulario web

819

Redireccionar una solicitud a otra URL

821

ESTADO DE UNA PÁGINA ASP.NET

821

Administración de estado en el cliente

822

Cookies

822

Cadenas de consulta

824

Campos de formulario ocultos

825

Estado de vista

825

Administración de estado en el servidor

828

Estado de aplicación

828

Estado de sesión

828

Bases de datos

829

MEJORANDO EL RENDIMIENTO EN EL SERVIDOR

830

Almacenamiento en la caché de resultados

830

Configurar el almacenamiento en caché a nivel de página

831

Actualización dinámica de fragmentos de una página en caché

832

Configurar el almacenamiento en caché por programación

833

Almacenamiento en caché de datos procedentes de SQL Server

834

Reducir la información hacia y desde el servidor

836

XX

ENCICLOPEDIA DE MICROSOFT VISUAL C#

CONTROLES DE SERVIDOR COMO ORIGEN DE DATOS

837

SQL y desarrollo web

839

Control SqlDataSource

841

Responder a los eventos

844

LINQ y desarrollo web

846

Control EntityDataSource

847

Responder a los eventos

853

Generar la consulta Select mediante código

855

Realizar cambios en los datos

856

Actualizar y eliminar filas en la base de datos

857

Controlar los errores en una página ASP.NET

859

Insertar filas en la base de datos

859

MODELO DE ENLACE DE ASP.NET

865

Realizar cambios en los datos

870

Actualizar y eliminar filas en la base de datos

870

Controlar los errores en una página ASP.NET

873

Insertar filas en la base de datos

873

Capa de la lógica de negocio

878

Paginación, ordenación y filtrado

881

EJERCICIOS PROPUESTOS

887

CAPÍTULO 17. SERVICIOS WEB

889

Integrar un servicio web en una aplicación

890

SERVICIOS WCF

891

MODELO DE PROGRAMACIÓN DE WCF

892

Implementar un servicio WCF

893

Definir un contrato

894

Configuración del servicio WCF

900

Implementar un cliente WCF

902

Configuración del cliente WCF

906

Obtener acceso al servicio web

906

Ejecución asíncrona

908

Seguridad en WCF

912

SERVICIOS WEB Y LINQ

912

Arquitectura de N capas lógicas y N niveles físicos

914

Crear la base de datos

915

Crear el servicio WCF

916

Cliente WCF

924

Llenar la lista

927

Mostrar datos

928

Actualizar datos

928

CONTENIDO XXI

Cambiar foto

929

Agregar datos

929

Borrar datos

930

Errores

inesperados

931

EJERCICIOS PROPUESTOS

932

CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET

939

ARQUITECTURA ASP.NET

940

CICLO DE VIDA DE UNA APLICACIÓN ASP.NET

941

GRUPOS DE APLICACIONES EN IIS

942

AUTENTICACIÓN DE WINDOWS

943

AUTORIZACIÓN

950

SUPLANTACIÓN DE IDENTIDAD

952

AUTENTICACIÓN MEDIANTE FORMULARIOS

953

CONTROLES PARA INICIO DE SESIÓN

958

SERVICIO DE SUSCRIPCIONES

971

SEGURIDAD EN LA TRANSMISIÓN DE DATOS

978

Criptografía simétrica

979

Criptografía

asimétrica

979

AUTENTICACIÓN USANDO CERTIFICADOS

981

Instalar un certificado SSL en IIS 7.0 o superior

983

Certificado de cliente rechazado

988

CAPÍTULO 19. PÁGINAS MAESTRAS

989

ESTRUCTURA DE UNA PÁGINA MAESTRA

989

Controles de usuario web

994

Mejorar el aspecto de la interfaz

999

Temas y máscaras en ASP.NET

1000

Perfiles

1003

EJERCICIOS RESUELTOS

1007

Base de datos

1008

Cliente web

1012

CAPÍTULO 20. AJAX

1021

FUNDAMENTOS DE AJAX

1023

XMLHttpRequest

1024

AJAX con ASP.NET

1032

GENERACIÓN DE CÓDIGO JAVASCRIPT

1034

XXII

ENCICLOPEDIA DE MICROSOFT VISUAL C#

Fichero JavaScript

1035

Vincular un evento con una función JavaScript

1035

Inyectar código JavaScript desde el lado del servidor

1037

ASP.NET AJAX

1038

Crear un sitio web ASP.NET AJAX

1039

Clase ScriptManager

1040

Clases ScriptManager y ScriptManagerProxy

1048

Clase UpdatePanel

1048

Clase AsyncPostBackTrigger

1050

Clase UpdateProgress

1051

Cancelar una llamada asíncrona

1053

Clase Timer

1054

Servicios web

1054

Métodos de página

1058

EJERCICIOS RESUELTOS

1060

PARTE 5. ACERCA DEL CD Y DE LOS APÉNDICES

1063

HERRAMIENTAS DE DESARROLLO

1065

PÁGINAS WEB

1081

INTERNACIONALIZACIÓN

1113

.NET PARA LINUX

1123

ÍNDICE

1125

PRÓLOGO

C#, pronunciado C Sharp, es actualmente, junto con Java, uno de los lenguajes de programación más populares en Internet. Pero, además, apoyándose en la biblio- teca .NET, está disponible para el desarrollo de aplicaciones de propósito general, aplicaciones con interfaz gráfica, aplicaciones para Internet y aplicaciones para móviles. La idea fundamental de esta obra es dar a conocer estas facetas del len- guaje C#, profundizando en el alcance que tiene sobre la Web.

En los últimos tiempos C y C++ han sido los lenguajes más utilizados en el desarrollo de aplicaciones en general. Ambos lenguajes proporcionan al progra- mador el nivel de abstracción preciso para abordar el desarrollo de cualquier apli- cación por compleja que sea, así como mecanismos de bajo nivel para utilizar las características más avanzadas de las plataformas sobre las que se desarrolla; pero, en general, el tiempo necesario para desarrollar una aplicación resulta largo com- parado con otros lenguajes como Visual Basic, que ofrecen además de facilidad, una elevada productividad en el desarrollo de aplicaciones, aunque, eso sí, sacrifi- cando la flexibilidad que los desarrolladores de C y C++ requieren. La solución que Microsoft da a este problema es el lenguaje denominado C#. Se trata de un lenguaje moderno orientado a objetos que permite desarrollar una amplia gama de aplicaciones para la plataforma Microsoft .NET.

Más que otra cosa, el objetivo de C# es permitir a todos los desarrolladores en general, y a los de C y C++ en particular, abordar el desarrollo de aplicaciones complejas con facilidad y rapidez pero sin sacrificar la potencia y el control que ofrecen C y C++. Es un poco como tomar todas las cosas buenas de Visual Basic y añadirlas a C++, aunque recortando algunas de las tradiciones más ocultas y di- fíciles de conocer de C y C++. Esto elimina los errores de programación más co- munes en C/C++. Por ejemplo:

XXIV

ENCICLOPEDIA DE MICROSOFT VISUAL C#

El recolector de basura libera al programador del peso que conlleva el manejo manual de la memoria.

Todos los objetos creados dinámicamente así como las matrices son iniciados a cero, y aunque C# no inicia automáticamente las variables locales, el compi- lador avisará siempre que se intente utilizar una antes de iniciarla.

C# unifica el sistema de tipos permitiendo ver a cada uno de ellos en el len- guaje como un objeto.

Resumiendo, C# es un lenguaje orientado a objetos seguro y elegante que

permite a los desarrolladores construir un amplio rango de aplicaciones seguras y

robustas que se ejecutan sobre .NET

entre otras cosas la biblioteca básica de .NET y el compilador C#) junto con otros componentes de desarrollo, como ASP.NET (formularios web y servicios web) y ADO.NET, forman un paquete de desarrollo denominado Microsoft Visual Studio que podemos utilizar para crear aplicaciones Windows tradicionales (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ódigo avanzado, diseñado- res de interfaces de usuario apropiados, depurador integrado y muchas otras utili- dades para facilitar un desarrollo rápido de aplicaciones.

.NET Framework (que incluye

Framework.

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 esta ofrece. Y “NET” hace refe- rencia al ámbito donde operarán nuestras aplicaciones web (Network - red).

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 (C#, Visual Basic, Java, etc., son lenguajes orientados a objetos). Haber pro- gramado en .NET y con C# sería lo ideal, así como tener conocimientos de HTML y XML. Estos requisitos son materia de mis otros libros Microsoft C# -

PRÓLOGO XXV

Lenguaje y aplicaciones y Microsoft C# - Curso de programación, ambos edita- dos también por las editoriales RA-MA y Alfaomega Grupo Editor.

Microsoft C# - Lenguaje y aplicaciones se centra en la programación básica:

tipos, sentencias, matrices, métodos, ficheros, etc., y hace una introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para Internet, y Micro- soft C# - Curso de programación cubre la programación básica (expuesta en me- nor medida en el libro anterior) y la programació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 como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Este sí que es un libro de programación con C# en toda su extensión. Puede ver más deta- lles de cada 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

XXVI

ENCICLOPEDIA DE MICROSOFT VISUAL C#

APÉNDICE C. INTERNACIONALIZACIÓN

APÉNDICE

D.

.NET PARA LINUX

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. En especial, quiero expresar mi agradeci- miento por su participación en las ediciones anteriores a mi excolega Manuel Peinado Gallego, por sus buenas recomendaciones y aportaciones, y a Francisco Ceballos Fernández, ingeniero de informática, por la revisión del contenido. También deseo expresar mi agradecimiento a Microsoft Ibérica por poner a mi disposición, en particular, y de todos los lectores, en general, el software que el estudio de esta obra requiere.

Francisco Javier Ceballos Sierra

http://www.fjceballos.es/

P A R T E

P A R T E 







Introducción

Introducción a Microsoft .NET

Mi primera aplicación

P A R T E

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

Programación con hilos

P A R T E

P A R T E 







Acceso a datos

Enlace de datos en Windows Forms

Acceso a una base de datos

LINQ

P A R T E

P A R T E 







Aplicaciones para Internet

ASP.NET

Formularios web

Servicios web

Seguridad de aplicaciones ASP.NET

Páginas maestras

AJAX

P A R T E

P A R T E 







Acerca del CD y de los apéndices

Entornos 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, entusiastas 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.

1066

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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 C# Express, hacemos clic en

para crear un proyecto nuevo, o bien ejecutamos la orden

Archivo > Nuevo proyecto. Esta acción hará que se visualice una ventana 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 siguiente muestra esta ventana:

Nuevo proyecto

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1067

APÉNDICE A: HERRAMI ENTAS DE DESARROLLO 1067 Para que la ventana anterior muestre la lista Ubicación

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:

y seleccione esta opción en la ventana que se visualiza: Para nuestro ejemplo, elegimos la plantilla

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 .cs, hace- mos clic sobre Program.cs y utilizando el botón derecho del ratón, seleccio-

1068

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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.

hacer este cambio a través de la ventana de propiedades. Si necesitáramos añadir un fichero nuevo

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 re- sultado > Aplicación de consola.

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1069

APÉNDICE A: HERRAMI ENTAS DE DESARROLLO 1069 3. Para compilar el programa, ejecutamos la orden Generar

3. Para compilar el programa, ejecutamos la orden Generar HolaMundo del me- 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).

1070

ENCICLOPEDIA DE MICROSOFT VISUAL C#

1070 ENCICLOPEDIA DE MICROSOFT VISUAL C# De forma resumida, las órdenes dis ponibles para depurar una

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ú Depurar.

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:

Generar reducida que se muestra en la figura siguiente: Esta barra de herramientas pone a su

Esta barra de herramientas pone a su disposición las órdenes siguientes:

Generar aplicación. Compila la aplicación y genera el fichero ejecutable co- rrespondiente.

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1071

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:

los ar- gumentos según puede observar en la figura: CONECTAR A LOCALDB O A SQLEXPRESS El

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

1072

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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 utilidad 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=;

Source=.\sqlexpress;Initial Catalog=; Integrated

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

la orden: SQLCMD -S nombre-del-ordenador \SqlExpress Una vez iniciada la consola, puede escribir órdenes SQL a

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: HERRAMIENTAS DE DESARROLLO

1073

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:

todas las filas de la tabla con todas sus columnas: Para ver la relación de órdenes

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 que cada orden va precedida por dos puntos (:).

la orden help como se muestra en la figura siguiente. Obsérvese que cada orden va precedida

1074

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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:

la contraseña sólo si eligió autenticación SQL Server: Una vez realizada la conexión con el gestor

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 izquierda la base de datos con la que desea trabajar, haga clic en el botón Nueva consulta de

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1075

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.

clic en el botón Ejecutar de la barra de herramientas. CREAR UNA BASE DE DATOS Si

CREAR UNA BASE 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 rató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:

sqlexpress), entonces es posible añadir al proyecto elementos nuevos de tipo base

1076

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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:

SQL Server . Se vi- sualizará la ventana siguiente: Escriba el nombre de la base de

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?:

‘bd_telefonos’ no existe. ¿Desea intentar crearla?: Haga clic en Sí . Observará en el bd_telefonos ha

Haga

clic

en

.

Observará

en

el

bd_telefonos ha sido creada.

explorador

de

bases

de

datos

que

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1077

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.

Después complete el proceso de creación de la misma. Puede ver un ejemplo de este proceso

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 aplicaciones, en el caso de la plata- forma Windows éste es IIS (Internet Information 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.

1078

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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.

Si la operación anterior no solucionó el problema, pruebe a reparar la instala- ción actual a partir del CD de instalación 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 > Opciones avanzadas y asegúrese de que no esté seleccionada la opción “Deshabilitar la depuración de scripts”:

la opción “Deshabilitar la depuración de scripts ”: Cumplido el requisito anterior, sólo queda poner en

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

APÉNDICE A: HERRAMIENTAS DE DESARROLLO

1079

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 =

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.

e invocar peticiones al modelo y probablemente a la vista. Con el modelo MVC cada tipo
e invocar peticiones al modelo y probablemente a la vista. Con el modelo MVC cada tipo
e invocar peticiones al modelo y probablemente a la vista. Con el modelo MVC cada tipo

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-

1080

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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- 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.

bidos del modelo en datos aptos para la vista y viceversa. Por lo tanto MVVM comparte
bidos del modelo en datos aptos para la vista y viceversa. Por lo tanto MVVM comparte
bidos del modelo en datos aptos para la vista y viceversa. Por lo tanto MVVM comparte

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.

la simplificación que resulta de usar enlaces declarativos para transferir los datos desde y hacia el

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:

Internet como una gran nube con ordenadores conecta- dos: Cliente Servidor Cliente Internet surgió de un

Cliente

como una gran nube con ordenadores conecta- dos: Cliente Servidor Cliente Internet surgió de un programa
como una gran nube con ordenadores conecta- dos: Cliente Servidor Cliente Internet surgió de un programa

Servidor

gran nube con ordenadores conecta- dos: Cliente Servidor Cliente Internet surgió de un programa de investigación

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-

1082

ENCICLOPEDIA DE MICROSOFT VISUAL C#

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 extranets.

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 protocolo 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

1083

Aplicación (FTP, Telnet, Gopher, Word Wide Web) API de Windows Sockets