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.
© 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 ...........................................................................................
Requisitos .......................................................................................................
AYUDA ..............................................................................................................



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

9

PLATAFORMA .NET ........................................................................................
.NET Framework SDK ........................................................................................
Especificación común para todos los lenguajes .............................................
ASP.NET........................................................................................................
Formularios Windows ....................................................................................
ADO.NET ......................................................................................................
Biblioteca de clases ........................................................................................
Entorno de ejecución común de los lenguajes ...............................................
Visual Studio ..................................................................................................
PROYECTO Mono .............................................................................................
Características de Mono .................................................................................
Entorno de ejecución de Mono ......................................................................
Biblioteca de clases ........................................................................................
Compilador C# ...............................................................................................
Otras tecnologías ............................................................................................
Licencias ........................................................................................................
Herramientas de desarrollo ............................................................................

11 
12 
12 
13 
13 
14 
14 
15 
18 
18 
20 
21 
22 
22 
22 
23 
24 

VIII

APLICACIONES .NET MULTIPLATAFORMA

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

25

ESTRUCTURA DE UNA APLICACIÓN..........................................................
Compilar y ejecutar la aplicación ...................................................................
UTILIZANDO MONODEVELOP .....................................................................
DISEÑO DE LA INTERFAZ GRÁFICA ...........................................................
Crear un componente .....................................................................................
Añadir los controles al formulario .................................................................
MANEJO DE EVENTOS ...................................................................................
Asignar manejadores de eventos a un objeto .................................................
AÑADIR OTROS CONTROLES .......................................................................
Añadir una caja de texto.................................................................................
Añadir un botón de pulsación ........................................................................
Añadir una descripción abreviada ..................................................................
Añadir una casilla de verificación ..................................................................
Añadir un botón de opción .............................................................................
Añadir una barra de desplazamiento ..............................................................
Añadir una lista ..............................................................................................
Añadir una barra de menús ............................................................................
Mostrar cajas de diálogo ................................................................................
Compilar y ejecutar la aplicación ...................................................................
EJERCICIOS RESUELTOS ...............................................................................

25 
29 
30 
32 
32 
33 
40 
41 
42 
43 
44 
45 
45 
46 
48 
49 
50 
54 
56 
57 

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

71

SQL .....................................................................................................................
Crear una base de datos ..................................................................................
Crear una tabla ...............................................................................................
Escribir datos en la tabla ................................................................................
Modificar datos de una tabla ..........................................................................
Borrar registros de una tabla ..........................................................................
Seleccionar datos de una tabla .......................................................................
Crear una base de datos PostgreSQL .............................................................
ADO.NET ...........................................................................................................
Componentes de ADO.NET...........................................................................
Conjunto de datos...........................................................................................
Proveedor de datos .........................................................................................
Un ejemplo utilizando un lector .....................................................................
Un ejemplo utilizando un conjunto de datos ..................................................
EJERCICIOS RESUELTOS ...............................................................................

72 
72 
72 
74 
74 
75 
75 
77 
80 
80 
82 
83 
87 
89 
90 

CONTENIDO

IX

CAPÍTULO 5. FORMULARIOS WEB ............................................................... 103
FORMULARIOS WEB ......................................................................................
Controles de servidor HTML .........................................................................
Controles de servidor Web .............................................................................
APLICACIÓN WEB ASP.NET ..........................................................................
Crear la base de datos.....................................................................................
Crear un proyecto ASP.NET ..........................................................................
Agregar controles y texto a la página .............................................................
Ciclo de vida de una página ...........................................................................
Crear controladores de eventos para los controles .........................................
Control Web para acceso a datos ...................................................................
Responder a los eventos .................................................................................
CONTROLES DE VALIDACIÓN .....................................................................
DESPLEGAR UNA APLICACIÓN WEB EN UN SERVIDOR APACHE ......
EJERCICIOS RESUELTOS ...............................................................................

104 
105 
106 
108 
109 
110 
113 
115 
116 
117 
120 
123 
126 
127 

CAPÍTULO 6. SERVICIOS WEB ........................................................................ 137
DESARROLLO DE UN SERVICIO WEB XML ..............................................
Crear un nuevo servicio Web .........................................................................
Escribir la interfaz del servicio Web ..............................................................
DESPLEGAR EL SERVICIO WEB EN UN SERVIDOR APACHE ........................
CREAR UN PROYECTO CLIENTE DEL SERVICIO WEB ...........................
DESCUBRIMIENTO DE SERVICIOS WEB ....................................................
Crear un proxy de servicio Web XML ...........................................................
Obtener acceso al servicio Web XML ...........................................................
EJERCICIOS RESUELTOS ...............................................................................

138 
138 
141 
147 
147 
149 
151 
152 
154 

APÉNDICE A. INSTALACIÓN DEL SOFTWARE .......................................... 169
INSTALACIÓN DE LA PLATAFORMA LINUX ............................................
INSTALACIÓN DE MONO ..............................................................................
INSTALAR MONODEVELOP ..........................................................................
INSTALACIÓN DEL DISEÑADOR GRÁFICO ...............................................
INSTALACIÓN DE POSTGRESQL .................................................................
Cambiar la contraseña de postgres .................................................................
Conexión remota ............................................................................................
Cadena de conexión .......................................................................................
ADMINISTRADOR DE BASES DE DATOS PARA POSTGRESQL .........................
CONECTAR UNA APLICACIÓN A POSTGRESQL ......................................
INSTALAR UN SERVIDOR DE APLICACIONES .........................................

169 
173 
174 
174 
175 
178 
179 
180 
180 
181 
182 

X

APLICACIONES .NET MULTIPLATAFORMA

XSP ................................................................................................................
Apache ...........................................................................................................
INSTALACIÓN DE MySQL..............................................................................
CONECTAR UNA APLICACIÓN A MySQL...................................................

182 
183 
186 
190 

APÉNDICE B. CD .................................................................................................. 191
APÉNDICE C. CÓDIGOS DE CARACTERES.................................................. 193
UTILIZACIÓN DE CARACTERES ANSI CON WINDOWS ..........................
JUEGO DE CARACTERES ANSI .....................................................................
JUEGO DE CARACTERES ASCII....................................................................
JUEGO DE CARACTERES UNICODE ............................................................

193
194
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 Linux. 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 aplicación .NET de tres capas utilizando Mono sobre Linux.
Mono es un proyecto de implementación del entorno de trabajo .NET Framework de Microsoft, utilizando código libre, que ha sido desarrollado para los sistemas 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 todos 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 aplicación de escritorio (programas instalados en el ordenador/computador) y una aplicación Web. La siguiente figura describe su arquitectura:
Presentación

Lógica de negocio

Datos

Cliente de escritorio

Formulario
de escritorio

Cliente Web

Formulario
Web

Servicio Web XML

BD
fotos

Métodos para
acceder a los datos

Carpeta
fotos

Una parte importante de .NET es su capacidad para crear aplicaciones distribuidas 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áfica) se utilizan para desarrollar aplicaciones en las que se espera que el cliente maneje una parte significativa de la carga de trabajo de la aplicación.
Los formularios Web se utilizan para crear aplicaciones en las cuales la interfaz 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, deberemos 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 siguientes columnas: foto, una cadena de caracteres de longitud máxima 30 para almacenar 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 servicio Web se encargará de interaccionar con la base de datos para añadir o eliminar 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

CAPÍTULO 1: OBJETIVOS

5

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 similar a lo mostrado por la figura siguiente:

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

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 utilizaremos 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/SitioWebFotos 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 apartado 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 administració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 correspondientes a la aplicación propuesta y, finalmente, el capítulo Servicios Web introducirá 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 PostgreSQL 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 datos 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.

A partir del ejemplo anterior puede pensar en otras distribuciones, por ejemplo, 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/

Sign up to vote on this title
UsefulNot useful