Académique Documents
Professionnel Documents
Culture Documents
Foundation in Visual
Studio 2010
Audiencia
Este curso est orientado a personas en la rama de informtica y desarrolladores que quieran
desenvolver las habilidades de programacin utilizando Visual Studio 2010 (C#). Es
recomendable que tengan experiencia previa en el rea de programacin y/o trabajar como
desarrolladores.
Prerrequisitos
Las siguientes herramientas son necesarias para el desarrollo de los laboratorios de este
curso:
Conocimientos suficientes de Programacin Orientada a objetos con versiones
anteriores a Microsoft Visual Studio 2008.
Conocimientos suficientes de programacin de T-SQL y Administracin de Microsoft
SQL Server 2005 o 2008.
Conocimientos suficientes en la administracin de Internet Information Service (IIS 7.0
y IIS 7.5)
Server: WIN2008R2
Usuario: sa
Contrasea: Sql2@@8
Materiales de en el laboratorio
Hacer uso de snippets en las demostraciones y para cada laboratorio
Hacer uso de los proyectos creados, los mismos ubicados en C:\WCF
Mdulo 6: Seguridad
Laboratorio:
Tiempo estimado: 60 minutos
Introduccin General
Escenarios y estndares
Qu es WCF?
Introduccin a WCF
Arquitectura de WCF
Behaviors WCF
Introduccin General
Qu es WCF?
Demostracin
Un poco de Historia
Web Services
Un poco de Historia:
WCF envia mensajes no solamente por HTTP, si no que tambin por TCP y otros
protocolos, mientras quw Web Services solamente soporta HTTP.
Web Services envia solamente mensajes con formatos SOAP. Mientras qie WCF
aparte de SOAP tambin enva mensajes por Representational State Transfer
(REST) y Plain Old XML (POX).
Web service solamente puede ser alojado en un servidor web, mientras que WCF
no esta limitado a un solo hosting, este soports otros hosts aparte de un servidor
web.
WCF Construido para soportar transacciones y sesiones confiables. Y Web
Services no.
Arquitectura Orientado a Servicios
Qu es SOA
Escenarios y Estndares
Qu es SOA?
Debido a estas complicaciones, SOA fue introducido para reducir estos desafos,
integrando aplicaciones distribuidas de una manera confiable, escalable y segura.
SOA es un estilo de arquitectura que fue desarrollado para resolver los desafos que
presentaban las aplicaciones distribuidas.
Reutilizacin: Con SOA es posible reutilizar los servicios en otros dominios en lugar
de re-escribir cdigo nuevamente en cada sistema.
Reduccin de costo: Con SOA inicialmente tiene su costo, pero al pasar el tiempo,
los servicios se implementan fcilmente reduciendo el costo en la unidad de IT.
3. Qu es un Servicio?
SOA esta basado en Servicios, un servicio es algo que expone una funcionalidad y
puede ser consumido por otros sistemas (llamados clientes).
4. Qu es un Cliente?
Cliente son considerados todos aquellos sistemas que consumen el servicio expuesto.
El acceso otros sistemas (clientes) a un servicio es a travs de Edges, los Edges son
puntos de acceso al servicio, es donde ah ocurren las interacciones entre el cliente y
servicio. Asimismo el Edge controla protocolo de acceso al servicio, el nmero de
clientes que puede utilizar el Edge a la vez, y otros parmetros.
Los Servicios pueden tener mas de un Edge, y cada Edge puede tener sus propias
caractersticas y configuraciones
Nota: En WCF, los Edges son conocidos como endpoints, y la tecnologa para
implementar endpoints en WCF es expresado utilizando bindings y behaviors.
Los servicios pueden ser duplicados, y como los servicios son independientes
y aislados, mltiples instancias de un servicio pueden coexistir
Los servicios pueden ser organizados en varias tecnologas para mejorar la
escalabilidad, esto significa que las nuevas instancias sern accesibles
Mensajes de una va (one-way) es un patrn de escalabilidad
Los servicios reciben y retornan dato (no objetos), de modo que ellos son
interoperables con otras tecnologas. Los objetos dependen especficamente
de La implementacin de una tecnologa, mientras que los datos no.
Los datos que un servicio enva y recibe tiene que ser en especfico y en un
mismo formato segn el estndar de codificacin (ejemplo: UTF-8)
Aunque los servicios no pueden ser 100% confiables, existen algunas maneras
de mejorar la confiabilidad, una de ellas es tener un backup. Esto significa
proveer multiples instancias en los servidores fsicos. Donde los clientes o
routers pueden utilizar cualquiera de ellos en caso uno falle.
Los reintentos hasta llegar al lmite permitido para los reintentos
Persistencia de mensajes, cuando el servicio es invadido de muchos
requerimientos de sus clientes, el servicio rechaza estos requerimientos, de
esta manera el cliente esta enterado que el dato no llego a su destino
Escenarios y Estndares:
Existen varios escenarios para el desarrollo de las aplicaciones web. Por ejemplo un servicio
podra estar disponible para internet o para redes intranet. Adems de estos escenarios existen
varios estndares tanto para los servicios y clientes.
Behaviours en WCF
1. Que es WCF
Como primer paso para empezar a construir un servicio WCF es necesario crear un contrato,
Un contrato un conjunto de operaciones y estructuras de datos que el servicio expone el cual
ser ledo por los clientes, donde los clientes necesitan saber qu es lo que hace el servicio.
Existe un ciclo de vida para el desarrollo de los servicios, esto es como sigue:
Contrato: Aqu se definen las operaciones que tendr el servicio y definir los
parmetros de cada operacin, como ser que tipo de dato es esperado desde el lado
del cliente y que tipo de respuesta o fallo de dato es retornado por el servicio.
[ServiceContract]
public interface ICalculatorService
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Sub(double n1, double n2);
[OperationContract]
double Mul(double n1, double n2);
[OperationContract]
double Div(double n1, double n2);
}
[DataMember]
public string Name { get; set; }
Prueba: Pasamos a la prueba una ves alojado el servicio, es necesario testear cada
unos de los contratos, para esto Visual Estudio 2010 posee varias herramientas, los
cuales se vern mas adelante.
Consumir por el cliente: Despues de la prueba, hacer conocer a los clientes que el
servicio esta listo para su consumo, el consumo depende la tecnologa de los clientes
(existe WCF client para .Net).
Que es un endpoint?
Ejemplo 1: Direccin asignada a un endpoint que hace uso del binding HTTP
http://localhost:8081/myService
Ejemplo 2: Direccin asignada a un endpoint que hace uso del binding TCP
net.tcp://localhost:9001/myService
El cliente debe estar familiarizado con uno o mas endpoints del servicio para
poder comunicarse con el servicio. El cliente no necesita conocer todos los
endpoints del servicio, solamente necesita conocer aquellos que necesita.
Un endpoint de WCF es una abstraccin de que es lo que est expuesto, como est
expuesto y donde esta expuesto.
Como. Cada endpoint puede utilizar diferentes tecnologas para escuchar a los
clientes (ejemplo: HTTP, HTTPS, TCP), tambin la forma codificar el mensaje
(ejemplo: texto plano o binario), tambin si el mensaje va encriptado o no. Toda
esta informacin esta almacenada en los Bindings.
Dnde. Los clientes necesitan saber una direccin especfica para poder
acceder a los endpoints. Cada endpoint tiene una direccin nica que identifica
al endpoint, ya que podra existir varios endpoints corriendo en el mismo
servidor.
Un servicio podra tener muchos endpoints, cada uno con su propio Address,
Binding y Contract (ABC), por ejemplo:
Todas estas opciones pueden ser manejadas fcilmente por los Bindings WCF. Donde
los bindings encapsulan todos estos requerimientos para enviar l mensaje del punto A
al punto B.
6. Mensaje Pipeline:
En WCF el mensaje que llega al servicio se mueve a travs de una pila de capas hasta
que este alcanza la implementacin del servicio. Cada una de estas capas de la pila
tiene un objetivo y propsito.
7. Elementos del Binding:
Los mensajes esta del binding estn construidos en base a tres elementos de los
bindings.
Ejemplo: Segn la codificacin de texto, como se ser ASCII, UTF8 o UTF6 (por
defecto es el UTF8). El siguiente ejemplo muestra una respuesta XML
codificado en texto plano:
WCF ofrece varios Binding ya construidos, de los mas comunes podran implementarse
en su dominio, los cuales se mencionan a continuacin:
Estos Bindings ya pre-definidos por defecto podran ser personalizados segn las
necesidades de uno. Ejemplo, el HTTP Binding tiene configurado protocolo de
seguridad a none, pero se podra personalizar a transport, de manera asegurar que el
servicio corra sobre HTTPS en lugar de HTTP.
Asimismo, WCF tambin te permite construir su propio Binding desde cero, estos se
llaman Custom Bindings.
WCF ofrece bindings ya predefinidos listos para ser aplicados en escenarios bsicos y
no tan bsicos, los cuales se detallan a continuacin:
Binding Resumen
Todos los bindings por defecto que provee WCF, ya estn pre-configurados. Pero esto
es posible personalizar aun mas segn el requerimiento del usuario. Una manera de
cambiar estas configuraciones es utilizando el archivo de configuracin (app.conf o
web.conf, este depende de la aplicacin que aloja al servicio):
Nota: Visual Estudio 2010 provee una herramienta grafica que nos permite
crear y editar los archivos de configuracin (web.conf o app.conf), esta
herramienta esta ubicado en Tools WCF Service Configuration Editor.
Para que un servicio este disponible para los clientes a travs de su configuracin de
sus endpoints, es necesario que este alojado en alguna aplicacin. Un servicio podra
ser alojado en algn ambiente donde exista un proceso de Windows.
Hosts comerciales, como ser IIS, WAS o Windows Server AppFabric, este tipo
especial de hosting adems de alojar, tambin toma en cuenta el manejo de
algunos problemas que podra tener el servicio, como ser registro, rendimiento
y gestin de la salud del mismo servicio.
WCF se encarga de muchas actividades que ocurren por detrs cuando se implementan
servicios, por ejemplo:
WCF se refiere a todos tems como capa del modelo de servicio, esta capa de modelo se
servicio est compuesto de diferentes componentes llamados dispatchers y cada uno de estos
dispatchers es responsable de una tarea especfica y cada uno de ellas tiene una configuracin
por defecto para el cual opera.
Una vez que el mensaje alcanza la cima de la pila de protocolos y antes de que este
sea recibido por la implementacin del servicio, existen otras cuestiones relacionados a
la implementacin del servicio necesitan ser tomados en cuenta, el dato del mensaje
necesita ser deserializado y el servicio necesita ser implementado y una apropiada
operacin de servicio necesita ser invocado.
Sabemos que el mecanismo para configurar los dispatchers se llama behaviours. WCF
ofrece un rango de behaviours que le permite controlar diferentes aspectos del servicio.
Asimismo, es posible configurar algunos behaviours aplicando atributos en el servicio y
configurar otros a travs de archivos de configuracin:
WCF ofrece diferentes maneras para consumir servicios utilizando el patrn de proxy.
1. El patrn Proxy:
Este proxy refleja el contrato del servicio implementando la misma interface que el
servicio expone, pero esta vez en el lado del cliente. Adems de ejecutar algunos
actividades extras e internos para poder comunicarse con el servicio.
Nota: Para poder crear la referencia proxy el servicio debe estar arriba y en un host, si
el servicio no esta disponible, entonces no ser posible obtener su metadato y el proxy
no ser creado.
Nota: Si se quiere construir nuestro propio servicio, entonces verificar que el servicio
exponga el documento WSDL, para exponer este documento el servicio debe tener
esta bandera httpGetEnabled configurado a true en el behaviour serviceMetadata.
Cada Proxy que se haya generado ser llamado segn el nombre de contrato y
aadiendo el sufijo Client, por ejemplo CalcClient. Ahora si el servicio expone algn
contrato de dato, WCF tambin generar clases para cada contrato, cada clase ser
llamada segn el nombre del contrato de dato, sin ningn sufijo o prefijo.
WCF tambin generar un archivo de configuracin del cliente que contiene la lista de
todos los endpoints del servicio, de modo que se pueda seleccionar fcilmente el
conjunto de endpoints que necesite el cliente, este archivo se ver como sigue:
Despues de construir los proxy clases y contratos de datos la herramienta Add Service
References tambin adiciona los espacios de nombres System.ServiceModel y
System.Runtime.Serialization, los cuales son requeridos para el desarrollo de WCF
desde el lado de cliente.
Utilizar el proxy: Una vez que el proxy fue creado, este esta listo para su uso, el
siguiente ejemplo muestra como utilizar la clase proxy CalcClient.
4. Demostracin:
Alojar el servicio.
o Windows service
Para trabajar con ChannelFactory<T>, el cliente necesita tener una referencia del
contrato de servicio y contrato de dato y conocer que endpoints tiene el servicio.
Nota: Utilizar el mismo contrato ayudar a mantener una buena sincronizacin entre el
cliente y servicio, pero cuando existen cambios en el lado del servicio, cada cambio
deber ser actualizado manualmente en el lado del cliente.
svcutil.exe http://localhost:8000/CustomersService?wsdl
/directory:C:\TestFolder
Otros:
WcfSvcHost.exe , SvcTraceViewer.exe y SvcConfigEditor.exe
Mas referencias en:
http://msdn.microsoft.com/es-es/library/aa347733.aspx
Lab: Ciclo de vida de
desarrollo de Servicios
Tareas:
Credenciales:
Usuario: Administrator
Contrasea: Pa$$w0rd
10. Seleccionar del men de Visual Studio Build Rebuild Solution, y ningn
error deber listarse en la ventana de errores
Tarea 2: Crear el contrato de servicio
1. Seleccionar y editar el archivo ICalculatorService.cs
2. Excribir cuatro contratos
[ServiceContract]
public interface ICalculatorService
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Sub(double n1, double n2);
[OperationContract]
double Mul(double n1, double n2);
[OperationContract]
double Div(double n1, double n2);
}
[DataContract]
public class OtherOperation
{
[DataMember]
public int FisrtOperation { get; set; }
[DataMember]
public int SecondOperation { get; set; }
}
3. El cdigo completo en el archivo ICalculatorService.cs se ver como sigue
namespace CalculatorService
{
public class CalculatorService : ICalculatorService
{
public double Add(double n1, double n2) { return n1 + n2; }
public double Sub(double n1, double n2) { return n1 - n2; }
public double Mul(double n1, double n2) { return n1 * n2; }
public double Div(double n1, double n2) { return n1 / n2; }
CalculatorService.CalculatorServiceClient proxy;
proxy = new CalculatorService.CalculatorServiceClient();
//proxy.Op1();
// Review functionalities
Console.WriteLine("Add = {0}", proxy.Add(n1, n2));
Console.WriteLine("Sub = {0}", proxy.Sub(n1, n2));
Console.WriteLine("Mul = {0}", proxy.Mul(n1, n2));
Console.WriteLine("Div = {0}", proxy.Div(n1, n2));
Console.WriteLine();
Console.WriteLine("First Operation = {0}", OpClient.FisrtOperation);
Console.WriteLine("Fisrt Operation = {0}", OpClient.FisrtOperation);
Console.WriteLine();
Console.WriteLine("Press any key in order to finish the application");
Console.ReadKey();
Crear un servicio
Hosting un servicio en una aplicacin web
Consumir un servicio utilizando la herramienta de Microsoft Add Service
Reference
Actualizar el servicio utilizando la herramienta de Microsoft Update Service
Reference
Verificar las que las actualizaciones en cdigo en el lado de cliente.