2010-07-24 7 views

Antwort

6

Es gibt keinen einzigen "besten" Weg. Gäbe es, dann gäbe es wahrscheinlich nur einen Weg. Es hängt wirklich von Ihrer Situation, Ihren Bedürfnissen und Prioritäten ab.

Das heißt, ich benutze Base64-Codierung jede Chance, die ich bekomme, weil es Spaß macht und einfach! :)

+2

Diese Antwort machte mich lol. – tster

1

ich vor kurzem implementiert haben diese einen WCF-Dienst verwenden und wählte Byte verwenden [] als Verfahren zur Bestimmung der Datei transportieren, da es recht einfach zu implementieren war:

public byte[] DownloadFile(string fileName) 
{ 
    var stream = System.IO.File.OpenRead(fileName); 

    byte[] fileContent = new byte[stream.Length]; 
    stream.Read(fileContent, 0, fileContent.Length); 

    return fileContent; 
} 

Das obige Beispiel ist vereinfacht, da ich nicht einen Dateinamen direkt an den WCF-Dienst vorbei, aber ich bin sicher, dass Sie die allgemeine Idee =)

2

In WCF Sie ein Stream-Objekt von einer Methode zurückgeben kann:

public Stream GetImage(string name) 
{ ... } 

Wenn Sie ein reines SOAP-basiertes Protokoll haben, müssen Sie sich an Grundelemente wie byte [] halten. Dies ist eine schlechte Leistung, aber es gibt wirklich keinen besseren Weg. Möglicherweise müssen Sie die Datei in mehrere Teile segmentieren, damit dies für alle Clients funktioniert. Einige SOAP-Clients erlauben keine großen Antworten, daher haben wir die Antwort in 30k-Teile aufgeteilt.

Der beste Weg, um das Bild zu übertragen, ist, keinen der obigen Ansätze zu verwenden, sondern eine HTTP-Anfrage direkt an das Bild auszuführen und all dies zu vermeiden. Dies ist, was wir jetzt verwenden, keine Codierung, keine Client-Verarbeitung, direkt auf die Festplatte gestreamt. Sie müssen Ihren spezifischen Anwendungsfall untersuchen, um festzustellen, ob dieser angewendet werden kann.

0

Sie können auch nur die URL zum Bild zurückgeben und dann den Client einen unformatierten HTTP-Aufruf an die zurückgegebene URL senden, um das Image abzurufen.

Dank
VM

+0

nicht, wenn es darum geht, das Bild auf einen anderen Server/Dienst zu übertragen – BerggreenDK

Verwandte Themen