2012-08-03 10 views
5

Ich habe eine Anwendung auf Web- und mobilen Plattformen ausgeführt und die Benutzer können Fotos mit der App hochladen. Ich benötige einen Webservice, um das Hochladen und Anzeigen von Bildern sowohl in Web- als auch in mobilen Anwendungen zu ermöglichen.Verwenden der ASP.NET-Web-API als Image-Service

Ist es eine gute Idee, ASP.NET Web API als Image-Service zu nutzen und POST-Anfragen an sie für das Hochladen von Fotos zu machen? Was sind die Vor- und Nachteile dieses Ansatzes? Wird der ASP.NET-Web-API-Overhead für einen Dienst wie diesen verwendet?

Antwort

2

Es hängt davon ab, wie viel Nebenläufigkeit und wie viele Benutzer Ihre Anwendung haben kann.

Die Natur dieser Art von Anwendung ist I/O-centric, was bedeutet, dass der ASP.NET-Server die meiste Zeit für I/O-Operationen warten sein wird, zu vervollständigen. In Szenarios mit hoher Parallelität führt dies dazu, dass der ASP.NET-Thread-Pool mit dem Thread-Mangel abstürzt.

Ich würde empfehlen:

1) Wenn Sie die ASP.NET-Initiative halten, bitte, das Programmiermodell IAsync implementieren. Dadurch wird Ihre Webanwendung besser skalierbar.

2) Wenn Sie nicht mit IAsyncResult beschäftigen wollen, dann in der Mitte etwas Load Balancer setzen und horizontal skalieren, mehr Server hinzugefügt werden, wie Sie sie benötigen. Dies kann dazu führen, dass Sie Ihre ASP.NET-Anwendung als Webfarm neu entwerfen müssen, wodurch ein wenig Komplikationen auftreten (Sitzungsstatusverwaltung, Authentifizierung, Autorisierung usw.). Versuchen

3) eine andere Technologie ist Node.js gut kennt für den Umgang mit großen I/O mit hohen Latenz, Programmiermodelle.

12

ASP.NET Web API funktioniert hervorragend mit async I/O - es verwendet das neue aufgabenbasierte asynchrone Modell in .NET 4 (und insbesondere. NET 4.5), die es einfach macht, asynchrone Controller zu erstellen und mehrere zu koordinieren asynchrone Vorgänge Wenn dieses Modell für Sie neu ist, würde ich this presentation on channel9 empfehlen.

Für Uploads unterstützt ASP.NET Web API vollständig asynchronen MIME Multipart-Datei-Upload auf der Grundlage des gemeinsamen HTML-Datei-Upload-Modell aus einem Formular. Sie können ein Beispiel dafür in der FileUploadSample available as source sehen.

Es ist auch straight forward-Dateien zu dienen asynchron die StreamContent verwenden. Hier öffnest du (im Controller) eine Datei, erstellst eine HttpResponseMessage und fügst einen HttpContent in Form eines StreamContent ein, der die Datei umhüllt und das wars.

Dies alles passiert, ohne irgendwelche Threads auf E/A zu blockieren.

Hoffnung, das hilft,

Henrik

+0

Dank, sehr nützlich! Also, Sie denken, dass die neue ASP.NET Web API gut genug sein sollte, um als Service für die gesamte Bildverarbeitung zu dienen? –

+0

HttpResponseMessage ist in der Web-API nicht mehr verfügbar – Markive

Verwandte Themen