SoapFormatter SoapFormatter SoapFormatter SoapFormatter Class

Definicja

Serializować i deserializacji obiektu lub całego wykresu połączonych obiektów w formacie protokołu SOAP.Serializes and deserializes an object, or an entire graph of connected objects, in SOAP format.

public ref class SoapFormatter sealed : System::Runtime::Remoting::Messaging::IRemotingFormatter
public sealed class SoapFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
type SoapFormatter = class
    interface IRemotingFormatter
    interface IFormatter
Public NotInheritable Class SoapFormatter
Implements IRemotingFormatter
Dziedziczenie
SoapFormatterSoapFormatterSoapFormatterSoapFormatter
Implementuje

Przykłady

#using <system.dll>
#using <system.runtime.serialization.formatters.soap.dll>

using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Soap;
void Serialize()
{
   
   // Create a hashtable of values that will eventually be serialized.
   Hashtable^ addresses = gcnew 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 keys/values), 
   // you must first open a stream for writing.
   // We will use a file stream here.
   FileStream^ fs = gcnew FileStream( "DataFile.soap",FileMode::Create );
   
   // Construct a SoapFormatter and use it 
   // to serialize the data to the stream.
   SoapFormatter^ formatter = gcnew SoapFormatter;
   try
   {
      formatter->Serialize( fs, addresses );
   }
   catch ( SerializationException^ e ) 
   {
      Console::WriteLine( "Failed to serialize. Reason: {0}", e->Message );
      throw;
   }
   finally
   {
      fs->Close();
   }

}

void Deserialize()
{
   
   // Declare the hashtable reference.
   Hashtable^ addresses = nullptr;
   
   // Open the file containing the data that we want to deserialize.
   FileStream^ fs = gcnew FileStream( "DataFile.soap",FileMode::Open );
   try
   {
      SoapFormatter^ formatter = gcnew SoapFormatter;
      
      // Deserialize the hashtable from the file and 
      // assign the reference to our local variable.
      addresses = dynamic_cast<Hashtable^>(formatter->Deserialize( fs ));
   }
   catch ( SerializationException^ e ) 
   {
      Console::WriteLine( "Failed to deserialize. Reason: {0}", e->Message );
      throw;
   }
   finally
   {
      fs->Close();
   }

   
   // To prove that the table deserialized correctly, 
   // display the keys/values to the console.
   IEnumerator^ myEnum = addresses->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DictionaryEntry^ de = safe_cast<DictionaryEntry^>(myEnum->Current);
      Console::WriteLine( " {0} lives at {1}.", de->Key, de->Value );
   }
}


[STAThread]
int main()
{
   Serialize();
   Deserialize();
}

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);
        }
    }
}
Imports System.IO
Imports System.Collections
Imports System.Runtime.Serialization

' Note: When building this code, you must reference the
' System.Runtime.Serialization.Formatters.Soap.dll assembly.
Imports System.Runtime.Serialization.Formatters.Soap


Module App

   Sub Main()
      Serialize()
      Deserialize()
   End Sub

   Sub Serialize()
      ' Create a hashtable of values that will eventually be serialized.
      Dim addresses As 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.
      Dim fs As New FileStream("DataFile.soap", FileMode.Create)

      ' Construct a SoapFormatter and use it 
      ' to serialize the data to the stream.
      Dim formatter As New SoapFormatter
      Try
         formatter.Serialize(fs, addresses)
      Catch e As SerializationException
         Console.WriteLine("Failed to serialize. Reason: " & e.Message)
         Throw
      Finally
         fs.Close()
      End Try
   End Sub


   Sub Deserialize()
      ' Declare the hashtable reference.
      Dim addresses As Hashtable = Nothing

      ' Open the file containing the data that you want to deserialize.
      Dim fs As New FileStream("DataFile.soap", FileMode.Open)
      Try
         Dim formatter As New SoapFormatter

         ' Deserialize the hashtable from the file and 
         ' assign the reference to the local variable.
         addresses = DirectCast(formatter.Deserialize(fs), Hashtable)
      Catch e As SerializationException
         Console.WriteLine("Failed to deserialize. Reason: " & e.Message)
         Throw
      Finally
         fs.Close()
      End Try

      ' To prove that the table deserialized correctly, 
      ' display the key/value pairs to the console.
      Dim de As DictionaryEntry
      For Each de In addresses
         Console.WriteLine("{0} lives at {1}.", de.Key, de.Value)
      Next
   End Sub
