다음을 통해 공유


SoapFormatter 클래스

정의

개체나 연결된 개체의 전체 그래프를 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
상속
SoapFormatter
구현

예제

#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

설명

참고

.NET Framework 2.0부터 이 클래스는 사용되지 않습니다.

경고

BinaryFormatter는 안전하지 않으며 안전하게 할 수 없습니다. 자세한 내용은 BinaryFormatter 보안 가이드를 참조하세요.

SoapFormatterBinaryFormatter 클래스 구현 합니다 IRemotingFormatter 원격 프로시저 호출 (Rpc)을 지원 하기 위해 인터페이스 및 IFormatter 인터페이스 (에서 상속는 IRemotingFormatter) 개체 그래프 serialization을 지원 합니다. 합니다 SoapFormatter 클래스에서는 Rpc ISoapMessage 개체를 사용 하지 않고는 IRemotingFormatter 기능.

Rpc를 하는 동안는 IRemotingFormatter 인터페이스를 사용 하면 두 개의 별도 개체 그래프의 사양을: (원격 함수 호출에 대 한 정보를 전달 하는 헤더 개체의 배열을 포함 하는 그래프를 추가 하 고 serialize 할 개체 그래프 예, 트랜잭션 ID 또는 메서드 서명을). 적절 한 serialization에 대 한 첫 번째 그래프의 루트 개체 중 하나를 구현 하는 개체 여야 합니다 IMethodCallMessage 인터페이스 또는 IMethodReturnMessage 인터페이스입니다.

RPC 역직렬화 하는 동안를 HeaderHandler 대리자에 지정 된 된 Deserialize 포맷터의 메서드. 원격 인프라를 사용 합니다 HeaderHandler 지 원하는 개체를 생성 하는 대리자는 ISerializable 인터페이스입니다. 이 개체는 머리글에 저장 된 정보를 포함 및 역직렬 변환기에 의해 반환 된 그래프의 루트가 됩니다.

합니다 SoapFormatter 구현 하는 개체를 사용 하 여 생성 되는 Rpc를 처리할 수도 있습니다는 ISoapMessage 인터페이스입니다. RPC를 사용 하지 않고 만드는 합니다 IRemotingFormatter 기능을 지 원하는 개체를 현재 위치를 ISoapMessage serialize 되는 그래프의 루트에 있는 인터페이스입니다. 이 방식으로 만든 RPC를 역직렬화하는 데는 TopObject 지 원하는 다른 개체에 속성을 설정 해야 합니다 ISoapMessage 인터페이스 및 관련 원격 호출 정보를 포함 합니다.

TimeSpan 개체는 ISO 8601: 1998 5.5.3.2.1 섹션 "대체" 표준에 따라 직렬화 됩니다.

생성자

SoapFormatter()

기본 속성 값으로 SoapFormatter 클래스의 새 인스턴스를 초기화합니다.

SoapFormatter(ISurrogateSelector, StreamingContext)

지정된 SoapFormatterISurrogateSelector를 사용하여 StreamingContext 클래스의 새 인스턴스를 초기화합니다.

속성

AssemblyFormat

어셈블리를 찾고 로드하는 작업과 관련된 역직렬 변환기 동작을 가져오거나 설정합니다.

Binder

특정 형식으로 serialize된 개체의 바인딩을 제어하는 SerializationBinder를 가져오거나 설정합니다.

Context

StreamingContext와 함께 사용되는 SoapFormatter를 가져오거나 설정합니다.

FilterLevel

.NET Framework Remoting에 대한 자동 deserialization의 TypeFilterLevel을 가져오거나 설정합니다.

SurrogateSelector

serialization 및 deserialization을 수행하는 동안 형식 대체를 제어하는 SurrogateSelector를 가져오거나 설정합니다.

TopObject

SOAP 최상위 개체가 역직렬화되는 ISoapMessage를 가져오거나 설정합니다.

TypeFormat

serialize된 스트림에서 형식 설명을 레이아웃하는 형식을 가져오거나 설정합니다.

메서드

Deserialize(Stream)

제공된 스트림의 데이터를 역직렬화하고 개체의 그래프를 다시 구성합니다.

Deserialize(Stream, HeaderHandler)

지정된 HeaderHandler에서 처리하는 스트림의 모든 헤더와 함께 해당 스트림을 개체 그래프로 역직렬화합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Serialize(Stream, Object)

지정된 루트를 갖는 개체 그래프 또는 개체를 지정된 Stream으로 serialize합니다.

Serialize(Stream, Object, Header[])

지정된 루트를 갖는 개체 그래프 또는 개체를 SOAP RPC(원격 프로시저 호출) 형식의 지정된 Stream으로 serialize합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상