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
注釈
Note
このクラスは今後は使用しません。
Warning
BinaryFormatter は安全ではなく、セキュリティで保護することはできません。 詳細については、「BinaryFormatter セキュリティ ガイド」を参照してください。
SoapFormatterクラスとBinaryFormatter クラスは、リモート プロシージャ コール (RPC) をサポートするIRemotingFormatter インターフェイスと、オブジェクトのグラフのシリアル化をサポートするIFormatter インターフェイス (IRemotingFormatter によって継承されます) を実装します。 SoapFormatter クラスは、IRemotingFormatter機能を使用せずに、ISoapMessage オブジェクトを持つ RPC もサポートします。
RPC の間、 IRemotingFormatter インターフェイスでは、シリアル化するオブジェクトのグラフと、リモート関数呼び出しに関する情報を伝達するヘッダー オブジェクトの配列 (トランザクション ID やメソッドシグネチャなど) を含む追加のグラフという 2 つの個別のオブジェクト グラフを指定できます。 適切なシリアル化を行うには、最初のグラフのルート オブジェクトが、 IMethodCallMessage インターフェイスまたは IMethodReturnMessage インターフェイスを実装するオブジェクトである必要があります。
RPC の逆シリアル化中に、フォーマッタのDeserialize メソッドにHeaderHandler デリゲートが指定されます。 リモート処理インフラストラクチャは、 HeaderHandler デリゲートを使用して、 ISerializable インターフェイスをサポートするオブジェクトを生成します。 このオブジェクトにはヘッダーに格納されている情報が含まれており、逆シリアライザーによって返されるグラフのルートになります。
SoapFormatterでは、ISoapMessage インターフェイスを実装するオブジェクトで生成された RPC を処理することもできます。 IRemotingFormatter機能を使用せずに RPC を作成するには、シリアル化されるグラフのルートに、ISoapMessage インターフェイスをサポートするオブジェクトを配置します。 この方法で作成された RPC を逆シリアル化するには、 TopObject プロパティを、 ISoapMessage インターフェイスをサポートし、関連するリモート呼び出し情報を含む別のオブジェクトに設定する必要があります。
TimeSpan オブジェクトは、ISO 8601: 1998 セクション 5.5.3.2.1 "代替" 標準に従ってシリアル化されます。
コンストラクター
| 名前 | 説明 |
|---|---|
| SoapFormatter() |
既定のプロパティ値を使用して、 SoapFormatter クラスの新しいインスタンスを初期化します。 |
| SoapFormatter(ISurrogateSelector, StreamingContext) |
指定したSoapFormatterとISurrogateSelectorを使用して、StreamingContext クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AssemblyFormat |
アセンブリの検索と読み込みに関するデシリアライザーの動作を取得または設定します。 |
| Binder |
シリアル化されたオブジェクトの型へのバインドを制御する SerializationBinder を取得または設定します。 |
| Context |
このSoapFormatterで使用されるStreamingContextを取得または設定します。 |
| FilterLevel |
.NET Framework リモート処理の自動逆シリアル化のTypeFilterLevelを取得または設定します。 |
| SurrogateSelector |
シリアル化および逆シリアル化中に型の置換を制御する SurrogateSelector を取得または設定します。 |
| TopObject |
SOAP トップ オブジェクトが逆シリアル化される ISoapMessage を取得または設定します。 |
| TypeFormat |
シリアル化されたストリームで型の説明をレイアウトする形式を取得または設定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| 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) |