End Module

Uwagi

Uwaga

Począwszy od .NET Framework 2,0, ta klasa jest przestarzała.Beginning with the .NET Framework 2.0, this class is obsolete. Zamiast nich należy używać słów kluczowych BinaryFormatter.Use BinaryFormatter instead.

IFormatter IRemotingFormatterKlasy SoapFormatter iBinaryFormatter implementująIRemotingFormatter interfejs do obsługi zdalnych wywołań procedur (RPC) i interfejs (Dziedziczony przez) do obsługi serializacji grafu obiektów.The SoapFormatter and BinaryFormatter classes implement the IRemotingFormatter interface to support remote procedure calls (RPCs), and the IFormatter interface (inherited by the IRemotingFormatter) to support serialization of a graph of objects. Klasa obsługuje również wywołania RPC z ISoapMessage obiektami, bez korzystania z IRemotingFormatter tej funkcji. SoapFormatterThe SoapFormatter class also supports RPCs with ISoapMessage objects, without using the IRemotingFormatter functionality.

Podczas zdalnych wywołań procedury IRemotingFormatter interfejs umożliwia określenie dwóch oddzielnych grafów obiektów: Graf obiektów do serializacji oraz dodatkowy wykres zawierający tablicę obiektów nagłówka przekazujących informacje o wywołaniu funkcji zdalnej (dla przykład identyfikatora transakcji lub sygnatury metody).During RPCs, the IRemotingFormatter interface allows the specification of two separate object graphs: the graph of objects to serialize, and an additional graph that contains an array of header objects that convey information about the remote function call (for example, transaction ID or a method signature). Dla właściwej serializacji obiekt główny pierwszego wykresu musi być obiektem, który implementuje IMethodCallMessage Interfejs IMethodReturnMessage lub interfejs.For proper serialization, the root object of the first graph must be an object that implements either the IMethodCallMessage interface or the IMethodReturnMessage interface.

Podczas deserializacji wywołania RPC HeaderHandler do Deserialize metody programu formatującego jest określony delegat.During deserialization of an RPC, a HeaderHandler delegate is specified to the Deserialize method of the formatter. Infrastruktura zdalna używa HeaderHandler delegata do tworzenia obiektu, który ISerializable obsługuje interfejs.The remoting infrastructure uses the HeaderHandler delegate to produce an object that supports the ISerializable interface. Ten obiekt zawiera informacje przechowywane w nagłówkach i jest katalogiem głównym grafu zwracanym przez serializator.This object contains the information stored in the headers, and becomes the root of the graph returned by the deserializer.

Może również obsługiwać zdalne wywołania procedury, które są tworzone z obiektami, ISoapMessage które implementują interfejs. SoapFormatterThe SoapFormatter can also handle RPCs that are produced with objects that implement the ISoapMessage interface. Aby utworzyć zdalne wywołanie procedury (RPC IRemotingFormatter ) bez korzystania z tej funkcji, umieść ISoapMessage obiekt obsługujący interfejs w katalogu głównym grafu, który jest serializowany.To create an RPC without using the IRemotingFormatter functionality, place an object that supports the ISoapMessage interface at the root of a graph being serialized. Aby deserializować wywołanie RPC utworzone w ten sposób TopObject , właściwość musi być ustawiona na inny obiekt, który ISoapMessage obsługuje interfejs, i zawiera odpowiednie informacje o wywołaniu zdalnym.To deserialize an RPC created in this manner the TopObject property must be set to another object that supports the ISoapMessage interface, and contains the relevant remote call information.

Serializacja TimeSpanTimeSpan Serialization

Obiekty TimeSpan są serializowane według ISO 8601: 1998 sekcja 5.5.3.2.1 "alternatywny" Standard.TimeSpan objects are serialized according to the ISO 8601: 1998 section 5.5.3.2.1 "Alternative" standard.

Informacje o wersjiVersion Information

Program SoapFormatter nie obsługuje zgodności serializacji między wersjami .NET Framework.The SoapFormatter does not support serialization compatibility between versions of the .NET Framework. Serializacja między wersjami 1,1 i 2,0 typów w strukturze często kończy się niepowodzeniem.Serialization between versions 1.1 and 2.0 types in the Framework often fails. Aby rozwiązać ten problem, można wykonać następujące działania:The following actions can be taken to remedy this issue:

  • Konwertuj BinaryFormatter, aby użyć, która zapewnia zgodność z zakresu od 1,1 do 2,0.Convert to use the BinaryFormatter, which provides compatibility between 1.1 and 2.0.

  • Przekonwertuj istniejące utrwalone dane na nowy format.Convert existing persisted data to the new format.

  • Przekonwertuj wszystkich producentów i odbiorców serializowanych danych do wersji 2,0.Convert all producers and consumers of serialized data to version 2.0.

  • Należy unikać używania typów, które zmieniły się od 1,1 do 2,0.Avoid using types that changed from 1.1 to 2.0.

