2011-12-10 10 views
5

強く型付けされたXSDで生成されたデータ型をパラメータとして受け取るメソッド(操作)で新しい.NET 4.0 WCFサービスを設定しています。これにより、クライアントはきれいできれいになります。クライアントは強力な型を扱うことができ、XMLについて考える必要はありません。WCFサービスインプリメンテーションでの生のXMLのXMLを取得

ただし、WCFサービスの実装では、逆シリアル化されたオブジェクト型ではなく、XMLドキュメント(LINQ XDocument)としてパラメータデータを処理することをお勧めします。 WCFが明示的な型にdeserializeするのは良いことですが、私のジェネリックアルゴリズムでは、主に入力データが多相であるため、xmlドキュメントを扱う方が便利で柔軟性があります。

私はパラメータオブジェクトを取得してXMLに戻すことができますが、これは無駄に思えます。

私はクライアントのために(コンパイラをチェックし、インテリセンス、自己のマニュアルを)私はおそらく私が実装の便宜のために欲しいものを得るためにXElementオブジェクトと強く型付けされたのparamsを置き換えることができますが、これは強い型付けの利益を失うことを理解しています。

私のサービスの実装では、逆シリアル化されたパラメータオブジェクトは必要ありませんが、代わりにそれらをXMLとして使用する必要があることをWCFに伝える方法はありますか?

また、WCFをオブジェクトにデシリアライズする前のように、元のXMLのXMLにアクセスする方法はありますか? WCFがオブジェクトをデシリアライズする時間を費やすことを防ぐことができない場合、少なくともXMLにそれらを再シリアライズするコストを避けることができます。

+0

私はまだそれは本当に面倒な価値があると思うでしょう、なぜserailizationとdeserilazationをスピードアップしないでください。 –

+0

@SurjitSamraあなたのご意見は分かりません。あなたは、WCFが面倒な価値がないと言っているのですか、生のXMLにアクセスすることへの私の関心は面倒なことではありませんか?不要なラウンドトリップを避ける以外に、シリアライゼーションやデシリアライゼーションのスピードアップについては何もできません。 – dthorpe

+0

申し訳ありませんが、実際には生のXMLにアクセスすることは面倒です。 WCFはすべての面倒を見る価値があります:)私は最近、WCFの10年以上前の.NET Remoting distrubutedシステムを移行しました。何かを注入すると、例えばmarc_sが言ったように私の場合、デシリアライゼーションは30ミリ秒未満しかかからなかったことを嬉しく思っていました。 –

答えて

3

これを実行する1つの方法は、サーバ上の着信メッセージを検査し、そのメッセージに作用する(例えば、離れて保存するなど)message inspectorを作成することです。

パブロPialorsiがgreat blog post on how to write a message inspectorを持っている、ステップ・バイ・ステップあなたは生のSOAPメッセージ形式のパラメータへのアクセスを与えるメッセージを点検

私はおそらくパラメータインスペクタが良い選択かもしれないと思っていましたが、それらのパラメータがいったんオブジェクトに逆シリアル化された後、これらのインスペクタがサービスコールのパラメータを取得するように見えます。実行可能なアプローチのようなサウンド....

+0

興味深い。調査します、ありがとう。 – dthorpe