framework .net 3.5 13 programación orientada a la red

36
Introducción a la programación orientada a la red Establecer credenciales Envío de correos Introducción a las aplicaciones distribuidas Creación y consumo de servicios Web XML Construcción de servicios y clientes WCF (Windows Communication Foundation)

Upload: antonio-palomares-sender

Post on 17-Jul-2015

629 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Framework .NET 3.5 13 Programación orientada a la red

Introducción a la programación orientada a la red

Establecer credenciales

Envío de correos

Introducción a las aplicaciones distribuidas

Creación y consumo de servicios Web XML

Construcción de servicios y clientes WCF (WindowsCommunication Foundation)

Page 2: Framework .NET 3.5 13 Programación orientada a la red

Introducción a la programación orientada a la red

El espacio de nombres System.Net

La clase WebClient

Las clases WebResponse y WebRequest

La clase Dns

Page 3: Framework .NET 3.5 13 Programación orientada a la red

Introducción a la programación orientada a la red

Clases relacionadas del espacio de nombres System.Net

Miembro Descripción

WebRequest Clase abstracta para efectuar peticiones a una URI (Uniform Resource Identifier).

WebResponse Clase abstracta para recuperar respuestas desde una URI.

WebProxy Contiene los parámetros del proxy HTTP para la clase WebRequest

Dns Suministra funcionalidad de resolución de nombres de dominio simple.

NetworkCredential Suministra credenciales para esquemas de autentificación basados en contraseña como basic, digest, NTLM y Kerberos.

Provee al desarrollador de .NET un interfaz de programación sencillo para el acceso a los protocolos comunes.

Page 4: Framework .NET 3.5 13 Programación orientada a la red

La clase WebClient

WebClient cliente = new WebClient ();

