Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

SoapFormatter-Klasse

Serialisiert und deserialisiert ein Objekt oder ein vollständiges Diagramm verbundener Objekte im SOAP-Format.

System.Object
  System.Runtime.Serialization.Formatters.Soap.SoapFormatter

Namespace:  System.Runtime.Serialization.Formatters.Soap
Assembly:  System.Runtime.Serialization.Formatters.Soap (in System.Runtime.Serialization.Formatters.Soap.dll)

public sealed class SoapFormatter : IRemotingFormatter, 
	IFormatter

Der SoapFormatter-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeSoapFormatter()Initialisiert eine neue Instanz der SoapFormatter-Klasse mit Standardeigenschaftswerten.
Öffentliche MethodeSoapFormatter(ISurrogateSelector, StreamingContext)Initialisiert eine neue Instanz der SoapFormatter-Klasse mit der angegebenen ISurrogateSelector und den angegebenen StreamingContext.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftAssemblyFormatRuft das Verhalten des Deserialisierungsprogramms bezüglich des Suchens und Ladens von Assemblys ab oder legt dieses fest.
Öffentliche EigenschaftBinderRuft den SerializationBinder ab, der die Bindung eines serialisierten Objekts an einen Typ steuert, oder legt diesen fest.
Öffentliche EigenschaftContextRuft den StreamingContext ab, der mit diesem SoapFormatter verwendet wird, oder legt diesen fest.
Öffentliche EigenschaftFilterLevelRuft das TypeFilterLevel der automatischen Deserialisierung für .NET Framework Remoting ab oder legt dieses fest.
Öffentliche EigenschaftSurrogateSelectorRuft den SurrogateSelector ab, der die Typersetzung während der Serialisierung und Deserialisierung steuert, oder legt diesen fest.
Öffentliche EigenschaftTopObjectRuft die ISoapMessage ab, in die das oberste SOAP-Objekt deserialisiert wird, oder legt diese fest.
Öffentliche EigenschaftTypeFormatRuft das Format für das Layout von Typbeschreibungen im serialisierten Stream ab oder legt dieses fest.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeDeserialize(Stream)Deserialisiert die Daten im bereitgestellten Stream und stellt das Diagramm von Objekten wieder her.
Öffentliche MethodeDeserialize(Stream, HeaderHandler)Deserialisiert den Stream in ein Objektdiagramm, wobei sämtliche Header im betreffenden Stream durch den angegebenen HeaderHandler behandelt werden.
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte MethodeFinalizeGibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeSerialize(Stream, Object)Serialisiert ein Objekt oder ein Objektdiagramm mit dem angegebenen Stamm in den angegebenen Stream.
Öffentliche MethodeSerialize(Stream, Object, Header[])Serialisiert ein Objekt oder ein Objektdiagramm mit dem angegeben Stammobjekt im SOAP-RPC-Format (Remote Procedure Call, Remoteprozeduraufruf) in den angegebenen Stream.
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

HinweisHinweis

Ab ist diese Klasse veraltet. Verwenden Sie stattdessen BinaryFormatter.

Die SoapFormatter-Klasse und die BinaryFormatter-Klasse implementieren die IRemotingFormatter-Schnittstelle, um RPCs (Remote Procedure Calls, Remoteprozeduraufrufe) zu unterstützen. Außerdem wird die IFormatter-Schnittstelle (geerbt von IRemotingFormatter) implementiert, um die Serialisierung eines Objektdiagramms zu unterstützen. Die SoapFormatter-Klasse unterstützt außerdem RPCs mit ISoapMessage-Objekten, ohne dabei die IRemotingFormatter-Funktionen zu verwenden.

Während eines RPC lässt die IRemotingFormatter-Schnittstelle die Spezifikation zweier separater Objektdiagramme zu: das Diagramm der zu serialisierenden Objekte sowie ein weiteres Diagramm mit einem Array von Headerobjekten, die Informationen über den Remotefunktionsaufruf übermitteln (z. B. die Transaktions-ID oder eine Methodensignatur). Für die ordnungsgemäße Serialisierung muss das Stammobjekt des ersten Diagramms ein Objekt sein, das entweder die IMethodCallMessage-Schnittstelle oder die IMethodReturnMessage-Schnittstelle implementiert.

Während der Deserialisierung eines RPC wird ein HeaderHandler-Delegat für die Deserialize-Methode des Formatierungsprogramms angegeben. Die Remotinginfrastruktur erstellt mithilfe des HeaderHandler-Delegaten ein Objekt, das die ISerializable-Schnittstelle unterstützt. Dieses Objekt enthält die in den Headern gespeicherten Informationen und wird zum Stammobjekt des Diagramms, das vom Deserialisierungsprogramm zurückgegeben wird.

Der SoapFormatter kann auch RPCs behandeln, die mit Objekten erstellt werden, die die ISoapMessage-Schnittstelle implementieren. Um einen RPC ohne Verwendung der IRemotingFormatter-Funktionen zu erstellen, platzieren Sie auf der Stammebene eines serialisierten Diagramms ein Objekt, das die ISoapMessage-Schnittstelle unterstützt. Um einen auf diesem Weg erstellten RPC zu deserialisieren, muss die TopObject-Eigenschaft auf ein weiteres Objekt festgelegt werden, das die ISoapMessage-Schnittstelle unterstützt und die relevanten Informationen über den Remoteaufruf enthält.

TimeSpan-Serialisierung

TimeSpan-Objekte werden nach ISO 8601: 1998, Abschnitt 5.5.3.2.1, "Alternativer" Standard, serialisiert.

Versionsinformationen

Der SoapFormatter unterstützt keine Serialisierungskompatibilität zwischen Versionen von .NET Framework. Die Serialisierung zwischen Typen der Versionen 1.1 und 2.0 im Framework schlägt oft fehl. Die folgenden Aktionen können ausgeführt werden, um dieses Problem zu beheben:

  • Verwenden Sie stattdessen den BinaryFormatter, der Kompatibilität zwischen 1.1 und 2.0 bereitstellt.

  • Konvertieren Sie vorhandene beibehaltene Daten in das neue Format.

  • Konvertieren Sie alle Producer und Consumer der serialisierten Daten in Version 2.0.

  • Vermeiden Sie es, Typen zu verwenden, die sich zwischen 1.1 und 2.0 geändert haben.


using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization;

// Note: When building this code, you must reference the
// System.Runtime.Serialization.Formatters.Soap.dll assembly.
using System.Runtime.Serialization.Formatters.Soap;


class App 
{
    [STAThread]
    static void Main() 
    {
        Serialize();
        Deserialize();
    }

    static void Serialize() 
    {
        // Create a hashtable of values that will eventually be serialized.
        Hashtable addresses = new Hashtable();
        addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052");
        addresses.Add("Fred", "987 Pine Road, Phila., PA 19116");
        addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301");

        // To serialize the hashtable (and its key/value pairs), 
        // you must first open a stream for writing.
        // Use a file stream here.
        FileStream fs = new FileStream("DataFile.soap", FileMode.Create);

        // Construct a SoapFormatter and use it 
        // to serialize the data to the stream.
        SoapFormatter formatter = new SoapFormatter();
        try 
        {
            formatter.Serialize(fs, addresses);
        }
        catch (SerializationException e) 
        {
            Console.WriteLine("Failed to serialize. Reason: " + e.Message);
            throw;
        }
        finally 
        {
            fs.Close();
        }
    }


    static void Deserialize() 
    {
        // Declare the hashtable reference.
        Hashtable addresses  = null;

        // Open the file containing the data that you want to deserialize.
        FileStream fs = new FileStream("DataFile.soap", FileMode.Open);
        try 
        {
            SoapFormatter formatter = new SoapFormatter();

            // Deserialize the hashtable from the file and 
            // assign the reference to the local variable.
            addresses = (Hashtable) formatter.Deserialize(fs);
        }
        catch (SerializationException e) 
        {
            Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
            throw;
        }
        finally 
        {
            fs.Close();
        }

        // To prove that the table deserialized correctly, 
        // display the key/value pairs to the console.
        foreach (DictionaryEntry de in addresses) 
        {
            Console.WriteLine("{0} lives at {1}.", de.Key, de.Value);
        }
    }
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Anzeigen: