You are on page 1of 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.
© 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........................................................................................................ 13 
Formularios Windows .................................................................................... 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........................................................................................... 82 
Proveedor de datos ......................................................................................... 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 
Crear un proyecto ASP.NET .......................................................................... 110 
Agregar controles y texto a la página ............................................................. 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 
DESPLEGAR UNA APLICACIÓN WEB EN UN SERVIDOR APACHE ...... 126 
EJERCICIOS RESUELTOS ............................................................................... 127 

CAPÍTULO 6. SERVICIOS WEB ........................................................................ 137

DESARROLLO DE UN SERVICIO WEB XML .............................................. 138 


Crear un nuevo servicio Web ......................................................................... 138 
Escribir la interfaz del servicio Web .............................................................. 141 
DESPLEGAR EL SERVICIO WEB EN UN SERVIDOR APACHE ........................ 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 
INSTALAR MONODEVELOP .......................................................................... 174 
INSTALACIÓN DEL DISEÑADOR GRÁFICO ............................................... 174 
INSTALACIÓN DE POSTGRESQL ................................................................. 175 
Cambiar la contraseña de postgres ................................................................. 178 
Conexión remota ............................................................................................ 179 
Cadena de conexión ....................................................................................... 180 
ADMINISTRADOR DE BASES DE DATOS PARA POSTGRESQL ......................... 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 
CONECTAR UNA APLICACIÓN A MySQL................................................... 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
JUEGO DE CARACTERES UNICODE ............................................................ 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

Métodos para
Cliente Web acceder a los datos

Formulario
Web
Carpeta
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
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 si-
milar 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 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
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.

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/

You might also like