Stream data = cliente.OpenRead((“http://www.contoso.com”);

Dim cliente As New WebClient()

Dim data As Stream = cliente.OpenRead(“http://www.contoso.com”)

[Visual C#]

[Visual Basic]

Suministra métodos comunes para enviar datos a y/o recibir datos de un recurso identificado mediante una URIUtiliza la clase WebRequest para proveer de acceso a los recursos

Page 5: Framework .NET 3.5 13 Programación orientada a la red

Las clases WebResponse y WebRequest

WebRequest peticion = WebRequest.Create("http://www.contoso.com");

// Devuelve la respuesta.

WebResponse respuesta = peticion.GetResponse();

Dim peticion As WebRequest = WebRequest.Create("http://www.contoso.com")

' Devuelve la respuesta.

Dim respuesta As WebResponse = peticion.GetResponse()

[Visual C#]

[Visual Basic]

Se utilizan para acceder a datos de InternetSon clases abstractasPermiten transacciones que sean agnósticas con respecto al protocolo

El método GetResponseinvocará a la clase Response específica del protocolo

Page 6: Framework .NET 3.5 13 Programación orientada a la red

La clase DNS

IPHostEntry informacionHost =

Dns.GetHostByName("www.contoso.com");

Dim informacionHost As IPHostEntry =

Dns.GetHostByName("www.contoso.com")

[Visual C#]

[Visual Basic]

Es una clase estática que recupera información del servidor de nombres de dominio.Devuelve los datos como objetos de la clase IPHostEntry.Si un host tiene varias direcciones IP, devolverá una colección.

Page 7: Framework .NET 3.5 13 Programación orientada a la red

Estableciendo credenciales

La clase CredentialCache

La clase NetworkCredential

Page 8: Framework .NET 3.5 13 Programación orientada a la red

La clase CredentialCache

CredentialCache unaCache = new CredentialCache();

unaCache.Add(new Uri("http://www.contoso.com/"),"Basic",new

NetworkCredential(Usuario,ContraseñaAlmacenada));

Dim unaCache As New CredentialCache()

unaCache.Add(New Uri("http://www.contoso.com/"), "Basic", New

NetworkCredential(Usuario,ContraseñaAlmacenada))

[Visual C#]

[Visual Basic]

Las aplicaciones que necesiten acceder a múltiples recursos pueden almacenar las credenciales para dichos recursos en una instancia de la clase CredentialCache

Page 9: Framework .NET 3.5 13 Programación orientada a la red

La clase NetworkCredential

NetworkCredential credencial = new

NetworkCredential(Usuario,Contraseña,Dominio);

CredentialCache unaCache = new CredentialCache();

unaCache.Add(new Uri("www.contoso.com"), "Basic", credencial);

unaCache.Add(new Uri("app.contoso.com"), "Basic", credencial);

WebRequest wr = WebRequest.Create("www.contoso.com");

wr.Credentials = unaCache;

Dim credencial As New NetworkCredential(Usuario,Contraseña,Dominio)

Dim unaCache As New CredentialCache()

unaCache.Add(New Uri("www.contoso.com"), "Basic", credencial)

unaCache.Add(New Uri("app.contoso.com"), "Basic", credencial)

Dim wr As WebRequest = WebRequest.Create("www.contoso.com")

wr.Credentials = unaCache

[Visual C#]

[Visual Basic]

Provee credenciales para las autentificaciones basadas enbasic, digest, NTLM y Kerberos

Page 10: Framework .NET 3.5 13 Programación orientada a la red

Envío de correos

La clase MailMessage

Montando el mensaje

Envío del mensaje

Page 11: Framework .NET 3.5 13 Programación orientada a la red

La clase MailMessage

Representa un mensaje de email que puede ser enviado utilizando la clase SmtpClient.

Componente del correo Propiedad

Remitente From

Destinatario To

Copias (CC) CC

Asunto Subject

Cuerpo Body

Adjuntos Attachment

Page 12: Framework .NET 3.5 13 Programación orientada a la red

Montando un mensaje

MailMessage correo = new MailMessage();

// Establece la dirección

correo.From = new MailAddress("[email protected]") ;

correo.To.Add("[email protected]") ;

// Establece el contenido

correo.Subject = "Esto es un correo" ;

correo.Body = "Cuerpo de ejemplo con código html embebido. <b>Esto está

en negrita</b> <font color=#336699>Esto es azul</font>";

correo.IsBodyHtml = true;

'create the mail message

Dim correo As New MailMessage()

' Establece la dirección

correo.From = New MailAddress(" [email protected] ")

correo.To.Add(" [email protected] ")

' Establece el contenido

correo.Subject = " Esto es un correo "

correo.Body = "Cuerpo de ejemplo con código html embebido. <b>Esto está

en negrita</b> <font color=#336699>Esto es azul</font>"

correo.IsBodyHtml = True

[Visual C#]

[Visual Basic]

Para construir un mensaje es necesario definir una instancia de la clase MailMessage y establecer las propiedades requeridas

Page 13: Framework .NET 3.5 13 Programación orientada a la red

Envío del mensaje

SmtpClient smtp = new SmtpClient("mail.smtpserver.com") ;

smtp.Credentials = new System.Net.NetworkCredential("usuario",

"contraseña");

smtp.Send(mail);

Dim smtp As New SmtpClient("mail.smtpserver.com")

smtp.Credentials = New System.Net.NetworkCredential("usuario",

"contraseña")

smtp.Send(mail)

[Visual C#]

[Visual Basic]

Para enviar el mensaje hay que establecer:

La clase SmtpClientEl servidor SMTP a utilizar, mediante la propiedad host.Las credenciales para la autentificación, si lo requiere el servidor SMTP, establecido en la propiedad Credentials. La dirección e-mail del remitente, en la propiedad From. La dirección o direcciones del o de los destinatario(s), en la propiedad To. El contenido, en la propiedad Body.

Page 14: Framework .NET 3.5 13 Programación orientada a la red

Introducción a las aplicaciones distribuidas

¿Qué son las aplicaciones distribuidas?

Opciones de creación de una aplicación distribuida

¿Qué son los protocolos y estándares de servicios Web?

Las aplicaciones distribuidas y la seguridad

Page 15: Framework .NET 3.5 13 Programación orientada a la red

¿Qué son las aplicaciones distribuidas?

2-capas

3-capas

N-capas

Page 16: Framework .NET 3.5 13 Programación orientada a la red

Opciones de creación de aplicaciones distribuidas

ASMX

WSE

MessagingEnterpriseServices

Remoting

Page 17: Framework .NET 3.5 13 Programación orientada a la red

¿Qué son los protocolos y estándares de servicios Web?

XML

HTTP

XML Schema

SOAP

WSDL

Page 18: Framework .NET 3.5 13 Programación orientada a la red

Las aplicaciones distribuidas y la seguridad

Autentificación

Autorización

Comunicación segura

IIS security

ASP.NET security

Web services security

Remoting security

Enterprise service security

Windows security

Page 19: Framework .NET 3.5 13 Programación orientada a la red

Creación y consumo de servicios Web XML

¿Qué es un servicio Web XML?

¿Cómo crear un servicio Web XML ?

¿Cómo descubrir un servicio Web XML?

¿Cómo consumir un servicio Web XML?

¿Cómo pasar objetos hacia y desde un servicio Web XML ?

¿Cómo desplegar un servicio Web XML ?

Page 20: Framework .NET 3.5 13 Programación orientada a la red

¿Qué es un servicio Web XML?

Aplicación cliente Servidor web

Petición SOAP sobre HTTP

Respuesta SOAP sobre HTTPProceso de la petición

[WebMethod]

Page 21: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo crear un servicio Web XML?

Crear un nuevo servicio Web utilizando la plantilla ASP.NET Web service.

1

Especificar la ubicación, lenguaje y nombre par el servicio Web

2

Suministrar metadatos en el atributo WebService para la clase parcial oculta

3

Añadir métodos en la clase parcial oculta4

Page 22: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo descubrir un servicio Web XML?

Crear una aplicación cliente1

Añadir una referencia hacia un servicio Web existente2

Revisar los métodos en la clase proxy generada3

Page 23: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo consumir un servicio Web XML?

// Servicio Web.

[WebMethod]

public Cliente efectuarPago(double importeTransaction, Cliente clientePagador)

{ return clientePagador.efectuarPago(importeTransaction); }

// Aplicación cliente.

unCliente = miServicioWeb. efectuarPago(importe, unCliente);

[Visual C#]

' Servicio Web.

<WebMethod()> _

Public Function efectuarPago (ByVal importeTransaction As Double, _

ByVal clientePagador As Cliente) As Cliente

Return clientePagador.efectuarPago(importeTransaction)

End Function

' Aplicación cliente.

unCliente = miServicioWeb.efectuarPago(importe, unCliente)

[Visual Basic]

Para llamar a un servicio Web XML desde una aplicación cliente .NET, cree una instancia de la clase proxy que represente al servicio Web e invoque después los métodos Web del objeto proxy

Page 24: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo pasar objetos desde y hacia un servicio Web XML?

Los servicios Web XML usan serialización XML de implícitamente

[WebMethod]

public string nombreCliente() { return Cliente.Nombre; }

. . .

using SalesApplication.SalesWebService ;

// Crea una instancia de la clase proxy.

Service miServicioWeb = new Service();

// Invoca el método Web.

miServicioWeb.nombreCliente();

[Visual C#]

<WebMethod()> _

Public Function nombreCliente() As String Return Cliente.Nombre

End Function

. . .

Imports SalesApplication.SalesWebService

' Crea una instancia de la clase proxy.

Dim miServicioWeb As Service = New Service()

' Invoca el método Web.

miServicioWeb.nombreCliente()

[Visual Basic]

Page 25: Framework .NET 3.5 13 Programación orientada a la red

Seguridad en los servicios Web XML

Opciones de autentificación para asegurar servicios Web:

Métodos de autorización para asegurar servicios Web:

Autorización de archivoAutorización de URL

Windows BasicWindows Basic over SSLWindows DigestWindows IntegratedWindows Client CertificatesForms

Page 26: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo desplegar un servicio Web XML?

Abrir el cuadro de diálogo de publicación de sitio Web1

Configurar las opciones de despliegue2

Publicar el servicio Web3

Internet Information Service

Servidores Web

Directorios virtuales

Page 27: Framework .NET 3.5 13 Programación orientada a la red

Construyendo servicios y clientes WCF

Modelo de servicios WCF

Interoperabilidad de WCF

Modelo de seguridad de WCF

Contratos de WCF

¿Cómo implementar un contrato de servcio WCF?

Opciones de hospedaje de un servicio WCF

Archivo de configuración de WCF

Enlaces de WCF

Clientes de WCF

Page 28: Framework .NET 3.5 13 Programación orientada a la red

Modelo de servicios WCF

Servicio

Endpoint

Dirección

Enlace

ContratoCliente

Endpoint

Page 29: Framework .NET 3.5 13 Programación orientada a la red

Interoperabilidad WCF

Tecnología Descripción

Web serviceWCF suministra interoperabilidad incorporada con servisio Web mediante el soporte para WS-I Basic Profile 1.1

Microsoft Message Queuing

WCF puede actuar como el cliente o el servidor para aplicaciones MSMQ existentes

COM+WCF permite que la lógica de aplicaciones existnesorientadas a componentes y hospedadas en COM+ puedan ser expuestas como servicios Web.

COM

Los servicios WCF pueden ser integrados en código COM existente utilizando el WCF service moniker para un amplio rango de entornos de desarrollo basados en COM

RemotingLas aplicaciones WCF y .NET Remoting 2.0 pueden ejecutarse simultáneamente

Características principales de interoperabilidad de WCF

Page 30: Framework .NET 3.5 13 Programación orientada a la red

Modelo de seguridad de WCF

Características del modelo de seguridad de WCF:

Los enlaces de WCF son seguros por defecto, excepto BasicHttpBindingEl modo de seguridad puede ser Transport, Message, o TransportWithMessageCredentialLa autorización se realiza mediante reclamaciones y credenciales para determinar identidadesSe auditan los éxitos y fallos de identificación

Page 31: Framework .NET 3.5 13 Programación orientada a la red

Contratos de WCF

Tipo de Contrato

Descripción

Service contract Define los detalles del servicio

Operation contract Define las oepraciones individuales

Data contract Describe la serialización de tipos complejos

Message contractDescribe el formato del mensaje SOAP completo

Fault contractDocumenta los errores que el código WCF pueda producir

Page 32: Framework .NET 3.5 13 Programación orientada a la red

¿Cómo implementar un contrato de servicio WCF?

Crear un interfaz con atributos y una clase que implemente los métodos del interfaz

[ServiceContract()]

public interface IMyService

{

[OperationContract]

string MyOperation1(string myValue1);

}

<ServiceContract()> _

Public Interface IMyService

<OperationContract()> _

Function MyOperation1(ByVal myValue1 As String) _

As String

End Interface

[Visual C#]

[Visual Basic]

Page 33: Framework .NET 3.5 13 Programación orientada a la red

Opciones de hospedaje de un servicio WCF

IIS:Utilizado para hospedar servicios WCF que tengan contenido ASP.NETNo requiere código de hospedajeActivación automática

Windows Activation Service:

Utilizar con IIS 7.0 para activación basada en mensajes, sobre HTTPUtilizar sin IIS para hospedar servicios WCF sobre otros protocolos, como TCPNo requiere código de hospedaje

Self-hosted:

Usado durante el desarrolloProvee flexibilidad y facilidad de despliegue

Page 34: Framework .NET 3.5 13 Programación orientada a la red

El archivo de configuración de WCF

<system.serviceModel>

<services>

<service

name="MySimpleService"

behaviorConfiguration="returnFaults">

<endpoint

address="http://localhost:8080/MySimpleService"

contract="ISimpleService"

binding="wsHttpBinding"/>

</service>

</services>

<behaviors>

<serviceBehaviors>

<behavior name="returnFaults" >

<serviceDebug

includeExceptionDetailInFaults="true" />

</behavior>

</serviceBehaviors>

</behaviors>

</system.serviceModel>

Al configurar un servicio WCF, se especifica el conector (endpoint) para el servicio, además de otra información como los comportamientos que soporte el servicio.

Page 35: Framework .NET 3.5 13 Programación orientada a la red

Enlaces de WCF

Características de los enlaces:

Proveen la información de protocolo, transporte y codificación.

Los enlaces predefinidos incluyen:

BasicHttpBinding, WSHttpBinding, NetTcpBinding y otros.

<endpoint

address="http://localhost/WCFService/Service.svc"

binding="wsHttpBinding"

contract="ISimpleService"/>

[Configuration]

Los enlaces describen cómo los conectores del servicio se comunican con los clientes

Page 36: Framework .NET 3.5 13 Programación orientada a la red

Clientes de WCF

Opciones para la creación de un cliente proxy:

Añadir la herramienta Service Reference en Visual Studio 2008La herramienta de línea de comando Svcutil

Crear una instancia de la clase proxy y referenciar los métodos del servicio

CalculatorProxy proxy = new CalculatorProxy();

...

double result = proxy.Add(value1, value2);

Dim proxy As New CalculatorProxy()

...

Dim result As Double = proxy.Add(value1, value2)

[Visual C#]

[Visual Basic]