SoapFormatter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menserialisasikan dan mendeserialisasi objek, atau seluruh grafik objek yang terhubung, dalam format 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
- Warisan
-
SoapFormatter
- Penerapan
Contoh
#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
Keterangan
Catatan
Dimulai dengan .NET Framework 2.0, kelas ini usang.
Peringatan
BinaryFormatter
tidak aman dan tidak dapat dibuat aman. Untuk informasi selengkapnya, lihat panduan keamanan BinaryFormatter.
Kelas SoapFormatter dan BinaryFormatter mengimplementasikan IRemotingFormatter antarmuka untuk mendukung panggilan prosedur jarak jauh (RPC), dan IFormatter antarmuka (diwariskan oleh IRemotingFormatter) untuk mendukung serialisasi grafik objek. Kelas ini SoapFormatter juga mendukung RPC dengan ISoapMessage objek, tanpa menggunakan IRemotingFormatter fungsionalitas.
Selama RPC, IRemotingFormatter antarmuka memungkinkan spesifikasi dua grafik objek terpisah: grafik objek untuk diserialisasikan, dan grafik tambahan yang berisi array objek header yang menyampaikan informasi tentang panggilan fungsi jarak jauh (misalnya, ID transaksi atau tanda tangan metode). Untuk serialisasi yang tepat, objek akar grafik pertama harus berupa objek yang mengimplementasikan IMethodCallMessage antarmuka atau IMethodReturnMessage antarmuka.
Selama deserialisasi RPC, HeaderHandler delegasi ditentukan ke Deserialize metode pemformat. Infrastruktur jarak jauh menggunakan HeaderHandler delegasi untuk menghasilkan objek yang mendukung ISerializable antarmuka. Objek ini berisi informasi yang disimpan di header, dan menjadi akar grafik yang dikembalikan oleh deserializer.
juga SoapFormatter dapat menangani RPC yang diproduksi dengan objek yang mengimplementasikan ISoapMessage antarmuka. Untuk membuat RPC tanpa menggunakan IRemotingFormatter fungsionalitas, tempatkan objek yang mendukung antarmuka di akar grafik yang diserialisasikan ISoapMessage . Untuk mendeserialisasi RPC yang dibuat dengan cara TopObject ini properti harus diatur ke objek lain yang mendukung ISoapMessage antarmuka, dan berisi informasi panggilan jarak jauh yang relevan.
Objek TimeSpan diserialisasikan sesuai dengan standar ISO 8601: 1998 bagian 5.5.3.2.1 "Alternatif".
Konstruktor
SoapFormatter() |
Menginisialisasi instans SoapFormatter baru kelas dengan nilai properti default. |
SoapFormatter(ISurrogateSelector, StreamingContext) |
Menginisialisasi instans SoapFormatter baru kelas dengan yang ditentukan ISurrogateSelector dan StreamingContext. |
Properti
AssemblyFormat |
Mendapatkan atau mengatur perilaku deserializer sehubungan dengan menemukan dan memuat rakitan. |
Binder |
Mendapatkan atau mengatur SerializationBinder yang mengontrol pengikatan objek berseri ke jenis. |
Context |
Mendapatkan atau mengatur yang StreamingContext digunakan dengan ini SoapFormatter. |
FilterLevel |
Mendapatkan atau mengatur TypeFilterLevel deserialisasi otomatis untuk jarak jauh .NET Framework. |
SurrogateSelector |
Mendapatkan atau mengatur SurrogateSelector yang mengontrol substitusi jenis selama serialisasi dan deserialisasi. |
TopObject |
Mendapatkan atau mengatur tempat ISoapMessage objek teratas SOAP dideserialisasi. |
TypeFormat |
Mendapatkan atau mengatur format di mana deskripsi jenis ditata dalam aliran serial. |
Metode
Deserialize(Stream) |
Mendeserialisasi data pada aliran yang disediakan dan menyusun ulang grafik objek. |
Deserialize(Stream, HeaderHandler) |
Mendeserialisasi aliran ke dalam grafik objek dengan header apa pun dalam aliran tersebut yang ditangani oleh .HeaderHandler |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
Serialize(Stream, Object) |
Menserialisasikan objek atau grafik objek dengan akar yang ditentukan ke Stream. |
Serialize(Stream, Object, Header[]) |
Menserialisasikan objek atau grafik objek dengan akar yang ditentukan ke yang diberikan Stream dalam format SOAP Remote Procedure Call (RPC). |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |