2008-09-05 13 views
6

Tenemos un servicio de encriptación que hemos expuesto en net.tcp. La mayoría de las veces, el servicio se usa para encriptar/desencriptar cadenas. Sin embargo, de vez en cuando, tenemos la necesidad de encriptar documentos grandes (pdf, jpg, bmp, etc.).Pasar archivos grandes al servicio WCF

¿Cuáles son las mejores configuraciones de punto final para un escenario como este? ¿Debo aceptar/devolver una transmisión? He leído mucho sobre esto, pero nadie brinda orientación sobre qué hacer cuando el archivo grande no ocurre con frecuencia.

Respuesta

4

MSDN describe how to enable streaming over WCF bastante bien.

Tenga en cuenta que si el enlace entre el cliente y el servidor necesita ser encriptado, entonces necesitará "hacer rodar su propio" mecanismo de cifrado. El cifrado predeterminado de net.tcp requiere certificados X.509, que no funcionarán con las transmisiones, ya que este tipo de cifrado debe funcionar en un mensaje completo de una sola vez en lugar de en una secuencia de bytes.

Esto, a su vez, significa que no podrá autenticar al cliente utilizando los mecanismos de seguridad predeterminados de WCF ya que la autenticación requiere cifrado. La única solución para esto que conozco es implementar sus propias extensiones de comportamiento personalizado en el cliente y el servidor para manejar la autenticación.

Una muy buena referencia sobre cómo agregar extensiones de comportamiento personalizado es here: esto documenta cómo proporcionar una configuración personalizada también (algo que no creo que se discuta en ningún lugar en los documentos de MSDN en este momento).

1

Un patrón que podría seguir es tener un servicio asíncrono que funciona en archivos en una ubicación del sistema de archivos compartidos:

  1. Coloque el archivo a cifrar en una ubicación compartida
  2. llamar al servicio y contar cifrar el archivo, pasando la ubicación y el nombre del archivo, y las direcciones de un servicio de devolución de llamada en el cliente
  3. El servicio cifraría el archivo y colocaría la copia cifrada en una ubicación compartida (igual que cuando no encriptado fue colocado o diferente, no importa)
  4. El servicio llamaría de vuelta al cliente, indicando el nombre y la ubicación del archivo cifrado
  5. El cliente puede recuperar el archivo cifrado
Cuestiones relacionadas