2010-12-15 9 views
5

In einem grundlegenden Szenario, in dem ich ein GridView mit Dateien zum Download und Link-Schaltflächen zum Download haben, gibt es überhaupt einen Vorteil für die Erstellung eines benutzerdefinierten http-Handler für das Streaming dieser Dateien im Gegensatz zu einfach Streaming aus dem Event-Handler der Download-Link-Taste?ashx vs aspx für Datei herunterladen

Edit:

Wie einig vorgeschlagen Wiederverwendung von Code würde die Handler bevorzugen, aber es ist nicht ein Problem in diesem besonderen Fall. Der Handler ist auch schneller, da er den Seitenlebenszyklus vermeidet, jedoch ist diese geringfügige Leistungsverbesserung wahrscheinlich nicht wert, einen Handler für meine spezielle Situation zu erstellen.

Die einzige Sache, die jetzt in den Sinn kommt, ist (unter der Annahme, die gleiche aspx Seite Ansatz), ob gibt es besondere Berücksichtigung in einer Situation, in der das GridView in einem UpdatePanel ist?

+1

Ich würde sagen gehen mit Handler. Die Seitenklasse hat ihre eigenen Macken. –

+0

Von welchen Macken sprichst du? – e36M3

Antwort

4

Planen Sie die Wiederverwendung der Funktionalität Ihres Downloads von mehr als einer Stelle in Ihrer Anwendung? Wenn Sie Ihren Download lose mit dem Rest Ihrer Anwendung koppeln möchten, ist ein Generic Handler ein guter Weg zu gehen, da Sie im Wesentlichen einen Dienst erstellen. Andernfalls, wenn Sie nur den Download von dieser Schaltfläche und nur diese Schaltfläche planen, können Sie die Logik dort belassen. Erinnern Sie sich, es gibt so etwas, wie Sie Ihre Bewerbung mehr als komplex machen, als es sein muss.

+0

Guter Punkt bei der Wiederverwendung, die Funktionalität wird in diesem Fall nicht wiederverwendet. Die einzige andere Sache, die jetzt in den Sinn kommt, ob ein Event-Handler innerhalb eines Update-Panels die Download-Box öffnen kann? Vielleicht werde ich damit auch die ursprüngliche Frage aktualisieren. – e36M3

2

Ich benutze ASHX für diese, da ich denke, dass sie eine kleinere Grundfläche haben und da ich überhaupt keine Benutzeroberfläche für das Streaming einer Datei brauche, sind diese perfekt für mich.

3

Es liegt wirklich an Ihnen. ASHXs haben nicht den gleichen Seitenlebenszyklus wie ein ASPX (kein OnLoad, usw.), werden im Allgemeinen als schneller betrachtet, da sie wenig Overhead haben, und sie haben nicht die zusätzliche Markup-Datei, die einem Webformular zugeordnet ist.

Sie können auch einen Webservice (ASMX) in Ihrer Anwendung in Erwägung ziehen.

+0

Einverstanden, ich weiß, es ist schlanker. Ich war mir nicht sicher, ob es einen anderen Vorteil für diese Route geben würde. Wenn ich bedenke, dass ich bereits eine Seite habe, die den Download-Link bereitstellt, wenn die Wiederverwendung kein Problem ist und die Leistung der einzige andere Vorteil ist, kann ich dies auch in einem Event-Handler auf derselben Seite tun. – e36M3

+0

Bei der Verwendung eines HTTPHandlers zum Herunterladen von Dateien geht es weniger um Leistung oder Wiederverwendung. Es hat eine bestimmte Aufgabe, eine Datei und nichts anderes zu authentifizieren und zu bedienen. Dies erfordert keinen Seitenlebenszyklus oder ein SOAP-Schema oder Ähnliches. Ihre aspx-Seite und asmx/wcf-Dienste sind effektiv auf HTTPHandlers aufgebaut. Ich stimme für die Verwendung von HTTPHandler für den Download Ihrer Dateien. – Phill