Bagikan melalui


SoapFormatter Kelas

Definisi

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)

Berlaku untuk