Sie sind auf Seite 1von 16

Aplicaciones .Net multiplataforma

(Proyecto Mono)

Plataformas Linux, Windows, Mac OS X…

Fco. Javier Ceballos Sierra

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

http://www.fjceballos.es

Aplicaciones .Net multiplataforma (Proyecto Mono) Plataformas Linux, Windows, Mac OS X… Fco. Javier Ceballos Sierra Profesor
Aplicaciones .Net multiplataforma. © Fco. Javier Ceballos Sierra © De la edición: RA-MA 2008 MARCAS COMERCIALES:

Aplicaciones .Net multiplataforma. © Fco. Javier Ceballos Sierra © De la edición: RA-MA 2008

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 mencioado 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-7897-880-9 Depósito Legal: M-xxxxx-xxxx Autoedición: Fco. Javier Ceballos Filmación e impresión: ?. Impreso en España Primera impresión: Julio 2008

CONTENIDO

PRÓLOGO

XI

CAPÍTULO 1. OBJETIVOS .................................................................................

1

APLICACIÓN .NET ...........................................................................................

1

Requisitos .......................................................................................................

7

AYUDA ..............................................................................................................

8

CAPÍTULO 2. INTRODUCCIÓN A MICROSOFT .NET Y A MONO ...........

9

PLATAFORMA .NET ........................................................................................

........................................................................................................

11

.NET Framework SDK ........................................................................................

12

Especificación común para todos los lenguajes .............................................

12

ASP.NET

Formularios Windows ....................................................................................

13

13

ADO.NET ......................................................................................................

14

Biblioteca de clases ........................................................................................

14

Entorno de ejecución común de los lenguajes ...............................................

15

Visual Studio ..................................................................................................

18

PROYECTO Mono .............................................................................................

18

Características de Mono .................................................................................

20

Entorno de ejecución de Mono ......................................................................

21

Biblioteca de clases ........................................................................................

22

Compilador C# ...............................................................................................

22

Otras tecnologías ............................................................................................

22

Licencias ........................................................................................................

23

Herramientas de desarrollo ............................................................................

24

VIII

APLICACIONES .NET MULTIPLATAFORMA

CAPÍTULO 3. INTERFACES GRÁFICAS ........................................................

25

ESTRUCTURA DE UNA APLICACIÓN ..........................................................

25

Compilar y ejecutar la aplicación ...................................................................

29

UTILIZANDO MONODEVELOP .....................................................................

30

DISEÑO DE LA INTERFAZ GRÁFICA ...........................................................

32

Crear un componente .....................................................................................

32

Añadir los controles al formulario .................................................................

33

MANEJO DE EVENTOS ...................................................................................

40

Asignar manejadores de eventos a un objeto .................................................

41

AÑADIR OTROS CONTROLES .......................................................................

42

Añadir una caja de texto .................................................................................

43

Añadir un botón de pulsación ........................................................................

44

Añadir una descripción abreviada ..................................................................

45

Añadir una casilla de verificación ..................................................................

45

Añadir un botón de opción .............................................................................

46

Añadir una barra de desplazamiento ..............................................................

48

Añadir una lista ..............................................................................................

49

Añadir una barra de menús ............................................................................

50

Mostrar cajas de diálogo ................................................................................

54

Compilar y ejecutar la aplicación ...................................................................

56

EJERCICIOS RESUELTOS ...............................................................................

57

CAPÍTULO 4. ACCESO A BASES DE DATOS .................................................

71

SQL .....................................................................................................................

...........................................................................................

72

Crear una base de datos ..................................................................................

72

Crear una tabla ...............................................................................................

72

Escribir datos en la tabla ................................................................................

74

Modificar datos de una tabla ..........................................................................

74

Borrar registros de una tabla ..........................................................................

75

Seleccionar datos de una tabla .......................................................................

75

Crear una base de datos PostgreSQL .............................................................

77

ADO.NET ...........................................................................................................

80

Componentes de ADO.NET ...........................................................................

