Ceballos: Aplicaciones .Net multiplataforma (Proyecto Mono)

Aplicación .Net multicapa con C# en LINUX. Introducción a Microsoft .Net y a Mono. Interfaces gráficas. Acceso a bases d

Views 152 Downloads 5 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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: [email protected] 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 ..............................................................................................................

1  7  8 

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/