jueves, 28 de febrero de 2008
WCF - Creación dinámica de una clase proxy a partir de un WSDL
No sé si a alguien le puede venir bien este ejemplo, pero seguro que sí, en cualquier caso, aquí está, :-P
Se trata de un proyecto C# que permite crear "proxys" clientes a partir de un WSDL de forma dinámica.
Es un ejemplo de una calculadora muy sencillo pero que sin embargo y lo más importante es que puede modificarse y adaptase a nuestra necesidad con bastante facilidad.
He aquí la referencia para descargarlo y pegarse un poco más con el: http://wcf.netfx3.com/files/folders/development_tools/entry6148.aspx
Una vez Más espero haber ayudado un poquito.
Juanlu
Etiquetas: Framework .NET, WCF, Windows Communication Foundation
miércoles, 27 de febrero de 2008
Hosteando en IIS un WCF con Http Basic Authentication y Compatibilidad ASP.NET (HttpContext; Session, cookies, cache, etc)
Una vez más, sigo por aquí con VS2008 y con WCF, en esta ocasión trataré de comentar, como hostear en IIS un WCF basado en un binding "Http Basic Authentication" y conseguir hacer uso de nuestra conocida clase HttpContext. Son unos cuantos pasos muy fáciles y básicos, jejeje.. ¡claro, ahora que los conozco!
Los pasos a seguir para conseguir el objetivo de este post son:
- Crear un proyecto Web de tipo "WCF Service Application".
- La plantilla nos creará un proyecto con un Interfaz (Servicio) y una clase de datos (contrato), además un servicio, lo que es nuestro Web Service que ha de implementar obligatoriamente la Interfaz.
- Seguidamente modificamos el Web.config del servicio manualmente o con nuestro maravilloso editor (Windows Communication Foundation (WCF) - BUG 1) estableciendo principalmente la configuración tal y como muestro aquí un par de pantallazos:
- A continuación tenemos dos opciones para trabajar con la compatibilidad ASP NET:
- Anadir el attributo "AspNetCompatibilityRequirements" ([AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Allowed)]) al servicio, Service1 tal y como se muestra a continuación. Aprovechamos para establecer el Namespace, :-D, ¡ya sabéis "best practices"! (tempuri.org con WCF).
1 [ServiceBehavior(Namespace="http://elGuerre.loc/Service1/")]
2 [AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Allowed)]
3 public class Service1 : IService1
4 {
5 public string GetData(int value)
6 {
7 return string.Format("You entered: {0}", value);
8 }
9
10 public CompositeType GetDataUsingDataContract(CompositeType composite)
11 {
12 if (composite.BoolValue)
13 {
14 composite.StringValue += "Suffix";
15 }
16 return composite;
17 }
- y, añadir la siguiente línea en el web.config.
1 <system.serviceModel>
2 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
3 ...
O,
- Añadir el atributo "AspNetCompatibilityRequirements" ([AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Required)] y,
- no incluir la configuración en el web.config.
- Publicar el servicio ("Publish").
- Modificar las propiedades del sitio Web en IIS:
- Quitar autenticación anónima
- Activar autenticación básica (dejar activa solamente esta casilla).
Ahora tenemos la compatibilidad con ASP.NET pero con la potencia de WCF, nuestra clase HttpContext (session, cookies, cache, etc) está lista para ser usada.
Si estáis interesados en esto, aquí os dejo unas cuantas referencias:
Saludos @3Cantos
Juanlu
Etiquetas: WCF, Windows Communication Foundation