Konstruktory

SoapFormatter() SoapFormatter() SoapFormatter() SoapFormatter()

Inicjuje nowe wystąpienie SoapFormatter klasy z domyślnymi wartościami właściwości.Initializes a new instance of the SoapFormatter class with default property values.

SoapFormatter(ISurrogateSelector, StreamingContext) SoapFormatter(ISurrogateSelector, StreamingContext) SoapFormatter(ISurrogateSelector, StreamingContext) SoapFormatter(ISurrogateSelector, StreamingContext)

Inicjuje nowe wystąpienie SoapFormatter klasy z określonym ISurrogateSelector i StreamingContext.Initializes a new instance of the SoapFormatter class with the specified ISurrogateSelector and StreamingContext.

Właściwości

AssemblyFormat AssemblyFormat AssemblyFormat AssemblyFormat

Pobiera lub ustawia zachowanie deserializacji w odniesieniu do znajdowania i ładowania zestawów.Gets or sets the behavior of the deserializer with regards to finding and loading assemblies.

Binder Binder Binder Binder

Pobiera lub ustawia SerializationBinder kontrolkę, która kontroluje powiązanie serializowanego obiektu z typem.Gets or sets the SerializationBinder that controls the binding of a serialized object to a type.

Context Context Context Context

Pobiera lub ustawia StreamingContext używany z tym SoapFormatterelementem.Gets or sets the StreamingContext used with this SoapFormatter.

FilterLevel FilterLevel FilterLevel FilterLevel

Pobiera lub ustawia TypeFilterLevel automatyczną deserializacji dla .NET Framework komunikacji zdalnej.Gets or sets the TypeFilterLevel of automatic deserialization for .NET Framework remoting.

SurrogateSelector SurrogateSelector SurrogateSelector SurrogateSelector

Pobiera lub ustawia typ SurrogateSelector , który jest podstawiany podczas serializacji i deserializacji.Gets or sets the SurrogateSelector that controls type substitution during serialization and deserialization.

TopObject TopObject TopObject TopObject

Pobiera lub ustawia wartość ISoapMessage , do której jest deserializowany obiekt nadrzędny protokołu SOAP.Gets or sets the ISoapMessage into which the SOAP top object is deserialized.

TypeFormat TypeFormat TypeFormat TypeFormat

Pobiera lub ustawia format, w którym opisy typów są określane w serializowanym strumieniu.Gets or sets the format in which type descriptions are laid out in the serialized stream.

Metody

Deserialize(Stream) Deserialize(Stream) Deserialize(Stream) Deserialize(Stream)

Deserializacji dane z podanego strumienia i reprodukcji grafu obiektów.Deserializes the data on the provided stream and reconstitutes the graph of objects.

Deserialize(Stream, HeaderHandler) Deserialize(Stream, HeaderHandler) Deserialize(Stream, HeaderHandler) Deserialize(Stream, HeaderHandler)

Deserializacji strumienia do grafu obiektów z dowolnymi nagłówkami w tym strumieniu, które są HeaderHandlerobsługiwane przez daną.Deserializes the stream into an object graph with any headers in that stream being handled by the given HeaderHandler.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Inherited from Object)
Serialize(Stream, Object) Serialize(Stream, Object) Serialize(Stream, Object) Serialize(Stream, Object)

Serializować obiekt lub Graf obiektów z określonym elementem głównym do danego Streamelementu.Serializes an object or graph of objects with the specified root to the given Stream.

Serialize(Stream, Object, Header[]) Serialize(Stream, Object, Header[]) Serialize(Stream, Object, Header[]) Serialize(Stream, Object, Header[])

Serializować obiekt lub Graf obiektów z określonym elementem głównym do podanego Stream w formacie protokołu zdalnego wywołania procedury (RPC) SOAP.Serializes an object or graph of objects with the specified root to the given Stream in the SOAP Remote Procedure Call (RPC) format.

ToString() ToString() ToString() ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Inherited from Object)

Dotyczy