Pablo's profileEl blog de Pablo Castill...BlogLists Tools Help

Blog


    August 18

    WCF (Indigo): si quieres no tienes porqué utilizar un proxy formado a través del wsdl del servicio

    Poco a poco voy conociendo cosas nuevas del Indigo, pero una de las que más me ha gustado ha sido el hecho de no tener que definir un proxy mediante wsdl. La gracia consiste en que compartes la interfaz del servicio a ambos lados de la comunicación y eso queda ya como proxy, no la guarrería que te forma svcutil.

    Esto tampoco es un grandísimo avance, pero hace que los proyectos, y las comunicaciones, queden más limpios y no haya que refrescar los proxys. Por supuesto esto es únicamente útil cuando se controlan los dos puntos de la comunicación, pero en esos casos me parece la mejor opción. Al principio da un poco de cosa no tener la referencia en el proyecto, pero luego te acostumbras :P

    Ejemplo de como quedaría:

    DLL común entre el cliente y el servidor, se referencia a ambos lados de la comunicación:

    namespace Comun
    {
    [ServiceContract()]
    public interface IServicioIndigo
    {
    [OperationContract]
    string MyOperation1(DataSetPrueba ds);
    }
    }

     Servidor que implementa la interfaz (no varía respecto a otro servicio indigo normal)

    public class servicioIndigo : Comun.IServicioIndigo
    {
    public string MyOperation1(DataSetPrueba ds)
    {
    return "Hello: "
    }
    }

    Cliente (aquí hay alguna pijada):

    class PruebaEnCliente
    {
    public PruebaEnCliente()
    {
    ChannelFactory<IServicioIndigo> cf =new ChannelFactory<IServicioIndigo>("ep");

    IServicioIndigo isic = cf.CreateChannel();

    using (isic as IDisposable )
    {
    DataSetPrueba dsp =new DataSetPrueba();

    ClaseComun cm = new ClaseComun(dsp);

    Console.WriteLine(isic.MyOperation1(dsp));
    }
    }
    }

    Por cierto, me dí cuenta de esto buscando como pasar un dataset tipado del servidor al cliente y que mantenga el tipo exacto, no te forme el global::blablabla. También descubrí que svcutil /r: referenciadondeestáeltipo consigue ese efecto, no te forma el tipo global y le tienes que pasar la dll que lo contenga al cliente.

    Pues nada, espero que a alguien le parezca interesante.

    August 17

    Presentación

    Buenas,

    Simplemente quiero presentar mi blog. Tratará cosas técnicas, unas veces en español y otras en inglés para que haya un montón de gente que pueda criticar, para bien o para mal, las cosas que escriba.

    Pues nada, ¡saludos!