2012-08-03 11 views
5

Tengo una aplicación que se ejecuta en plataformas web y móviles y sus usuarios pueden cargar fotos con la aplicación. Necesito un servicio web para manejar la carga y visualización de imágenes en aplicaciones web y móviles.Uso de ASP.NET Web API como servicio de imágenes

¿Es una buena idea usar ASP.NET Web API como un servicio de imágenes y realizar solicitudes POST para subir fotos? ¿Cuáles son algunos pros y contras de este enfoque? ¿Está utilizando la sobrecarga de la API web ASP.NET para un servicio como este?

Respuesta

2

Depende de cuánta concurrencia y cuántos usuarios tenga su aplicación.

La naturaleza de este tipo de aplicación está centrada en E/S, lo que significa que su servidor ASP.NET estará la mayor parte del tiempo esperando que se completen las operaciones de E/S. En escenarios con concurrencia alta, esto hará que su grupo de subprocesos administrados de ASP.NET se bloquee con la falta de subprocesos.

recomendaría:

1) Si se mantiene la iniciativa ASP.NET, por favor, poner en práctica el modelo de programación IAsync. Esto hará que su aplicación web sea más capaz de escalar.

2) Si no desea ocuparse de IAsyncResult, coloque algunos equilibradores de carga en el medio y realice una escala horizontal, agregando más servidores cuando los necesite. Esto puede generar la necesidad de rediseñar su aplicación ASP.NET como Web Farm, agregando un poco de complicación (gestión de estado de sesión, autenticación, autorización, etc.).

3) Pruebe con una tecnología diferente, Node.js es bien conocido por tratar bien con la alta latencia de E/S, modelos de programación.

12

ASP.NET Web API funciona muy bien con la E/S asincrónica: utiliza el nuevo modelo asincrónico basado en tareas en .NET 4 (y particular .Net 4.5), lo que facilita la creación de controladores asíncronos y la coordinación de múltiples operaciones asincrónicas. Si este modelo es nuevo para usted, le recomendaría this presentation on channel9.

Para carga, ASP.NET Web API admite completamente la carga de archivos MIME multi asíncrono basado en el modelo común de carga de archivos HTML desde un formulario. Puede ver un ejemplo de esto en el FileUploadSample available as source.

También es sencillo servir archivos de forma asincrónica utilizando StreamContent. Aquí usted (en el controlador) abre un archivo, crea un HttpResponseMessage y adjunta un HttpContent en forma de un StreamContent que envuelve el archivo y eso es todo.

Todo esto sucede sin bloquear ningún subproceso en E/S.

Espero que esto ayude,

Henrik

+0

Gracias, muy útil! Entonces, ¿cree que la nueva API web ASP.NET debería ser lo suficientemente buena como para servir como un servicio para todo el procesamiento de imágenes? –

+0

HttpResponseMessage ya no está disponible en la API web – Markive