BITS (Background Intelligent Transfer Service) , Jobs , .NET y una de las respuestas de como pasar archivos grandes por http


Inicio

Hace algunas semanas conversando con mi amigo Ricardo Masabel sobre alternativas de como poder transmitir informacion “Con ciertos kilos de peso” via http , es de repente unas de las preguntas mas frecuentes al hablar de transmitir informacion,  para dar solución  evaluamos  alternativas , una de ellas es  BITS (Microsoft Background Intelligent Transfer Services) para el manejo de transferencia de archivos de forma asíncrona.

Caso:

El marco del problema fue la de procesar y validar  informacion para su manejo local y transmitir los resultados -archivos entre  250mb y 4gb – via http para su posterior ingreso a tablas en el servidor.

3373842193

Detalle del Servicio Utilizado:

Nombre: Servicio de transferencia inteligente en segundo plano.
Nombre en Inglés: Background Intelligent Transfer Service (BITS).
Ejecutable o DLL: qmgr.dll
Modo: Utiliza los espacios disponibles en la conexión para la transferencia de datos.

Comportamiento:

Maneja transferencias de archivos de forma asíncrona en primer plano o de fondo,  y  así preservar la capacidad de respuesta de otras aplicaciones de red, Se  crearan  Jobs o y transferencia para  supervisar el progreso de la transferencia de Jobs  en la cola.

3374697082

Algunas Caracteristicas:

Transferencia Reiniciables - Para transferir archivos, requiere una conexión de red y el usuario que ha creado el Job  que se registran en el ordenador. Si la conexión de red se pierde o el usuario cierra la sesión, se suspende el trabajo. Luego reanuda automáticamente el job desde donde lo dejó previamente cuando la conexión de red se restablece.

Seguridad-La solución podrá ir apoyada  básicamente de  NTLM, Negotiate, Recopilación, y la autenticación de Passport. apoya los protocolos HTTP y HTTPS cuando la privacidad y la integridad del trabajo es una preocupación.

Instalacion y Prueba Inicial

Primero instalaremos las extensiones BITS en el servidor IIS.

1-Nos dirigimos a Add/Remove Programs del panel de control.
2-Luego Add/Remove Programs y click en Add/Remove Windows Components del menú de la izquierda.
3-Click en Application Server y darle un click Details.
4-Click en Internet Information Services (IIS) y click en Details.
5-Marque Background Intelligent Transfer Service (BITS) Server Extensions y click en OK como se muestra en el siguiente grafico.

3375783250

6-Ahora nos dirigimos al IIS y creamos un directorio virtual “upload”, que apunte a un directorio físico “Upload”.

Consideraciones:

a)-El nombre del directorio físico y virtual puede renombrarse.
b)-Se tiene que colocar permisos al directorio virtual “Upload” de lectura y escritura.
c)-En el directorio virtual tomar en cuenta en la ficha Directory Security /Edit Deshabilitar la opción Enabled Anonymous Access , de no tomar en cuenta este paso cualquier usuario sin “autentificarse” podría transmitir archivos al servidor.
e)-Para acompañar la configuración en el paso (c), deberá asignar un usuario o grupo a la carpeta física así solo los usuarios del AD (Active Directory), pueden autentificarse y transmitir archivos al servidor.

*Para nuestro demostracion inicial puede trabajarlo de manera anonima

El siguiente grafico nos muestra  lo indicado en la consideracion (a) verificar que la opción read y write estén marcadas en el directorio virtual.

3374979019

El siguiente grafico nos muestra  lo indicado en la consideracion (c) verificar que el Check enabled anonymous Access se encuentre desmarcada, para que solo los usuarios autentificados puedan transmitir archivos.

Si está realizando pruebas iníciales puede mantenerlo activado para aceptar usuarios anonimos y la carpeta física encontrarse en “everyone”  control total , para que inicialmente pueda ver la prueba de la transmisión de manera anónima.

3374988609

7-para activar la opción de BITS en el directorio virtual nos dirigimos a la ficha BITS Server Extensión y marcamos las siguientes opciones:

