SoapFormatter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
설명
메모
이 클래스는 사용되지 않습니다.
Warning
BinaryFormatter는 안전하지 않으며 안전하게 할 수 없습니다. 자세한 내용은 BinaryFormatter 보안 가이드를 참조하세요.
및 클래스는 SoapFormatter RPC(원격 프로시저 호출) 및 BinaryFormatter 개체 그래프의 serialization을 지원하기 위해 인터페이스(상속IRemotingFormatter)를 지원하는 인터페이스를 구현 IFormatterIRemotingFormatter 합니다. 이 클래스는 SoapFormatter 기능을 사용하지 ISoapMessage 않고 개체가 있는 IRemotingFormatter RPC도 지원합니다.
RPC IRemotingFormatter 중에 인터페이스를 사용하면 직렬화할 개체 그래프와 원격 함수 호출에 대한 정보를 전달하는 헤더 개체 배열(예: 트랜잭션 ID 또는 메서드 서명)이 포함된 추가 그래프의 두 개의 개별 개체 그래프를 지정할 수 있습니다. 적절한 serialization을 위해 첫 번째 그래프의 루트 개체는 인터페이스 또는 IMethodCallMessage 인터페이스를 구현하는 IMethodReturnMessage 개체여야 합니다.
RPC HeaderHandler 를 역직렬화하는 동안 대리자는 포맷터의 메서드에 Deserialize 지정됩니다. 원격 인프라는 대리자를 HeaderHandler 사용하여 인터페이스를 지원하는 개체를 ISerializable 생성합니다. 이 개체는 헤더에 저장된 정보를 포함하며 역직렬 변환기가 반환한 그래프의 루트가 됩니다.
인터페이스를 SoapFormatter 구현하는 개체로 생성된 RPC도 처리할 ISoapMessage 수 있습니다. 기능을 사용하지 않고 RPC를 IRemotingFormatter 만들려면 직렬화되는 그래프의 루트에 인터페이스를 지원하는 ISoapMessage 개체를 배치합니다. 이러한 방식으로 TopObject 만든 RPC를 역직렬화하려면 이 속성을 인터페이스를 지원하는 ISoapMessage 다른 개체로 설정하고 관련 원격 호출 정보를 포함해야 합니다.
TimeSpan 개체는 ISO 8601: 1998 섹션 5.5.3.2.1 "대체" 표준에 따라 직렬화됩니다.
생성자
| Name | Description |
|---|---|
| SoapFormatter() |
기본 속성 값을 사용하여 클래스의 새 인스턴스를 SoapFormatter 초기화합니다. |
| SoapFormatter(ISurrogateSelector, StreamingContext) |
지정된 클래스와 .를 사용하여 클래스의 SoapFormatter 새 인스턴스를 ISurrogateSelector 초기화합니다 StreamingContext. |
속성
| Name | Description |
|---|---|
| AssemblyFormat |
어셈블리 찾기 및 로드와 관련하여 역직렬 변환기의 동작을 가져오거나 설정합니다. |
| Binder |
serialize된 개체의 SerializationBinder 바인딩을 형식으로 제어하는 개체를 가져오거나 설정합니다. |
| Context |
이 StreamingContext항목과 함께 사용되는 값을 SoapFormatter 가져오거나 설정합니다. |
| FilterLevel |
.NET Framework 원격에 대한 자동 역직렬화의 TypeFilterLevel 가져오거나 설정합니다. |
| SurrogateSelector |
serialization 및 deserialization 중에 해당 컨트롤이 형식 대체를 가져오거나 설정합니다 SurrogateSelector . |
| TopObject |
SOAP 위쪽 개체가 ISoapMessage 역직렬화되는 개체를 가져오거나 설정합니다. |
| TypeFormat |
serialize된 스트림에 형식 설명이 배치되는 형식을 가져오거나 설정합니다. |
메서드
| Name | Description |
|---|---|
| Deserialize(Stream, HeaderHandler) |
지정된 HeaderHandler스트림에서 처리되는 해당 스트림의 헤더를 사용하여 스트림을 개체 그래프로 역직렬화합니다. |
| Deserialize(Stream) |
제공된 스트림의 데이터를 역직렬화하고 개체 그래프를 다시 구성합니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| Serialize(Stream, Object, Header[]) |
지정된 루트를 가진 개체 또는 개체 그래프를 SOAP RPC(원격 프로시저 호출) 형식으로 지정 Stream 한 개체에 직렬화합니다. |
| Serialize(Stream, Object) |
지정된 루트를 사용하여 개체 또는 개체의 그래프를 지정된 Stream루트로 직렬화합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |