Was ist der beste Weg, um ein Bild in C# zu übertragen?Was ist der beste Weg, um ein Bild über einen Webservice in C# zu übertragen?
- Bitmap-Objekt
- Byte-Array
- Bildobjekt?
Was ist der beste Weg, um ein Bild in C# zu übertragen?Was ist der beste Weg, um ein Bild über einen Webservice in C# zu übertragen?
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! :)
Diese Antwort machte mich lol. – tster
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 =)
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.
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
nicht, wenn es darum geht, das Bild auf einen anderen Server/Dienst zu übertragen – BerggreenDK
Welche Art von Web-Service beziehen Sie sich? Ein Legacy-Dienst ".asmx" oder ein WCF-Dienst ".svc"? – Rob