Es 2008, y todavía estoy desgarrado por este. Así que estoy desarrollando un método web que necesita un tipo complejo pasado y devuelto. Las dos opciones que estoy jugando con son:¿Cuál es su método preferido para enviar datos complejos a través de un servicio web?
pasar y devolver objetos de negocios reales con los datos y el comportamiento. Cuando se ejecuta wsdl.exe, creará automáticamente clases de proxy que contengan solo la porción de datos, y estos se convertirán automáticamente desde y hacia mis objetos comerciales reales en el lado del servidor. En el lado del cliente, solo podrán usar el tipo de proxy tonto, y deberán mapearlos en algunos objetos comerciales reales como mejor les parezca. Un gran inconveniente aquí es que si "poseo" tanto el lado del servidor como el del cliente, y quiero usar el mismo conjunto de objetos comerciales reales, puedo encontrarme con ciertos dolores de cabeza con conflictos de nombres, etc. (Dado que los objetos reales y el los proxies se nombran igual.)
Olvídese de intentar pasar objetos comerciales "reales". En su lugar, solo cree objetos simples DataTransfer que correlacionaré de ida y vuelta a mis objetos comerciales reales manualmente. De todos modos, wsdl.exe todavía los copia a objetos proxy nuevos, pero al menos no me estoy engañando a mí mismo al pensar que los servicios web pueden manejar de forma nativa los objetos con la lógica comercial en ellos.
Por cierto - ¿Alguien sabe cómo decirle a wsdl.exe no crea una copia del objeto? ¿No deberíamos poder decirlo, "Oye, usa este tipo existente aquí mismo. No lo copies!"
De todos modos, por el momento me he conformado con el # 2, pero tengo curiosidad por lo que piensan. Tengo la sensación de que hay manera mejores maneras de hacer esto en general, y puede que ni siquiera sea totalmente exacto en todos mis puntos, así que por favor déjenme saber cuáles han sido sus experiencias.
Actualización: Acabo de descubrir que VS 2008 tiene una opción para reutilizar los tipos existentes al agregar una "Referencia de servicio", en lugar de crear un nuevo tipo idéntico en el archivo proxy. Dulce.
gracias hombre! No pude comprimir el funcionamiento hasta que noté que leía el flujo de memoria ** después de ** eliminar el flujo de archivos zip. Aparentemente, lavar el flujo de zip no es suficiente ... – dotjoe