SoapFormatter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Serializuje a deserializuje objekt nebo celý graf propojených objektů ve formátu SOAP.
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
- Dědičnost
-
SoapFormatter
- Implementuje
Příklady
#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
Poznámky
Poznámka
Počínaje rozhraním .NET Framework 2.0 je tato třída zastaralá.
Upozornění
BinaryFormatter
je nezabezpečený a není možné ho zabezpečit. Další informace najdete v průvodci zabezpečením BinaryFormatter.
Třídy SoapFormatter a BinaryFormatter implementují IRemotingFormatter rozhraní pro podporu volání vzdálených procedur (RPC) a IFormatter rozhraní (zděděné objektem IRemotingFormatter) pro podporu serializace grafu objektů. Třída SoapFormatter také podporuje RPC s ISoapMessage objekty, bez použití IRemotingFormatter funkce.
Během RPC IRemotingFormatter rozhraní umožňuje specifikaci dvou samostatných grafů objektů: graf objektů, které se mají serializovat, a další graf, který obsahuje pole objektů hlaviček, které sdělují informace o vzdáleném volání funkce (například ID transakce nebo podpis metody). Pro správnou serializaci musí být kořenovým objektem prvního grafu objekt, který implementuje rozhraní IMethodCallMessage nebo IMethodReturnMessage rozhraní.
Během deserializace RPC, HeaderHandler delegát je určen pro metodu Deserialize formatter. Infrastruktura vzdálené komunikace používá HeaderHandler delegáta k vytvoření objektu, který podporuje ISerializable rozhraní. Tento objekt obsahuje informace uložené v hlavičkách a stane se kořenem grafu vráceného deserializátorem.
Může SoapFormatter také zpracovávat RPC, které jsou vytvořeny s objekty, které implementují rozhraní ISoapMessage . Chcete-li vytvořit RPC bez použití IRemotingFormatter funkce, umístěte objekt, který podporuje ISoapMessage rozhraní v kořenovém adresáři serializovaného grafu. Chcete-li deserializovat RPC vytvořený tímto způsobem TopObject , musí být vlastnost nastavena na jiný objekt, který podporuje ISoapMessage rozhraní a obsahuje relevantní vzdálené informace o volání.
Objekty TimeSpan jsou serializovány podle standardu ISO 8601: 1998 oddíl 5.5.3.2.1 "Alternativní".
Konstruktory
SoapFormatter() |
Inicializuje novou instanci SoapFormatter třídy s výchozími hodnotami vlastností. |
SoapFormatter(ISurrogateSelector, StreamingContext) |
Inicializuje novou instanci SoapFormatter třídy se zadanými ISurrogateSelector a StreamingContext. |
Vlastnosti
AssemblyFormat |
Získá nebo nastaví chování deserializátoru s ohledem na hledání a načítání sestavení. |
Binder |
Získá nebo nastaví SerializationBinder , který řídí vazbu serializovaného objektu na typ. |
Context |
Získá nebo nastaví použitou StreamingContext s tímto SoapFormatter. |
FilterLevel |
Získá nebo nastaví TypeFilterLevel automatické deserializace pro vzdálené komunikace rozhraní .NET Framework. |
SurrogateSelector |
Získá nebo nastaví SurrogateSelector , který řídí nahrazení typu během serializace a deserializace. |
TopObject |
Získá nebo nastaví, ISoapMessage do kterého soap horní objekt je deserializována. |
TypeFormat |
Získá nebo nastaví formát, ve kterém jsou popisy typů rozloženy v serializované datové proud. |
Metody
Deserialize(Stream) |
Deserializuje data o poskytnutém streamu a rekonstituuje graf objektů. |
Deserialize(Stream, HeaderHandler) |
Deserializuje datový proud do grafu objektů se všemi záhlavími v daném datovém proudu, které zpracovává daný HeaderHandlerdatový proud . |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Serialize(Stream, Object) |
Serializuje objekt nebo graf objektů se zadaným kořenem do daného Streamobjektu . |
Serialize(Stream, Object, Header[]) |
Serializuje objekt nebo graf objektů se zadaným kořenem na danou Stream ve formátu VZDÁLENÉ volání procedur SOAP (RPC). |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |