Framework .NET 3.5 13 Programación orientada a la red
1. 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 (Windows Communication Foundation)
2. 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
3. Introducción a la programación orientada a la red Provee al desarrollador de .NET un interfaz de programación sencillo para el acceso a los protocolos comunes. Clases relacionadas del espacio de nombres System.Net Programación orientada a la red
4. Programación orientada a la red La clase WebClient Suministra métodos comunes para enviar datos a y/o recibir datos de un recurso identificado mediante una URI Utiliza la clase WebRequest para proveer de acceso a los recursos [Visual C#] WebClient cliente = new WebClient (); Stream data = cliente.OpenRead((“http://www.contoso.com”); [Visual Basic] Dim cliente AsNew WebClient() Dim data As Stream = cliente.OpenRead(“http://www.contoso.com”)
5. Programación orientada a la red Las clases WebResponse y WebRequest Se utilizan para acceder a datos de Internet Son clases abstractas Permiten transacciones que sean agnósticas con respecto al protocolo El método GetResponse invocará a la clase Response específica del protocolo [Visual C#] WebRequest peticion = WebRequest.Create("http://www.contoso.com"); // Devuelve la respuesta. WebResponse respuesta = peticion.GetResponse(); [Visual Basic] Dimpeticion As WebRequest = WebRequest.Create("http://www.contoso.com") ' Devuelve la respuesta. Dimrespuesta As WebResponse = peticion.GetResponse()
6. Programación orientada a la red La clase DNS 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. [Visual C#] IPHostEntry informacionHost = Dns.GetHostByName("www.contoso.com"); [Visual Basic] DiminformacionHost As IPHostEntry = Dns.GetHostByName("www.contoso.com")
7. Programación orientada a la red Estableciendo credenciales La clase CredentialCache La clase NetworkCredential
8. Programación orientada a la red La claseCredentialCache Las aplicaciones que necesiten acceder a múltiples recursos pueden almacenar las credenciales para dichos recursos en una instancia de la clase CredentialCache [Visual C#] CredentialCache unaCache = new CredentialCache(); unaCache.Add(new Uri("http://www.contoso.com/"),"Basic",new NetworkCredential(Usuario,ContraseñaAlmacenada)); [Visual Basic] Dim unaCache AsNew CredentialCache() unaCache.Add(New Uri("http://www.contoso.com/"), "Basic", New NetworkCredential(Usuario,ContraseñaAlmacenada))
9. Programación orientada a la red La clase NetworkCredential Provee credenciales para las autentificaciones basadas enbasic, digest, NTLM y Kerberos [Visual C#] 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; [Visual Basic] DimcredencialAs New NetworkCredential(Usuario,Contraseña,Dominio) DimunaCacheAs 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
10. Programación orientada a la red Envío de correos La clase MailMessage Montando el mensaje Envío del mensaje
11. Programación orientada a la red La clase MailMessage Representa un mensaje de email que puede ser enviado utilizando la clase SmtpClient.
12. Programación orientada a la red Montando un mensaje [Visual C#] MailMessage correo = new MailMessage(); // Establece la dirección correo.From = new MailAddress("pepito@ibis.es") ; correo.To.Add("juanito@ibis.es") ; // 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; Para construir un mensaje es necesario definir una instancia de la clase MailMessage y establecer las propiedades requeridas [Visual Basic] 'create the mail message Dimcorreo As New MailMessage() ' Establece la dirección correo.From = New MailAddress(" pepito@ibis.es ") correo.To.Add(" juanito@ibis.es ") ' 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
13. Programación orientada a la red Envío del mensaje Para enviar el mensaje hay que establecer: La clase SmtpClient El 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. [Visual C#] SmtpClient smtp = new SmtpClient("mail.smtpserver.com") ; smtp.Credentials = new System.Net.NetworkCredential("usuario", "contraseña"); smtp.Send(mail); [Visual Basic] Dim smtp As New SmtpClient("mail.smtpserver.com") smtp.Credentials = New System.Net.NetworkCredential("usuario", "contraseña") smtp.Send(mail)
14. 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 Programación orientada a la red
15. ¿Qué son las aplicaciones distribuidas? Programación orientada a la red 2-capas 3-capas N-capas
16. Opciones de creación de aplicaciones distribuidas Programación orientada a la red ASMX WSE Remoting WCF EnterpriseServices Messaging
17. ¿Qué son los protocolos y estándares de servicios Web? HTTP XML XML Schema SOAP WSDL Programación orientada a la red
18. Las aplicaciones distribuidas y la seguridad Autentificación IIS security Autorización ASP.NET security Web services security Remoting security Enterprise service security Comunicación segura Windows security Programación orientada a la red
19. 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 ? Programación orientada a la red
20. ¿Qué es un servicio Web XML? Aplicación cliente Servidor web Petición SOAP sobre HTTP [WebMethod] Respuesta SOAP sobre HTTP Proceso de la petición Programación orientada a la red
21. ¿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 oculta 4 Programación orientada a la red
22. ¿Cómo descubrir un servicio Web XML? Crear una aplicación cliente 1 Añadir una referencia hacia un servicio Web existente 2 Revisar los métodos en la clase proxy generada 3 Programación orientada a la red
23. ¿Cómo consumir un servicio Web XML? 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 [Visual C#] // Servicio Web. [WebMethod] public Cliente efectuarPago(double importeTransaction, Cliente clientePagador) { returnclientePagador.efectuarPago(importeTransaction); } // Aplicación cliente. unCliente = miServicioWeb. efectuarPago(importe, unCliente); [Visual Basic] ' Servicio Web. <WebMethod()> _ Public Function efectuarPago (ByVal importeTransaction As Double, _ ByVal clientePagador As Cliente) As Cliente ReturnclientePagador.efectuarPago(importeTransaction) End Function ' Aplicación cliente. unCliente = miServicioWeb.efectuarPago(importe, unCliente) Programación orientada a la red
24. ¿Cómo pasar objetos desde y hacia un servicio Web XML? Los servicios Web XML usan serialización XML de implícitamente [Visual C#] [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 Basic] <WebMethod()> _ Public Function nombreCliente() As String Return Cliente.Nombre End Function . . . Imports SalesApplication.SalesWebService ' Crea una instancia de la clase proxy. DimmiServicioWeb As Service = New Service() ' Invoca el método Web. miServicioWeb.nombreCliente() Programación orientada a la red
32. ¿Cómo desplegar un servicio Web XML? Servidores Web Internet Information Service Directorios virtuales Abrir el cuadro de diálogo de publicación de sitio Web 1 Configurar las opciones de despliegue 2 Publicar el servicio Web 3 Programación orientada a la red
33. 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 Programación orientada a la red
34. Modelo de servicios WCF Programación orientada a la red Servicio Cliente Dirección Enlace Contrato Endpoint Endpoint
36. Modelo de seguridad de WCF Características del modelo de seguridad de WCF: Los enlaces de WCF son seguros por defecto, excepto BasicHttpBinding El modo de seguridad puede ser Transport, Message, o TransportWithMessageCredential La autorización se realiza mediante reclamaciones y credenciales para determinar identidades Se auditan los éxitos y fallos de identificación Programación orientada a la red
38. ¿Cómo implementar un contrato de servicio WCF? Crear un interfaz con atributos y una clase que implemente los métodos del interfaz [Visual C#] [ServiceContract()] publicinterface IMyService { [OperationContract] string MyOperation1(string myValue1); } [Visual Basic] <ServiceContract()> _ PublicInterface IMyService <OperationContract()> _ Function MyOperation1(ByVal myValue1 As String) _ As String End Interface Programación orientada a la red
39. Opciones de hospedaje de un servicio WCF Programación orientada a la red IIS: Utilizado para hospedar servicios WCF que tengan contenido ASP.NET No requiere código de hospedaje Activación automática Windows Activation Service: Utilizar con IIS 7.0 para activación basada en mensajes, sobre HTTP Utilizar sin IIS para hospedar servicios WCF sobre otros protocolos, como TCP No requiere código de hospedaje Self-hosted: Usado durante el desarrollo Provee flexibilidad y facilidad de despliegue
40. 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.
41. Enlaces de WCF Programación orientada a la red Los enlaces describen cómo los conectores del servicio se comunican con los clientes Características de los enlaces: Proveen la información de protocolo, transporte y codificación. Los enlaces predefinidos incluyen: BasicHttpBinding, WSHttpBinding, NetTcpBinding y otros. [Configuration] <endpoint address="http://localhost/WCFService/Service.svc" binding="wsHttpBinding" contract="ISimpleService"/>
42. Clientes de WCF Programación orientada a la red Opciones para la creación de un cliente proxy: Añadir la herramienta ServiceReference en Visual Studio 2008 La herramienta de línea de comando Svcutil Crear una instancia de la clase proxy y referenciar los métodos del servicio [Visual C#] CalculatorProxy proxy = new CalculatorProxy(); ... double result = proxy.Add(value1, value2); [Visual Basic] Dim proxy As New CalculatorProxy() ... Dim result AsDouble = proxy.Add(value1, value2)