80

Conjunto de datos

Proveedor de datos .........................................................................................

82

83

Un ejemplo utilizando un lector .....................................................................

87

Un ejemplo utilizando un conjunto de datos ..................................................

89

EJERCICIOS RESUELTOS ...............................................................................

90

CONTENIDO

IX

CAPÍTULO 5. FORMULARIOS WEB

103

FORMULARIOS WEB ......................................................................................

104

Controles de servidor HTML

105

Controles de servidor Web

106

APLICACIÓN WEB ASP.NET

108

Crear la base de datos

109

110

113

Ciclo de vida de una página

115

Crear controladores de eventos para los controles

116

Control Web para acceso a datos

117

Responder a los eventos

120

CONTROLES DE VALIDACIÓN

123

126

127

CAPÍTULO 6. SERVICIOS WEB

137

DESARROLLO DE UN SERVICIO WEB XML

138

Crear un nuevo servicio Web

138

141

147

CREAR UN PROYECTO CLIENTE DEL SERVICIO WEB

147

DESCUBRIMIENTO DE SERVICIOS WEB

149

Crear un proxy de servicio Web XML

151

Obtener acceso al servicio Web XML

152

EJERCICIOS RESUELTOS ...............................................................................

154

APÉNDICE A. INSTALACIÓN DEL SOFTWARE

169

INSTALACIÓN DE LA PLATAFORMA LINUX

169

INSTALACIÓN DE MONO

173

174

174

175

178

179

180

180

CONECTAR UNA APLICACIÓN A POSTGRESQL

181

INSTALAR UN SERVIDOR DE APLICACIONES

182

X

APLICACIONES .NET MULTIPLATAFORMA

XSP ................................................................................................................

182

Apache ...........................................................................................................

183

INSTALACIÓN DE MySQL

186

190

APÉNDICE B. CD

191

APÉNDICE C. CÓDIGOS DE CARACTERES

193

UTILIZACIÓN DE CARACTERES ANSI CON WINDOWS

193

JUEGO DE CARACTERES ANSI

194

JUEGO DE CARACTERES ASCII

195

196

ÍNDICE

197

CAPÍTULO 1

© F.J.Ceballos/RA-MA

OBJETIVOS

Este libro enseña cómo desarrollar aplicaciones .NET sobre una plataforma Li- nux. Este conocimiento será expuesto en los siguientes capítulos, cada uno de los cuales versará sobre uno de los temas especificados a continuación:

INTRODUCCIÓN A MICROSOFT .NET Y A MONO

INTERFACES GRÁFICAS

ACCESO A BASES DE DATOS

FORMULARIOS WEB

SERVICIOS WEB

Todos estos temas serán estudiados practicando con el desarrollo de una apli- cación .NET de tres capas utilizando Mono sobre Linux.

Mono es un proyecto de implementación del entorno de trabajo .NET Frame- work de Microsoft, utilizando código libre, que ha sido desarrollado para los sis- temas operativos Linux y Windows, entre otros.

¿A quién va dirigido este libro? A personas que ya conocen la programación orientada a objetos con C# y han desarrollado aplicaciones para Internet para una plataforma Windows. Se trata de que estas personas vean cómo pueden aplicar to- dos esos conocimientos sobre una plataforma Linux con muy poco esfuerzo. Los conocimientos requeridos fueron tema de exposición en mis otros libros Microsoft C# - Curso de programación y Enciclopedia de Microsoft Visual C#.

APLICACIÓN .NET

El ejemplo práctico que desarrollaremos será una aplicación distribuida multicapa para Internet. Constará de tres capas: presentación, lógica de negocio y datos. La

2

APLICACIONES .NET MULTIPLATAFORMA

capa de datos estará administrada por el gestor de bases de datos PostgreSQL. La capa de la lógica de negocio manejará el acceso a los datos y su distribución entre los clientes Web o de escritorio. La capa de presentación constará de un aplica- ción de escritorio (programas instalados en el ordenador/computador) y una apli- cación Web. La siguiente figura describe su arquitectura:

