1

XML で Web サービスからデータを受信して​​おり、受信した XML に基づいて構築されたオブジェクトを介してそのデータを使用しています。そのため、セッション内のリクエスト間でそのようなユーザー固有のオブジェクトを保存する必要がある場合があります。XMLDocument を明示的に格納できないことはわかっています (状態サーバー)...そのため、次のようなひどい構造を作成しています。

private string _data;
public XmlDocument Data
{
    get
    {
        XmlDocument res = new XmlDocument();
        if (!string.IsNullOrEmpty(_data))
        {
            res.InnerXml = _data;
            return res;
        }
        return null;
    }
    set { _data = value.InnerXml; }
} 

したがって、暗黙的にxmlを保存しています...オブジェクト全体から必要なプロパティが正確にわからないため、開発中に役立ちます-ピンチでxpathなどを使用して簡単な実験的プロパティを作成できます...

私にとっては快適ですが、そのクラスのプロパティからデータを取得する必要があるたびに、文字列から xmldocument を構築するのは非常に非効率的です。回避策はありますか?) ありがとうございます。

4

1 に答える 1

2

リクエスト間でデータを保存する必要がある場合、1 つの例外を除いて、リクエストごとにデータをシリアライズおよびデシリアライズする必要はありません。インプロセス セッションを使用すると、必要なオブジェクトを格納できます。これには、XMLDocument オブジェクトや (これについて言及することを許してください) 開いているファイル ハンドルやデータベース接続も含まれます。ただし、アプリケーションをインプロセス セッションに依存させることはお勧めしません。必要になった場合にアプリケーションを Web ファームに配置する可能性がなくなるからです。

あなたの最善の選択肢は、現在の戦略を最適化することだと思います。XMLDocument がリクエストごとに 1 回だけ再構築されるようにしていますか? XMLDocument を構築する代わりに、XML データが実際にどのように使用されるかによっては、XMLReader を使用する方が効率的かもしれません。

于 2009-10-19T17:25:27.360 に答える