Pregunta

En nuestro proyecto estamos consumiendo servicios web WCF expuestos en el lugar central como servicios con basicHttpBinding .

En la aplicación cliente de escritorio que necesitamos consumir esos servicios web. Soy capaz de generar la clase proxy utilizando WSDL.exe.

Sin embargo, lo que necesito para convertir los datos / clase dada por el servicio web en mi clase local, para que ahora estoy xmlserialzing esas clases / objetos dados por el servicio web y deserializar en mis clases locales ya que tanto las clases de esquema coincide exactamente igual.

¿Hay alguna forma mejor que puedo seguir? o ¿Es necesario asignar a cada propiedad de una clase a otra?

Gracias NRK.

¿Fue útil?

Solución

  • declarar clase manualmente en lugar de generar. Esta es la solución más SECO.

  • AutoMapper

Otros consejos

Si usted tiene control sobre sus clases locales (que no se generan código, o que están generando ellos, usted mismo) que puede utilizar atributos XML para decorar su clase, por lo que puede serializar y deserializar a que XML se trabaja con y usted no tiene que tener nombres específicos para sus propiedades. Además de esto, es posible que tenga propiedades adicionales en su clase local.

Si no tiene el control sobre la definición de las clases locales, entonces usted tiene que definir un convertidor o como elder_george mencionado, utiliza AutoMapper.

El uso de un convertidor escrita manual de la OMI es la manera más rápida y se puede definirlos como operadores convertidor implícitos en su clase local.

He hecho lo serializar / deserializar mismo al igual que tenías. Si sus clases tienen las mismas propiedades que las clases de proxy se podría escribir un método de ayuda que utiliza la reflexión para repetir las propiedades del proxy y establecer las propiedades correspondientes de su clase. Mientras los nombres de propiedad son los mismos, que un método debería funcionar en todas las clases.

A pocos pensamientos:

  • uso compartido de montaje a través de WCF; esto le permite utilizar el mismo montaje real en ambos extremos. Mientras que esto es un montaje de DTO, esto está muy bien (no enormemente portátil, sin embargo). Esta es /reference (también /r) en svcutil.exe, o puede hacerlo a través de la IDE
  • DataContractSerializer uso y de ida y vuelta (como ya está; sólo que WCF mapas más estrechamente a DataContractSerializer, no XmlSerializer)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top