framework .net 3.5 13 programación orientada a la red
TRANSCRIPT
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)
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
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.
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
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
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.
Estableciendo credenciales
La clase CredentialCache
La clase NetworkCredential
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
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
Envío de correos
La clase MailMessage
Montando el mensaje
Envío del mensaje
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
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
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.
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
¿Qué son las aplicaciones distribuidas?
2-capas
3-capas
N-capas
Opciones de creación de aplicaciones distribuidas
ASMX
WSE
MessagingEnterpriseServices
Remoting
¿Qué son los protocolos y estándares de servicios Web?
XML
HTTP
XML Schema
SOAP
WSDL
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
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 ?
¿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]
¿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
¿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
¿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
¿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]
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
¿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
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
Modelo de servicios WCF
Servicio
Endpoint
Dirección
Enlace
ContratoCliente
Endpoint
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
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
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
¿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]
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
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.
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
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]