2012-08-03 15 views
5

Possiedo un'applicazione in esecuzione su entrambe le piattaforme Web e mobile e gli utenti possono caricare foto utilizzando l'app. Ho bisogno di un servizio web per gestire il caricamento e la visualizzazione di immagini su entrambe le applicazioni web e mobile.Utilizzo dell'API Web ASP.NET come servizio immagini

È consigliabile utilizzare l'API Web ASP.NET come servizio immagini e inoltrare richieste POST per caricare foto? Quali sono alcuni pro e contro di questo approccio? Sta usando l'overhead API Web ASP.NET per un servizio come questo?

risposta

2

Dipende dalla quantità di concorrenza e dal numero di utenti dell'applicazione.

La natura di questo tipo di applicazione è I/O centrica, il che significa che il server ASP.NET sarà la maggior parte del tempo in attesa del completamento delle operazioni di I/O. In scenari con concorrenza elevata, ciò causerà il blocco del pool di thread gestito da ASP.NET con la fame di thread.

mi raccomando:

1) Se si mantiene l'iniziativa ASP.NET, per favore, implementare il modello di programmazione IAsync. Ciò renderà la tua applicazione web più scalabile.

2) Se non si desidera gestire IAsyncResult, inserire un bilanciamento del carico nel mezzo e ridimensionarlo orizzontalmente, aggiungendo più server quando necessario. Ciò potrebbe comportare la necessità di riprogettare l'applicazione ASP.NET come Web Farm, aggiungendo un po 'di complicazioni (gestione dello stato della sessione, autenticazione, autorizzazione, ecc.).

3) Provare una tecnologia diversa, Node.js è ben noto per trattare alla grande con i modelli di programmazione di latenza I/O ad alta latenza.

12

L'API Web ASP.NET funziona perfettamente con I/O asincrono - utilizza il nuovo modello asincrono basato su attività in .NET 4 (e in particolare .Net 4.5) che rende semplice creare controller asincroni e coordinare più operazioni asincrone. Se questo modello è nuovo per te, ti consigliamo di utilizzare this presentation on channel9.

Per i caricamenti, l'API Web ASP.NET supporta il caricamento di file multipart MIME completamente asincrono basato sul modello di caricamento di file HTML comune da un modulo. Puoi vedere un esempio di questo nel FileUploadSample available as source.

È anche semplice inoltrare file in modo asincrono utilizzando StreamContent. Qui (nel controller) apri un file, crea un HttpResponseMessage e allega un HttpContent sotto forma di uno StreamContent che avvolge il file e il gioco è fatto.

Questo succede senza bloccare alcun thread su I/O.

Spero che questo aiuti,

Henrik

+0

Grazie, molto utile! Quindi, pensi che la nuova API Web ASP.NET dovrebbe essere sufficiente per servire come servizio per l'elaborazione di tutte le immagini? –

+0

HttpResponseMessage non è più disponibile nell'API Web – Markive

Problemi correlati