Ler em inglês

Partilhar via


SoapFormatter Classe

Definição

Serializa e desserializa um objeto ou um grafo inteiro de objetos conectados, em formato SOAP.

C#
public sealed class SoapFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
Herança
SoapFormatter
Implementações

Exemplos

C#
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);
        }
    }
}

Comentários

Nota

A partir do .NET Framework 2.0, essa classe está obsoleta.

Aviso

BinaryFormatter não é seguro e não pode ser transformado em seguro. Para saber mais, confira o Guia de segurança do BinaryFormatter.

As SoapFormatter classes e BinaryFormatter implementam a IRemotingFormatter interface para dar suporte a RPCs (chamadas de procedimento remoto) e à IFormatter interface (herdada pelo IRemotingFormatter) para dar suporte à serialização de um grafo de objetos. A SoapFormatter classe também dá suporte a RPCs com ISoapMessage objetos, sem usar a IRemotingFormatter funcionalidade .

Durante rpcs, a IRemotingFormatter interface permite a especificação de dois grafos de objeto separados: o grafo de objetos a serem serializados e um grafo adicional que contém uma matriz de objetos de cabeçalho que transmitem informações sobre a chamada de função remota (por exemplo, ID de transação ou uma assinatura de método). Para serialização adequada, o objeto raiz do primeiro grafo deve ser um objeto que implementa a IMethodCallMessage interface ou a IMethodReturnMessage interface .

Durante a desserialização de um RPC, um HeaderHandler delegado é especificado para o Deserialize método do formatador. A infraestrutura de comunicação remota usa o HeaderHandler delegado para produzir um objeto que dá suporte à ISerializable interface . Esse objeto contém as informações armazenadas nos cabeçalhos e se torna a raiz do grafo retornado pelo desserializador.

O SoapFormatter também pode manipular RPCs produzidos com objetos que implementam a ISoapMessage interface . Para criar um RPC sem usar a IRemotingFormatter funcionalidade, coloque um objeto que dê suporte à ISoapMessage interface na raiz de um grafo que está sendo serializado. Para desserializar um RPC criado dessa maneira, a TopObject propriedade deve ser definida como outro objeto que dê suporte à ISoapMessage interface e contém as informações de chamada remota relevantes.

Os objetos TimeSpan são serializados de acordo com o padrão "Alternativo" ISO 8601: 1998 5.5.3.2.1.

Construtores

SoapFormatter()

Inicializa uma nova instância da classe SoapFormatter com os valores da propriedade padrão.

SoapFormatter(ISurrogateSelector, StreamingContext)

Inicializa uma nova instância da classe SoapFormatter com o ISurrogateSelector e StreamingContext especificados.

Propriedades

AssemblyFormat

Obtém ou define o comportamento do desserializador em relação a encontrar e carregar assemblies.

Binder

Obtém ou define o SerializationBinder que controla a associação de um objeto serializado a um tipo.

Context

Obtém ou define o StreamingContext usado com este SoapFormatter.

FilterLevel

Obtém ou define o TypeFilterLevel de desserialização automática para comunicação remota do .NET Framework.

SurrogateSelector

Obtém ou define o SurrogateSelector que controla a substituição de tipo durante a serialização e a desserialização.

TopObject

Obtém ou define o ISoapMessage no qual o objeto superior do SOAP é desserializado.

TypeFormat

Obtém ou define o formato no qual as descrições de tipo são apresentadas no fluxo serializado.

Métodos

Deserialize(Stream)

Desserializa os dados no fluxo fornecido e reconstitui o grafo de objetos.

Deserialize(Stream, HeaderHandler)

Desserializa o fluxo em um grafo de objeto com os cabeçalhos nesse fluxo manipulados pelo HeaderHandler especificado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Serialize(Stream, Object)

Serializa um objeto ou grafo de objetos com a raiz especificada para o Stream especificado.

Serialize(Stream, Object, Header[])

Serializa um objeto ou grafo de objetos com a raiz especificada para o Stream fornecido no formato RPC (Chamada de Procedimento Remoto) SOAP.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Produto Versões
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1