Práctica 5 Práctica de servicios Web con .NET

Anuncio
Universidad Carlos III de Madrid
Sistemas Distribuidos
Práctica 5
Práctica de servicios Web con .NET
Félix García Carballeira
Luis Miguel Sánchez García
Carlos Fómez Carrasco
Borja Bergua Guerra
1
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
El objetivo de esta práctica es desarrollar una aplicaci
aplicación
ón cliente que haga uso de un servicio Web
utilizando la plataforma .NET y el lenguaje C#.
1. Introducción a la plataforma .NET
El principal objetivo de la plataforma .NET es presentar un m
modelo
odelo uniforme (véase la siguiente
figura) para el de desarrollo de aplicaciones de escritorio y aplicaciones Web. La plataforma
.NET es el modelo de desarrollo de Microsoft que hace que el software sea independiente de la
plataforma y de los dispositivos, y hace que los datos estén disponibles a través de Internet. El
.NET Framework es la infraestructura básica subyacente de .NET.
Antes de .NET
Programación Desktop
Programación Web
Orientación a objetos
ASP (no orientado a objetos)
Código compilado (C/C++, Fortran, ...)
Código interpretado (VBScript,
Muchas y diferentes Bibliotecas
Javascript, PHP, ...)
de clases
Bibliotecas especializadas
Con .NET
Programación Desktop y Web
Orientación a objetos (incluso ASP.NET)
Código compilado (C#, C++, VB.NET, Fortran, ...)
Biblioteca de clases única
.NET ha sido implementado desde el principio pensando en una arquitectura abierta. .NET es una
plataforma que puede utilizarse para generar y ejecut
ejecutar
ar de aplicaciones Windows y aplicaciones
Web. Su principal objetivo es simplificar el desarrollo Web.
La plataforma .NET (veáse la siguiente Figura) abarca a clientes, servidores y servicios; está
formada, entre otras cosas, por:
• Un modelo de programación
programación que permite a los desarrolladores generar aplicaciones y
servicios Web.
• Un conjunto de servicios building block fundamentales, que son un conjunto de servicios
Web centrados en el usuario que trasladan el control de datos de usuario desde las
1
2
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
•
aplicaciones hasta los usuarios. Por ejemplo, Microsoft Passport es un componente
principal de la iniciativa .NET que facilita la integración de diversas aplicaciones.
Herramientas, como Visual Studio .NET, que pueden utilizarse para desarrollar servicios
Web XML, aplicaciones Windows y aplicaciones Web para obtener una rica experiencia
de usuario.
Aplicaciones
Tradidionales
(Código no
Administrado)
Código Administrado
Biblioteca de Clases
Aplicaciones Web
Formularios
Web Services
Web
ASP.NET
Common Language Runtime
Servidor Web (IIS)
Sistema Operativo (Windows, Linux, Unix, ...)
.NET Framework
+ Herramientas (Visual Studio .NET)
+ Servidores (SQL Server, ExchangeServer, ...)
+ Servicios (Passport Service, ...)
1.1 .NET Framework
El .NET Framework proporciona la base sobre la que se desarrollan y ejecutan las plicaciones y
los servicios Web . .NET Framework actúa como un elemento unificado, lo que significa que las
aplicaciones, tanto si son aplicaciones Windows tradicionales, aplicaciones Web o servicios Web
, se desarrollan utilizando un conjunto de herramientas y código comunes, lo que facilita
enormemente su integración. El .NET Framework está formado por los siguientes componentes:
• El Common Language Runtime (de ahora en adelante, CLR). El CLR es el encargao de
gestionar los servicios en tiempo de ejecución, incluyendo la integración de lenguajes, la
seguridad y la gestión de memoria.
• Biblioteca común de clases. Estas bibliotecas proporcionan código reutilizable para las
tareas más habituales, incluyendo el acceso a datos, el desarrollo de servicios Web , Web
Forms y Windows Forms.
• ADO.NET es la próxima generación de la tecnología ActiveX Data Object (ADO). El
elevado nivel de integración de ADO.NET en XML permite a los desarrolladores
transferir conjuntos de datos (cachés de datos en memoria) entre los distintos
componentes de una solución de empresa.
• ASP.NET se basa en las clases de programación de .NET Framework para proporcionar
un modelo de aplicaciones Web en la forma de un conjunto de controles e infraestructura
que facilita la creación de aplicaciones Web. Los desarrolladores pueden acceder a un
2
3
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
conjunto de controles Web de ASP.NET con funciones comunes de interfaces de usuario
en lenguaje de marcado de hipertexto (HTML), como cuadros de texto y menús
desplegables. Estos controles se ejecutan en el servidor Web y proyectan su interfaz de
usuario a un navegador como HTML.
La plataforma .NET es compatible con los siguientes dispositivos:
• PCs portátiles.
• Estaciones de trabajo.
• PCs de bolsillo.
• PDAs.
• Teléfonos móviles.
• Consolas de juegos.
• Tablet PCs.
Una de sus características más interesantes es que permite Compatibilidad binaria (véase la figura
siguiente) entre más de 20 lenguajes (C#, C++, VB.NET, Java, Eiffel, Fortran, Cobol, ML,
Haskell, Pascal, Oberon, Perl, Python, ...)
Clase en VB.NET
Public Class A
Public x As Integer
Public Sub Foo() ...
End Class
Subclase en C#
Clase en Eiffel
class B : A {
class Client feature
public string s;
obj: B;
...
public void Bar() {...}
}
create obj;
obj.Bar;
...
end
1.2 Introducción a C#
C# es un lenguaje de programación diseñado especialmente para la plataforma .NET. C# es un
moderno lenguaje orientado a objetos con el que los programadores podrán crear con facilidad
una amplia gama de aplicaciones para la nueva plataforma Microsoft .NET, y que dispone de
herramientas y servicios para aprovechar al máximo la informática y las comunicaciones. C# es
un lenguaje orientado a objetos, que permite crear una gran variedad de componentes, desde
objetos de negocio de alto nivel hasta aplicaciones de sistema. Mediante construcciones simples
de lenguaje C#, estos componentes pueden convertirse en servicios Web y ser invocados a través
de Internet desde cualquier lenguaje que se ejecute en cualqu
cualquier
ier sistema operativo.
3
4
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
Es un lenguaje muy parecido a Java. Se considera que tiene un 70% de similitud con Java, un
10% con C++, un 5% con Visual Basic, siendo un 15% completamente nuevo. La siguiente
figura muestra las similitudes con Java y C++.
Como en Java
•
•
•
•
•
•
•
•
•
•
Como en C++
Orientación a objetos (herencia simple)
Interfaces
Excepciones
Threads
Namespaces (similar a Java packages)
Fuerte tipado
Recolección de basura
Reflexión
Carga dinámica de código
...
• Tipos struct
• Sobrecarga de operadores
• Aritmética de punteros en código no
seguro
• Algunos detalles sintácticos
C# es un lenguaje de programación simple pero eficaz, diseñado para escribir plicaciones
empresariales. El lenguaje C# es una evolución de los lenguajes C y C++. Utiliza muchas de las
características de C++ en las áreas de ins
instrucciones,
trucciones, expresiones y operadores. C# presenta
considerables mejoras e innovaciones en áreas como seguridad de tipos, control de versiones,
eventos y recolección de elementos no utilizados (liberación de memoria). C# proporciona acceso
a los tipos de API más comunes: .NET Framework, COM, Automatización y estilo C. Asimismo,
admite el modo unsafe, en el que se pueden utilizar punteros para manipular memoria que no se
encuentra bajo el control del recolector de elementos no utilizados.
1.2.1 La versión C# del programa Hola Mundo
El siguiente programa de consola muestra la versión C# del típico programa "Hola Mundo".
// Programa Hola Mundo en C#
class HolaMundo
{
static void Main()
{
System.Console.WriteLine("Hola Mundo!");
}
}
4
5
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
A continuación se indican algunos puntos importantes de este programa: comentarios, el método
Main, la entrada y salida básica, la compilación y ejecución.
La primera línea contiene un comentario:
// Programa Hola Mundo en C#
Los caracteres // convierten el resto de la línea en un comentario. Un bloque de texto también se
puede convertir en comentario si se coloca entre los caracteres /* y */, por ejemplo:
Cualquier programa en C# debe contener un método Main, en el cual se inicia y se termina la
ejecución. Este método es donde se crean los objetos y se ejecutan otros métodos. El método
Main es un método estático que reside dentro de una clase o una estructura. En el ejemplo de
"Hola Mundo!", se encuentra dentro de la clase HolaMundo. El método Main se puede declarar
de varias formas:
static void Main()
{
...
}
También puede devolver un valor de tipo int:
static int Main()
{
...
return 0;
}
Puede utilizar argumentos con los dos tipos devueltos:
static int Main(string[] args)
{
...
return 0;
}
O bien
static void Main(string[] args)
{
...
}
5
6
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
El parámetro del método Main es una matriz de tipo string que representa los argumentos de la
línea de mandatos utilizados para invocar al programa. Observe que, a diferencia de C++, esta
matriz no incluye el nombre del archivo ejecutable (exe).
Los programas de C# utilizan normalmente los servicios de entrada y salida que ofrece la
biblioteca de tiempo de ejecución de .NET Framework. En la instrucción
System.Console.WriteLine("Hola Mundo!");
Mundo!"); se utiliza el método WriteLine,
uno de los métodos de salida de la clase Console de la biblioteca de tiempo de ejecución.
Muestra el parámetro cadena en la secuencia de salida estándar seguido por una nueva línea.
Otros métodos de Console se utilizan para otras operaciones de entrada y salida. Si incluye la
instrucción using System; al principio del programa, puede utilizar directamente las clases y
los métodos System sin escribir el nombre completo. Por ejemplo:
Console.WriteLine("Hola Mundo!");
El programa "Hola a todos" se puede compilar creando un proyecto en el Entorno de desarrollo
integrado (IDE) de Visual Studio , o bien mediante la línea de mandatos. Para compilar el
programa desde la línea de comandos debe crear el archivo de código fuente mediante cualquier
editor de texto y guardarlo con un nombre como HolaMundo.cs. Los archivos de código fuente
de C# utilizan la extensión .cs. Para invocar el compilador, basta con ejecutar el siguiente
mandato:
csc HolaMundo.cs
Si el programa no contiene errores de compilación, se creará un archivo HolaMundo.exe, que se
podrá ejecutar directamente.
1.2.2 Estructura general de un programa C#
Los programas en C# pueden constar de uno o varios archivos. Cada archivo puede contener uno
o varios espacios de nombres. Un espacio de nombres puede contener tipos como clases,
estructuras, interfaces, enumeraciones y delegados, además de otros espacios de nombres. A
continuación, se muestra el esqueleto de un programa en C# que contiene todos estos elementos.
// Esqueleto básico de un programa C#
using System;
namespace MyNamespace1
{
class MyClass1
{
}
struct MyStruct
6
7
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
{
}
interface IMyInterface
{
}
delegate int MyDelegate();
enum MyEnum
{
}
namespace MyNamespace2
{
}
class MyClass2
{
public static void Main(string[] args)
{
}
}
}
La palabra clave namespace se utiliza para declarar un ámbito. Este ámbito permite organizar
el código y proporciona una forma de crear tipos globalmente exclusivos.
1.2.3 Tipos de datos básicos
Los tipos del lenguaje C# se dividen en dos categorías principales: tipos de valor y tipos de
referencia. Una tercera categoría de tipos son los punteros, que sólo está disponible en el código
no seguro, que se describirá más adelante. Dentro de los tipos de valor se encuentran los tipos
struct, tipos simples, los tipos en coma flotante, el tipo
tipo decimal y el tipo Bool. Los principales
tipos de datos son: sbyte, byte, short, ushort, int, uint, long, ulong, char,
double, float, bool y decimal. Todos ellos son similares a los tipos de datos utilizados en
C o C++
Dentro de los tipos de referencia se encuentran los tipos de clase, el tipo object, el tipo
string, el tipo de interfaz y el tipo de matriz.
1.3 Introducción a Visual Studio .NET
Visual Studio .NET es un conjunto de aplicaciones completo para la creación tanto de
aplicaciones de escritorio como de aplicaciones Web de empresa para trabajo en equipo. Aparte
de generar aplicaciones de escritorio de alto rendimiento, se pueden utilizar las eficaces
herramientas de desarrollo basado en componentes y otras tecnologías de Visual Studio para
simplificar el diseño, desarrollo e implementación en equipo de soluciones para empresa.
7
8
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
La ¡Error! No se encuentra el origen de la referencia.siguiente figura muestra el entorno de
desarrollo de Visual Studio 2010.
Figura 1 Pantalla inicial de Visual Studio 2010
Para desarrollar una aplicación visual con C#, hay que elegir Nuevo Proyecto (en este caso con
nombre Prueba) y Visual C# | Windows | Aplicación de Windows Forms.
8
9
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
Cuando se crea un proyecto aparece una ventana similar a la que se muestra en la siguiente
Figura:
El entorno incluye un cuadro de herramientas donde se encuentran los controles que podemos
incluir en las aplicaciones. Un editor en el que podemos insertar el código. El examinador de
objetos muestra los diferentes elementos que tenemos abierto en el proyecto. El explorador de
soluciones incluye, entre otras cosas, todos los archivos que incluye nuestro proyecto. El apartado
de Propiedades muestra las propiedades que tiene cualquier elemento marcado en la parte
Editor/Navegador. Existe también una parte donde se muestra ayuda dinámica y otra donde se
muestran diversas listas de tareas, por ejemplo, los errores que se obtienen al compilar la
aplicación. El explorador de servidores
Para desarrollar una primera aplicación sencilla, en el Cuadro de herramientas, arrastre un control
Button al formulario. Haga clic en el botón para seleccionarlo. En la ventana Propiedades,
establezca la propiedad Text en "Hola". De esta forma el botón incluirá el texto “Hola”. A
continuación a partir del cuadro de herramientas, arrastre un control TextBox al formulario. Para
escribir el código de la aplicación haga doble clic en el botón
botón para agregar un controlador de
eventos para el evento Click del botón. Se abrirá el Editor de código con el punto de inserción
situado dentro del controlador de eventos:
9
10
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
private void button1_Click(object sender, System.EventArgs e)
{
}
Lo único que queda es Insertar el código siguiente:
private void button1_Click(object sender, System.EventArgs e)
{
textBox1.Text = "Hola Mundo";
}
De esta forma cuando se haga click sobre el botón Hola, se mostrará en el cuadro de texto la
cadena “Hola Mundo”.
Grabe el proyecto y haga clic en Iniciar para compilar y ejecutar el proyecto.
1.3.1 Incorporación de un servicio web a una aplicación visual
A continuación se va a describir cómo desrrollar un formulario cliente de un servicio web.
El servicio web elegido es el definido en:
http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL
Que incluye dos métodos;
•
•
NumberToWords
Returns the word corresponding to the positive number passed as parameter. Limited to
quadrillions.
NumberToDollars
Returns the non-zero dollar amount of the passed number.
10
11
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
La Aplicación desarrollada tendrá el siguiente aspecto:
añadir
ir una referencia web con la URL anterior. En el
Una vez creado el proyecto, lo primero es añad
explorador de soluciones haga clic con el botón derecho sobre References y elija Agregar
Referencia de Servicio. Aparecerá la siguiente ventana.
Haga Clic en Avanzadas y elija Agregar Referencia Web. Aparecerá una ventana como
esta:
11
12
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
Inserte la referencia del servicio
http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL en dirección URL,
cambie el nombre de la referencia web por Conversion, y aparecerá una pantalla como la
siguiente:
En la que se puede ver la descripción de los métodos que incluye el servicio web.
El siguiente paso es crear el formulario:
12
13
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
Que incluye dos cuadros de texto (textBox1 y textBox2 por defecto). Dos botones
(button1 y button2 por defecto) y dos etiquetas (label1 y label2 por defecto). La
aplicación tomará un número insertado en el primer cuadro de texto y cuando se haga clic sobre
el botón Convertir se invocará el servicio web para convertir el número dado en cifras en
letras. El resultado se mostrará en el cuadro de texto 2.
El código asociado a los botones Convertir y Borrar es el siguiente:
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
}
private void button1_Click(object sender, EventArgs e)
{
// se crea una referencia para poder invocar el servicio web
Conversion.NumberConversion c = new Conversion.NumberConversion();
// se convierte el número introducido en el cuadro de texto 1 de String a
// ulong que es el tipo de datos del argumento que se pasa al método
// NumberToWords
ulong num = ulong.Parse(textBox1.Text);
textBox2.Text = c.NumberToWords(num);
// invoca el servicio Web
}
A continuación, se puede compilar y ejecutar el programa, que dará una salida como la que se
muestra a continuación:
13
14
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
14
15
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
2. Descripción de la práctica
El alumno deberá diseñar, codificar y probar, utilizando
utilizando para ello el lenguaje C# y sobre la
herramienta Visual Studio 2010, dos clientes que consuman servicios web.
2.1 Conversión de temperatura
Se pretende la implementación de una aplicación que invoque el servicio web que se encuentra en
la dirección:
http://www.w3schools.com/webservices/tempconvert.asmx
Que incluye dos métodos:
•
•
CelsiusToFahrenheit
FahrenheitToCelsius
El alumno deberá desarrollar una aplicación cliente con una interfaz que ofrezca al usuario la
posibilidad de introducir un valor de temperatura y convertirla a grados Celsius o Fahrenheit. Un
posible esquema de interfaz se muestra en la siguiente imagen.
Al hacer clic sobre el botón “To Celsius”, se asume que el valor introducido por el usuario se
encuentra en Fahrenheit y se muestra el resultado de la conversión en la casilla inferior. Si por el
contrario se pulsa sobre “To Fahrenheit”, se asume que el valor introducido son grados Celsius y
se procede a mostrar su equivalente en Fahrenheit.
2.2 IP Info
Se pretende desarrollar de una aplicación cliente que haga uso de dos servicios web. El primero
de ello se encuentra en la siguiente dirección:
http://tarya.co.uk/ws/Ip2countryws.asmx
Y ofrece los siguientes servicios:
15
16
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
•
getCountry
Takes IP address, gives ISO Country
El segundo servicio web necesario para la realización del cliente se encuentra en la dirección:
http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL
Y ofrece, entre otros, como servicios relevantes para la práctica los siguientes:
•
•
CountryName
Searches the database for a country by the passed ISO country code
CapitalCity
Returns the name of the captial city for the passed country code
El alumno deberá ofrecer al usuario dos funcionalidades:
•
•
El usuario podrá introducir una dirección IP y la aplicación obtendrá el código ISO del
país donde se encuentra y, posteriormente, obtendrá mediante el segundo servicio, el
nombre y la capital del país correspondiente.
El usuario podrá introducir el código ISO de un país y la aplicación le indicará el nombre
y la capital del mismo.
Una posible interfaz se muestra a continuación:
16
17
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
3. Normas y recomendaciones generales
Es responsabilidad del alumno leer y comprender est
estee enunciado de práctica ANTES de la sesión
en el laboratorio. La sesión de laboratorio estará dedicada a resolver todas aquellas dudas que
hayan podido surgir.
Se valorará el uso correcto del lenguaje en la memoria.
El alumno tiene libertad a la hora de diseñar el sistema siempre que proporcione la funcionalidad
pedida y se adapte a los requisitos descritos en el enunciado de la práctica
17
18
Universidad Carlos III de Madrid
Sistemas Distribuidos
Cuaderno de prácticas
WEB SERVICES EN .NET
4. Documentación a entregar
Se deben entregar los siguiente archivos_memoria.pdf
En ella se deben comentar los aspectos del desarrollo de su práctica que considere más
relevantes. Asimismo, puede exponer los comentarios personales que considere oportunos. Se
deberá entregar un documento en formato PDF.
Además deberá cumplir los siguientes requisitos:
• Presentar una estructura lógica en sus contenidos (índice de contenidos).
• Estar convenientemente formateada, para facilitar su lectura.
• Describir con claridad, y en profundidad los puntos recogidos en este cuaderno de
prácticas, así como los que decidan incluir como complemento.
• Incluir las pruebas realizadas.
• Incluir los comentarios personales que considere oportunos.
• NO incluir el código fuente.
La memoria debe incluir como mínimo los siguientes puntos:
1. Índice de contenidos.
2. Descripción del protocolo de aplicación utilizado entre el cliente y el servidor.
3. Diseño del programa, usando diagramas de flujo para explicar el funcionamiento del
mismo.
4. Pruebas realizadas para probar la aplicación.
5. Conclusiones del alumno.
6. Descripción de las tareas realizadas y tiempo dedicado
dedicado a cada tarea.
El documento no debe sobrepasar las 20 páginas.
ConverterApp
Carpeta que contiene el proyecto generado en Visual Studio 2010 para la realización del primer
cliente, esta carpeta la genera automáticamente VS2010 al crear un proyecto con el nombre
CorverterApp.
IPInfoApp
Carpeta que contiene el proyecto generado en Visual Studio 2010 para la realización del segundo
cliente, esta carpeta la genera automáticamente VS2010 al crear un proyecto con el nombre
IPInfoApp.
18
19
Descargar