Presentación Lógica de negocio Datos Cliente de escritorio Formulario de escritorio Servicio Web XML BD fotos
Presentación
Lógica de negocio
Datos
Cliente de escritorio
Formulario
de escritorio
Servicio Web XML
BD
fotos
Métodos para
acceder a los datos
Cliente Web
Formulario
Carpeta
Web
fotos

Una parte importante de .NET es su capacidad para crear aplicaciones distri- buidas en la Web. La tecnología .NET permite crear la interfaz de usuario de la aplicación mediante ventanas (formularios de escritorio) o mediante páginas que muestran formularios Web y crear componentes utilizando servicios Web XML.

Los formularios de escritorio (las ventanas que dan lugar a una interfaz gráfi- ca) se utilizan para desarrollar aplicaciones en las que se espera que el cliente ma- neje una parte significativa de la carga de trabajo de la aplicación.

Los formularios Web se utilizan para crear aplicaciones en las cuales la inter- faz primaria de usuario es un navegador.

Los servicios Web XML son componentes que se ejecutan en el servidor, y suelen incluir la lógica de negocio. Al igual que los componentes tradicionales, los servicios Web encapsulan funciones específicas y se les puede llamar desde diferentes aplicaciones. Sin embargo, están disponibles a través de protocolos Web, lo que les hace compatibles con aplicaciones que se ejecutan en diferentes lenguajes, en diferentes equipos e, incluso, en diferentes sistemas operativos.

CAPÍTULO 1: OBJETIVOS

3

El objetivo de esta aplicación es disponer de una base de datos para almacenar fotos con el fin de mostrarlas, añadir nuevas fotos y borrarlas; por lo tanto, debe- remos tener instalado PostgreSQL con el fin de crear y gestionar la base de datos que almacenará nuestro álbum de fotos. Esta base de datos podrá ser accedida desde una aplicación de escritorio (aplicación cliente residente en la máquina del usuario) o desde un aplicación Web (aplicación cliente residente en un servidor Web y accedida por medio de un navegador residente en la máquina del usuario), permitiendo realizar las operaciones de añadir y eliminar fotos. Estas operaciones serán proporcionadas por un servicio Web que será accedido desde cualquiera de las aplicaciones cliente. En cambio, para obtener las fotos de la base de datos y mostrarlas los clientes realizarán una conexión remota con la base de datos; esto es, en este caso el acceso a los datos no se hace a través del servicio Web.

La base de datos se llamará fotos y contendrá una tabla album con las siguien- tes columnas: foto, una cadena de caracteres de longitud máxima 30 para almace- nar la ruta del fichero que contiene la imagen, nombre, una cadena de caracteres de longitud máxima 30 para almacenar el título de la foto, autor, una cadena de caracteres de longitud máxima 30 para guardar el nombre del creador de la foto y descripción, una cadena de caracteres de longitud máxima 400 para almacenar un breve texto que describa la foto.

Para la creación del sitio Web utilizaremos ASP.NET. Habrá un formulario Web para mostrar las fotos, otro para añadir una foto y otro para borrarla. El ser- vicio Web se encargará de interaccionar con la base de datos para añadir o elimi- nar los registros de la base de datos vinculados con las fotos que estarán almacenadas en una carpeta fotos del servidor.

4

APLICACIONES .NET MULTIPLATAFORMA

4 APLICACIONES .NET MULTIPLATAFORMA
4 APLICACIONES .NET MULTIPLATAFORMA

CAPÍTULO 1: OBJETIVOS

5

CAPÍTULO 1: OBJETIVOS 5 Para poder pasar de una página a otra de una forma

Para poder pasar de una página a otra de una forma sencilla, añadiremos una serie de enlaces en el margen superior de las tres páginas Web con un aspecto si- milar a lo mostrado por la figura siguiente:

CAPÍTULO 1: OBJETIVOS 5 Para poder pasar de una página a otra de una forma

Para la creación del cliente de escritorio utilizaremos las clases del espacio de nombres System.Windows.Forms. Análogamente al cliente Web, el cliente de es- critorio mostrará una ventana principal que nos permitirá navegar por las distintas fotos de la base de datos presentando, además de la imagen, los datos relativos a cada una de ellas, y mostrará una barra de menús que dará acceso a las ventanas para añadir una foto a la base de datos o eliminarla.

6

APLICACIONES .NET MULTIPLATAFORMA

6 APLICACIONES .NET MULTIPLATAFORMA
6 APLICACIONES .NET MULTIPLATAFORMA
6 APLICACIONES .NET MULTIPLATAFORMA

CAPÍTULO 1: OBJETIVOS

7

Para desarrollar esta aplicación desde una plataforma Windows utilizaríamos Visual Studio o SharpDevelop y para desarrollarla desde una plataforma Linux podemos utilizar MonoDevelop: entorno de desarrollo integrado (EDI) basado en el EDI SharpDevelop escrito para Windows.

Finalmente, para ejecutar las páginas y servicios Web sobre Mono utiliza- remos el módulo mod_mono de Apache o el servidor de aplicaciones xsp.

Eche una ojeada al apéndice A para ver cómo se instala la plataforma Linux, Mono, PostgreSQL, el servidor de aplicaciones, MonoDevelop y cómo conectar PostgreSQL con MonoDevelop.

La aplicación completa puede obtenerla de la carpeta Ejemplos/Cap01/Si- tioWebFotos del CD que acompaña a este libro (véanse los apéndices).

No obstante, las distintas partes de la aplicación,

interfaz gráfica del cliente Windows,

base de datos,

formularios Web,

servicio Web,

se irán desarrollando, cada una de ellas, en su correspondiente capítulo en el apar- tado Ejercicios resueltos.

De esta forma, cada capítulo hará una introducción a la materia a la que hace referencia y abordará la parte que le corresponde de la aplicación descrita. Esto es, el capítulo Interfaces gráficas introducirá al lector en esta temática y, además de los ejercicios propios del capítulo, desarrollará la interfaz gráfica del cliente de escritorio, el capítulo Acceso a bases de datos abordará el tema de la administra- ción de bases de datos PostgreSQL y expondrá la técnica a seguir para acceder a una base de datos de este tipo, el capítulo Páginas Web hará una introducción al desarrollo de formularios Web ASP.NET y desarrollará las páginas Web corres- pondientes a la aplicación propuesta y, finalmente, el capítulo Servicios Web in- troducirá al lector en el desarrollo de servicios Web XML, desarrollará el servicio Web del sitio Web fotos, explicará cómo éste interactúa con la base de datos Post- greSQL y expondrá cómo unir todas las partes desarrolladas de la aplicación para que trabajen conjuntamente.

Requisitos

La aplicación podrá distribuirse en uno o más servidores. Por ejemplo:

8

APLICACIONES .NET MULTIPLATAFORMA

Instalar el servicio Web en un servidor 2 junto con el servidor de bases de da-

tos PostgreSQL. Instalar el cliente Web en un servidor 1.

Instalar el cliente de escritorio en el equipo del usuario.

Finalmente, la aplicación será desarrollada sobre una plataforma Linux pero se podrá mantener y ejecutar sin ninguna modificación desde una plataforma Windows.

8 APLICACIONES .NET MULTIPLATAFORMA • Instalar el servicio Web en un servidor 2 junto con el
8 APLICACIONES .NET MULTIPLATAFORMA • Instalar el servicio Web en un servidor 2 junto con el

A partir del ejemplo anterior puede pensar en otras distribuciones, por ejem- plo, que la base de datos se aloje en otro servidor.

AYUDA

La documentación sobre la biblioteca .NET y demás bibliotecas desarrolladas en el proyecto Mono puede encontrarla en la siguiente dirección:

http://www.go-mono.com/docs/