a-Allow clients to transfer data to this virtual directory.
b)-Marque la opción Customize Settings
c)-La opción Maximum file Size indica el tamaño máximo de un archivo a transmitir por defecto en el cliente no se definió el tamaño exacto por que el requerimiento era de 300mb , 400mb , 1GB o NGB , no se marca la opción.
d)-Marcamos la opción Delete incomplete Jobs after e indicar en qué momento quiere que se eliminen los Jobs que quedaron suspendidos por algún error, esta configuración tiene como valor por defecto 14 días.

El siguiente grafico nos muestra las propiedades de  BITS en el servidor.

3374992851

8-Verificar en el servidor start/administrative tools/Services , para verificar el servicio de BITS se encuentre activo como se muestra en la siguiente grafico.

3375813668

Pruebas de transmisión

Para realizar las pruebas de transmisión usaremos el comando bitsadmin.exe desde la línea de comandos.

Requisitos:

1-Windows Vista (Incluido)
2-Windows XP (Herramientas de soporte técnico de Windows XP Service Pack 2)
http://www.microsoft.com/downloads/details.aspx?familyid=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=es

3-Windows 2003 (Windows Server 2003 Service Pack 1 Support Tools).
http://www.microsoft.com/downloads/details.aspx?FamilyId=6EC50B78-8BE1-4E81-B3BE-4E7AC4F0912D&displaylang=en

Prueba 1:

Asumiendo que la carpeta está aceptando everyone y el directorio virtual está aceptando autentificación anónima ejecutamos el siguiente comando:

bitsadmin /transfer MEMJob1 /Uploads /priority normal http://MIAMI/Uploads/archivo.dbf "D:\ArchivoOriginal.dbf"

Donde:
/transfer – es el comando de transferencia MEMJob1 el nombre del Job
/Upload o /Download – Parámetro que indica si se sube o descarga un archivo.
/Priority  - Prioridad.
http://MIAMI/Uploads/archivo.dbf - archivo.dbf nombre del archive que tendrá en el servidor.
D:\ArchivoOriginal.dbf – Ruta y archivo original en el cliente.

Resultado de la Prueba:

El grafico siguiente nos muestra la prueba del servicio transmitiendo un archivo de 1GB , cuando termine el proceso de envió en el servidor se deberá encontrar el archivo , con esta prueba tendremos claro que el servicio está corriendo sin problemas.

*Para ver el estado de la transmision solo invocamos al siguiente comando bitsadmin /monitor

3375830204

Prueba 2:

Carpeta física está asociado a un grupo o usuario.
En este caso el directorio virtual desactivaríamos la opción acceso anónimo y ejecutamos de la siguiente manera Bitsadmin con autentificación:

bitsadmin /create /upload PruebaCarga1
bitsadmin /addfile PruebaCarga1 http://MIAMI/Uploads/archivo.dbf "D:\archivooriginal.dbf"
bitsadmin /setcredentials PruebaCarga1 SERVER NEGOTIATE DOMINIO\userCarlos P@$$w0rd
bitsadmin /setpriority PruebaCarga1 NORMAL
bitsadmin /resume PruebaCarga1

Conclusiones:

El servicio BITS ya implementa toda la plomeria de trabajo con Jobs , Colas para temas de disponibilidad , manejo de transferencias reiniciables , el siguiente comando reiniciaria la transferencia.

bitsadmin /resume PruebaCarga1

Con esta prueba solo mostramos el uso del servicio logicamente existen “Background Intelligent Transfer Service .NET Wrapper” para la manipulacion de esta api desde nuestras aplicaciones NET pero segun sus comentarios y si fue de su interes enviamos la segunda parte , Saludos Carlos Chavez

Published 22/3/2009 16:35 por Carlos Chavez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/cchavez/archive/2009/03/22/bits-background-intelligent-transfer-service-jobs-net-y-una-de-las-respuestas-de-como-pasar-archivos-grandes-por-http.aspx

Comentarios

# re: BITS (Background Intelligent Transfer Service) , Jobs , .NET y una de las respuestas de como pasar archivos grandes por http

Gracias por compartir esta información, nos será de utilidad

Monday, March 23, 2009 5:57 PM por Julio Trujillo Leon