技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

SoapFormatter 経由でシリアライズとかしてみる。

前回のコードの BinaryFormatter を SoapFormatter に変更して、System.Runtime.Serialization.Formatters.Soap 参照を突っ込む。

そして出来上がったXMLが、

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<a1:Game id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/UsingSoapFormatter/UsingSoapFormatter%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<CERO id="ref-3">D</CERO>
<_x003C_Hard_x003E_k__BackingField href="#ref-4"/>
<_x003C_Title_x003E_k__BackingField id="ref-5">VANQUISH</_x003C_Title_x003E_k__BackingField>
<_x003C_Genre_x003E_k__BackingField id="ref-6">FPS</_x003C_Genre_x003E_k__BackingField>
<_x003C_Price_x003E_k__BackingField>7980</_x003C_Price_x003E_k__BackingField>
</a1:Game>
<SOAP-ENC:Array id="ref-4" SOAP-ENC:arrayType="a1:HardwereType[2]" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/UsingSoapFormatter/UsingSoapFormatter%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<item>PS3</item>
<item>XBox360</item>
</SOAP-ENC:Array>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

皆言うよね、「SOAPのSがSimpleの略だなんて笑えないジョークだ。」って。

気が付けば、非推奨機能になってるとか。

http://msdn.microsoft.com/ja-jp/library/system.runtime.serialization.formatters.soap.soapformatter.aspx?ppud=4

細かいのを抜いて、RPC的に使えないし、1.1 と 2.0 でシリアライズ結果に互換性ないし、BinaryFormatter 使ってねとのことらしい。