今日は何か早くから目が覚めてしまったので、AtomPPの記事も読んだことだしちょっと遊んでみるかと(外は超寒いし風邪引きだし)、AtomPPのC#.NET実装をごにょごにょ。
実装方法は幾つか考えられますが、まずSOAPじゃつまらないしSOAPは対応しないなんてところもありがちそうなので、とりあえずRESTが目標。
簡単なリクエスト・レスポンスの基本モデルはあっという間に終了。X-WSSEってまだliverdoor・Blogger派対Typepad派に分かれてたんですね。収束してないんだなぁ。
うーんと悩んだのがレスポンスのXMLパースをどうするか。多分ここが一番のポイント。
方法は二通り考えられる。
1. XMLDocumentで受けてDOMで逐次解析
2. XMLスキーマに対応したクラスにXmlSerializer.Deserializeでデシリアル化して格納
1で確実に出来るのは当然。ならばと2を選択。スキーマ定義に対応したクラスを用意しないといけないが、今後の仕様変更にもある程度強くなるはず。
が。
自作でごにょごにょクラスを作って(結構時間かかる・・)Deserializeするとエラー。何度かカスタムメタデータ属性を入れ替え書き換えしても同じ。
試しているのは一番単純なweblogリストの取得なんだけど、何度試しても駄目。XMLDocumentには生成できるので、単なるデシリアル時の型問題のはずで、しかしながら間違ってないと思うんだけど・・。
ここでふと以前ウィザシステムの担当氏に教えてもらったAtom0.3のXSDを思い出して、このXSDから.NETのxsd.exeコマンドでクラスファイルを生成してみる。
因みにコマンドは以下の通り。
xsd.exe -c -l:c# -n:名前空間名 対象元のXSD.xsd
これでAtomの定義に沿ったクラス定義が自動生成されシリアル・デシリアルにも使用できる「はず」。
で試してみるものの、・・・駄目。
Deserializeでエラーは出なくなったものの、今度は返り値が常にnullになってしまう。。。具体的にはfeedTypeで受けているんだけど、これはweblogリストの取得には使えないのかな??
というところで、本日はタイムアウト。
うーん、方法論として間違っているのかという気もしてきた。来週時間が取れたらもう少し試してみよう。
ところで、どっかにいいXSD落ちてませんかねぇ。。。
僕も勘違いしてたみたいで、Typepad.jpもLivedoorとBloggerパターン(つまりrowパターン)で動いてました。
んでついでにBase64パターンで試しても動いちゃいました。
ひょっとして移行期のダブルスタンダードなんですかね。ま、全然いいんですが。
>なるほど。WSSEはNonceはBase64「しない」方向での収束傾向なんですね。
>ただ、現時点ではTypepadはまだBase64「する」仕様のままのような気がします。
すみません!寝ぼけ頭で支離滅裂な文章を書いてしまいました。逆でした。
LivedoorとBloggerの方に収束しているようです。そして、現在TypePad.jpでは、LivedoorとBlogger同じ方法で、とりあえずAtomAPIを使えています。
ココログはたぶん、未だ古いAtomライブラリを使っているような気がします。更新したら平田さんが教えてくれる!という事に(たぶん^^;)なっているので、まだなんだと思います。
>Delphiも.NET対応版とかだったら(ありませんでしたっけ??)
ありますあります。最新のDelphi2005。Win32と.Net両方対応で、DelphiとC#で開発できるという…。
でもMLで持ちきりなのが、Delphi2005はまだ不安定との話、今アップグレード申し込みの葉書を睨んで検討中だったりします^^;。
>「XMLさえ意識しない」
いずれそうなっていくのでしょうね…というか、本来はそうあるべきなのかもしれません。
こんにちは。
なるほど。WSSEはNonceはBase64「しない」方向での収束傾向なんですね。
ただ、現時点ではTypepadはまだBase64「する」仕様のままのような気がします。
>C#ではそんなことが出来るのですか…Delphiにもホシイ…。
C#というより.NETでの機能ですね。VBでもVC++でも似たり寄ったりの使い方は可能みたいです。
なのでDelphiも.NET対応版とかだったら(ありませんでしたっけ??)シリアル/デシリアル可能な気も。
> 残念ながら個人的にはDOMでイジル習性がついてしまっているので
仕事でEAIツールなんかもよく使うんですが、マッパーで変数マッピング出来たり、スキーマ定義に従って勝手に変数化してくれたりの機能があったりして、「XMLさえ意識しない」環境に慣れてたりします(甘やかされてるとも言います)。
比較してみるのも面白いので、もうちょっと試してみて、多分断念してDOMると思います(^^)
WSSEの件では、最新のTypePadでは修正されていて、ココログのはライブラリが古いままのようです。順次アップデートして行くとの事を平田さんが仰っていたようなきがするのですが、その後噂では、お子さんが誕生されたりで、詳しくは聞いていません。
>XMLスキーマに対応したクラスにXmlSerializer.Deserializeでデシリアル化して格納
C#ではそんなことが出来るのですか…Delphiにもホシイ…。
多分、仕様変更や拡張とかにも対応し易くなるんでしょうね。残念ながら個人的にはDOMでイジル習性がついてしまっているので、他の方法はなんとも…。