none
Multiples Interfaces en WCF RRS feed

  • Pregunta

  • Buenos días, hoy tengo otra consultita...

    Tengo varias interfaces y sus correspondientes clases, que utilizaré para el mantenimiento de varias tablas, en una  BD.

    he creado una interface con las funciones que tienen en común las clases, buscar, agregar, actualizar, etc...

    En cada una de las interfaces heredo de esta interfaz para poder utilizar los mismos métodos, pero..... existe alguna forma de identificar cuál clase es la que el cliente está solicitando?

    Esto porque quiero tener todos estos mantenimientos desde un mismo servicio

    viernes, 25 de noviembre de 2011 16:31

Todas las respuestas

  • hola

    en el endpoint cuando lo defienes alli indicas cual es la interfaz y cual la clase que implementa

    How to: Host a WCF Service in IIS

    como veras al definir el enpint indicas la implementacion del servicio, puedes usar la misma interfaz para varias implementaciones, pero el endpoint define todas las que expones

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 25 de noviembre de 2011 17:21
  • Bueno, talvez es que no me he explicado bien.

    Por favor corrígeme, Leandro, si estoy equivocado.

    Cuando accedo a un Servicio WCF, (por ejemplo por una referencia web en una aplicación), tengo tres cosas que interactúan en el servicio...

    1. La Interfaz que expongo, 2. La clase que la Implementa y 3. el Web.config que le indica al servicio qué cosas va a exponer, cierto?

    Ahora...

    Yo tengo dos interfaces: IPais, IProvincia. Ambas poseen una única función GetAll(). También tengo dos clases Pais y Provincia que implementan respectivamente las interfaces.

    <ServiceContract()> _
    Public Interface IPais
        <OperationContract()> _
        Function GetAll() as String
    End Interface
    
    Public Class Pais
        Implements IPais
    
        Public Function GetAll() as String Implements IPais.GetAll
            Return "Prueba Pais"
        End Function
    End Class
    
    <ServiceContract()> _
    Public Interface IProvincia
        <OperationContract()> _
        Function GetAll() as String
    End Interface
    
    Public Class Provincia
        Implements IProvincia
    
        Public Function GetAll() as String Implements IProvincia.GetAll
            Return "Prueba Provincia"
        End Function
    End Class
    

    Ahora, creo un archivo *.svc que no sé cómo debe ir.

    Luego, en el web.config, declaro un único servicio con dos endpoint, cada uno apuntando a una interfaz diferente pero entonces se me exige que el servicio implemente las dos interfaces y como ambas tienen el mismo nombre en la función, no me permite continuar.

    La única forma que he logrado es creando dos servicios diferentes, pero no me interesa esto, porque si deseo dar servicios de temas relacionados como en el ejemplo, pais, provincia, distrito, canton.... que pueden ser tablas de una base de datos que quiero administrar; entonces no veo porque tenga que hacer servicios separados, cuando todo podría tenerlo en un mismo servicio; pero en clases separadas.

    Me explico?

    viernes, 25 de noviembre de 2011 20:44