BinaryFormatter Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cuidado
BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.
Serializa e desserializa um objeto ou um grafo inteiro de objetos conectados, em formato binário.
public ref class BinaryFormatter sealed : System::Runtime::Serialization::IFormatter
public ref class BinaryFormatter sealed : System::Runtime::Remoting::Messaging::IRemotingFormatter
public sealed class BinaryFormatter : System.Runtime.Serialization.IFormatter
[System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class BinaryFormatter : System.Runtime.Serialization.IFormatter
public sealed class BinaryFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class BinaryFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
type BinaryFormatter = class
interface IFormatter
[<System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type BinaryFormatter = class
interface IFormatter
type BinaryFormatter = class
interface IRemotingFormatter
interface IFormatter
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryFormatter = class
interface IRemotingFormatter
interface IFormatter
Public NotInheritable Class BinaryFormatter
Implements IFormatter
Public NotInheritable Class BinaryFormatter
Implements IRemotingFormatter
- Herança
-
BinaryFormatter
- Atributos
- Implementações
Comentários
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).
RPCs que usam o BinaryFormatter separado em duas partes distintas: chamadas de método, que são enviadas para o servidor com o objeto remoto que contém o método chamado e respostas de método, que são enviadas do servidor para o cliente com as informações de status e resposta do método chamado.
Durante a serialização de um método, chame o primeiro objeto do grafo de objeto deve dar suporte à IMethodCallMessage interface . Para desserializar uma chamada de método, use o Deserialize método com o HeaderHandler parâmetro . A infraestrutura de comunicação remota usa o HeaderHandler delegado para produzir um objeto que dá suporte à ISerializable interface . Quando o BinaryFormatter invoca o HeaderHandler delegado, ele retorna o URI do objeto remoto com o método que está sendo chamado. O primeiro objeto no grafo retornado dá suporte à IMethodCallMessage interface .
O procedimento de serialização para uma resposta de método é idêntico ao de uma chamada de método, exceto que o primeiro objeto do grafo de objeto deve dar suporte à IMethodReturnMessage interface . Para desserializar uma resposta de método, use o DeserializeMethodResponse método . Para economizar tempo, os detalhes sobre o objeto do chamador não são enviados para o objeto remoto durante a chamada de método. Em vez disso, esses detalhes são obtidos da chamada de método original, que é passada para o DeserializeMethodResponse método no IMethodCallMessage parâmetro . O primeiro objeto no grafo retornado pelo DeserializeMethodResponse método dá suporte à IMethodReturnMessage interface .
Importante
Usar a serialização binária para desserializar dados não confiáveis pode levar a riscos de segurança. Para obter mais informações, consulte Validar todas as entradas e o guia de segurança BinaryFormatter.
Substitutos não pagos
Todos os caracteres alternativos não emparelhados são perdidos na serialização binária. Por exemplo, a cadeia de caracteres a seguir contém um caractere (\ud800
Unicode alternativo alto ) entre as duas Test
palavras:
Test\ud800Test
Antes da serialização, a matriz de bytes da cadeia de caracteres é a seguinte:
Valor da matriz de bytes | Caractere |
---|---|
84 | T |
101 | e |
115 | s |
116 | t |
55296 | \ud800 |
84 | T |
101 | e |
115 | s |
116 | t |
Após a desserialização, o caractere Unicode alternativo alto é perdido:
Valor da matriz de bytes | Caractere |
---|---|
84 | T |
101 | e |
115 | s |
116 | t |
84 | T |
101 | e |
115 | s |
116 | t |
Construtores
BinaryFormatter() |
Obsoleto.
Inicializa uma nova instância da classe BinaryFormatter com valores padrão. |
BinaryFormatter(ISurrogateSelector, StreamingContext) |
Obsoleto.
Inicializa uma nova instância de BinaryFormatter classe com um seletor substituto determinado e o contexto de streaming. |
Propriedades
AssemblyFormat |
Obsoleto.
Obtém ou define o comportamento do desserializador em relação a encontrar e carregar assemblies. |
Binder |
Obsoleto.
(Não seguro) Obtém ou define um objeto do tipo SerializationBinder que controla a associação de um objeto serializado a um tipo. |
Context |
Obsoleto.
Obtém ou define o StreamingContext para esse formatador. |
FilterLevel |
Obsoleto.
Obtém ou define o TypeFilterLevel de desserialização automática que o BinaryFormatter executa. |
SurrogateSelector |
Obsoleto.
Obtém ou define um ISurrogateSelector que controla a substituição de tipo durante a serialização e desserialização. |
TypeFormat |
Obsoleto.
Obtém ou define o formato no qual as descrições de tipo são apresentadas no fluxo serializado. |
Métodos
Deserialize(Stream) |
Obsoleto.
Desserializa o fluxo especificado em um grafo de objeto. |
Deserialize(Stream, HeaderHandler) |
Obsoleto.
Desserializa o fluxo especificado em um grafo de objeto. O HeaderHandler fornecido manipula qualquer cabeçalho nesse fluxo. |
DeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage) |
Obsoleto.
Desserializa uma resposta a uma chamada de método remoto do Stream fornecido. |
Equals(Object) |
Obsoleto.
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Obsoleto.
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obsoleto.
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Obsoleto.
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Serialize(Stream, Object) |
Obsoleto.
Serializa o objeto ou grafo de objetos com o topo (raiz) especificado para o fluxo especificado. |
Serialize(Stream, Object, Header[]) |
Obsoleto.
Serializa o objeto ou o grafo de objetos com o topo (raiz) especificado para o fluxo determinado, anexando os cabeçalhos fornecidos. |
ToString() |
Obsoleto.
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
UnsafeDeserialize(Stream, HeaderHandler) |
Obsoleto.
Desserializa o fluxo especificado em um grafo de objeto. O HeaderHandler fornecido manipula qualquer cabeçalho nesse fluxo. |
UnsafeDeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage) |
Obsoleto.
Desserializa uma resposta a uma chamada de método remoto do Stream fornecido. |