none
Como implementar WebServices que publiquen un modelo de dominio? RRS feed

  • Pregunta

  • Tengo el siguiente problema que no se como resolver sin destruir la rquitectura de mi modelo de dominio:

    Existe una libreria DLL que contiene todo el modelo de dominio, basicamente la entendemos como una clase Factory de una clase interna, y una interfaz, en la DLL solo publicamos la interfaz y la Factory, de esa forma en el cliente, hacemos algo como:

    IClaseInterna=objFactory.CrearNuevaClaseInterna();

    De esa forma encapsulamos logica, y ofrecemos interfaces homogeneas y escalables.

     

    El problema se da cuando quiero usar un WebService(WS) para publicar mi modelo de dominio en una red. a mi WS le implemento un metodo CrearClaseInterna() que devuelva una clase abstracta a modo de interfaz (por q no podemos publicar interfaces por WS(????)) y por dentro hace la llamada a mi factory.

    Quien iba a pensar que al ejecutar esto aparece un error en el WS en run-time diciendo que no puedo ejecutar semejante cosa dado que mi clase Internal es justamente NO-PUBLICA!! incluso a pesar de estar enmascarada en una clase abstracta PUBLICA.

    La preguna es:

    Alguien sabe como puedo implementar el WS manteniendo mi modelo de dominio lo mas intacto posible? si no se entiende esto avisen que mando el codigo

    Gracias y Saludos!

    lunes, 3 de mayo de 2010 14:03

Respuestas

  • hola

    en el servicio web que objetos estas devolviendo ? es una de tu dominio

    lo que suelo hacer en estos caso es crear clases de transporte, o sea si tiene una clase cliente, crear una de nomre dtoCliente, y devolver esta en el servicio web

    lo malo de esto es que hay que mapear y despmapear cada objeto, ya que en el servicio web neceistas consulta a tu dominio, recuperar el Cliente, y luego transformar este a dtCliente

    pero podrias ayudarte con algo como esto

    AutoMapper: the Object-Object Mapper

    AutoMapper and IoC

    o sea el problema esta en que estas pasando en el servicio objetos de tu dominio directo, lo cual no es recomendable

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 3 de mayo de 2010 14:18

Todas las respuestas

  • hola

    en el servicio web que objetos estas devolviendo ? es una de tu dominio

    lo que suelo hacer en estos caso es crear clases de transporte, o sea si tiene una clase cliente, crear una de nomre dtoCliente, y devolver esta en el servicio web

    lo malo de esto es que hay que mapear y despmapear cada objeto, ya que en el servicio web neceistas consulta a tu dominio, recuperar el Cliente, y luego transformar este a dtCliente

    pero podrias ayudarte con algo como esto

    AutoMapper: the Object-Object Mapper

    AutoMapper and IoC

    o sea el problema esta en que estas pasando en el servicio objetos de tu dominio directo, lo cual no es recomendable

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 3 de mayo de 2010 14:18
  • A ver si entendi, basicamente entonces deberia crear en mi WS una serie de clases publicas que representen mis interfaces implementadas en mi modelo de dominio? de ahi vienen lo problemas de mapeo no?

     

    saludos!

    lunes, 3 de mayo de 2010 14:59

  • asi es exactamente, serian tus clases de transporte, de esta forma desacoplas tu dominio con la implementacion del envio de la info por el web service

    como comente el trabajo laborioso es mapear y desmapear las entidades, en donde el 90% del timpo tendran la misma estructura

    pero con algunas tools podrias hacerlo ams simple

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 3 de mayo de 2010 15:02
  • si, ahi estaba leyendo los links! vaya cantidad de recursos que tenes man!

    en cualquier caso, muchas gracias, =mente me queda pendiente saber por que no podria yo publicar mi interfaz definida en mi dominio de manera publica y feliz, a traves de un WS!

     

    saludos!

    lunes, 3 de mayo de 2010 15:12