- PR -

XML Webサービスで利用できるコレクションは?

1
投稿者投稿内容
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2004-06-11 12:42
現在C#でXMLWebサービスを構築しております。
C/S間のインタフェース(Webサービスでやり取りするクラス)をHashTableなどKey,Valueの組み合わせを持つクラスを利用したいと考えています。
ところが、.NETではHashTableなどKey,Valueの組み合わせを持つクラスはWebサービス時のシリアライザーではシリアライズできないようで行き詰っております。

独自でクラスを作成して、シリアライズ方法も独自で実装すればできるとは思いますが、あまりそういうのはしたくありません。
ある程度のカスタマイズ仕方ないと思いますが、できるかぎり.NETの提供してるライブラリで実現したいと思っています。

何か良い方法やアイデアなどありましたらご教授下さい!
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-06-12 13:19
KeyとValueを持つDataTableを作って、DataSetに持たせるんじゃダメでしょうか?
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-06-12 15:10
こんなのは通るんですよね。
このファイルをstringにぶち込んでstringとして処理させたらどうなるんでしょう?
コード:

Hashtable myHT = new Hashtable();
myHT.Add("First", "Hello");
myHT.Add("Second", "World");
myHT.Add("Third", "!");

FileStream fs = new FileStream(Application.StartupPath + @"\Hashtable.xml",FileMode.Create);
SoapFormatter formatter = new SoapFormatter();
try
{
formatter.Serialize(fs, myHT);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}



[ メッセージ編集済み 編集者: えムナウ 編集日時 2004-06-12 15:12 ]
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2004-06-12 17:37
みなさん貴重なご意見ありがとうございます!

>えムナウさん
なるほど、XmlSerializer以外のシリアライズをして、そのデータをWebサービスで利用するんですね。
2段階のシリアライズ処理になってしまいますのでちょっと速度の点を見てみないといけませんが、一度試してみます!

>小野@どっとねっとふぁんさん
DataSetをラップしてやれば確かにHashチックなものが作れて
シリアライズも特に意識しなくても勝手にしてくれるでしょうし、いいですねぇ!
ありがとうございます、試してみます!

試してみた結果はまたご報告させていただきます。
ほかにも何かいい案がありましたらお願いします!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-14 12:07
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=11177
マルチポストをリンク
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-06-14 12:24
引用:

なるほど、XmlSerializer以外のシリアライズをして、そのデータをWebサービスで利用するんですね。



引用:

DataSetをラップしてやれば確かにHashチックなものが作れて
シリアライズも特に意識しなくても勝手にしてくれるでしょうし、いいですねぇ!



は(特に後者)クライアント/サーバともに .NET な場合しか通用しないんじゃないでしょうか?

Hash の引渡しにスキーマを定義するのも面倒だし、ごく素朴に、Hash を Key のみの配列と Value のみの配列に分離して引き渡す、とかの方がよさそうに思えます。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
1

スキルアップ/キャリアアップ(JOB@IT)