Experiencias con WCF: Leer y Escribir Imágenes a través de un servicio WCF
1.- Crear un nuevo servicio WCF, para esto vamos a Proyectos en VB->Web->WCF Service Application, le ponemos el nombre que gustamos, seguidamente nos crea un esquema de básico de un servicio WCF.
Bueno , para no hacernos tantas bolas de frente escribiremos en el “Service1” que nos provee la plantilla,
2.- Crear nuestros Métodos de Operaciones de Servicio “OperationContract” en nuestro Contrato
3.- Se pueden pasar imágenes por un servicio de distintas maneras en mi caso opte por pasar las imágenes mediante un Arreglo de Bytes, también debido que necesitaba puntual información de la Imagen ,decidí crearme una clase “DataContract” a la cual llamé “ImagenContract”
<DataContract()> _ Private _contenido As Byte() <DataMember()> _ <DataMember()> _ <DataMember()> _ <DataMember()> _ <DataMember()> _ <DataMember()> _ |
4.- Implemento la Interfaz de Servicio y toda la Lógica que necesita para los Métodos:
SaveImage: Se Crea el archivo a partir de la ruta del disco, le asigno un tamaño y partir del Método “Create” obtengo un Stream, teniendo el Stream y atreves del objeto BinaryWriter escribo en ese objeto el arreglo de bytes almacenados en la propiedad “Contenido”
LeerImagen: Cargo la imagen, verifico si existe el archivo, creo un Stream y a través del objeto BinaryReader obtengo el arreglo de bytes y lo almaceno en la propiedad “Contenido”
Hasta aquí lo implementado no escapa a nada de lo normal , sin embargo cuando queremos exponer el servicio para consumirlo se presentan varias dificultades, las que se me presentaron a mi fueron como: La Seguridad el servicio detenta inseguro el traspaso el arreglo de bytes, El Tamaño seteado en la propiedad “maxArrayLength” que por defecto puede ser muy inferior al tamaño en bytes de la imagen que deseamos pasar por el arreglo.
Para evitar estos problemas, elegí como Tipo de Binding de Servicio a “basicHttpBinding”, así también como “None” en la seguridad y aumentamos el Tamaño de “maxArrayLength”
(*) El Nombre del proyecto para esta demo en mi caso es “OracleTxAdoNet” si van a cambiar el Nombre del proyecto , fijarse en cambiar también la configuración del servicio.
Para consumir el servicio podemos utilizar el Wizard de VS, seleccionando nuestro proyecto Click Derecho->Add Service Reference y referenciando el servicio a través de la URL nos generará un Clase Cliente y un app.config con la configuración cliente para consumir el servicio, a esta configuración solo tendríamos que revisar la propiedad “maxArrayLength” y aumentar su tamaño.
Para hostear en este servicio en el IIS, tendría que tomar algunas consideraciones como Activar las “Características del Net Framework 3.0”->Activación WCF-> Activación HTTP todo esto en la Opción “Administrador del servidor”, menciono que en mi caso lo estoy hosteando en un Windows Server 2008
Después de realizado esto , pasamos a darle permisos de Escritura al usuario del IIS “IUSRS”
y Listo, Espero les haya ayudado tanto como a mí.
No comments yet
Jump to comment form | comment rss [?] | trackback uri [?]