1

Web アプリは Web サービスから XML を使用し、XSLT を使用して HTML に変換します。アプリは、HttpModule を使用して、AddOnPreRequestHandlerExecuteAsync を使用して XML を取得します。

使用するクラス: XmlDocument - xml を格納します。XslCompiledTransform - 変換を格納し、アプリケーションにキャッシュされます。フックされた AddOnPreRequestHandlerExecuteAsync イベントで BeginGetResponse/EndGetResponse HttpModule を使用する非同期 HttpWebRequest。

他に可能な最適化がない限り、XPathDocument を使用したくありません。XmlDocument に書き込む機能がなければ、すべての XML をまとめるには複雑なコードが必要になります。ドキュメントに追加する必要がある、Web サービスに由来しない追加の XML があります。

どんな提案でもいいでしょう。サーバーにメモリの問題があるようには見えませんが、それが何かの証拠である場合は、CPU 使用率が非常に高いだけです。

ありがとう。

アップデート

よく調べた結果、CPU が競合する原因となっている問題は、実際には無限 (またはそれに近い) ループであることがわかりました。これは私のコードにはまったく含まれておらず、発生している場所の性質上、プロファイリングから隠されていました。ここでの教訓として、意味が分からない場合は、コードをバラバラにする前に、問題の別の理由を探してください。

4

4 に答える 4

0

プロファイラーを使用してみてください。DotTraceANTSには試用版があります。これにより、問題を特定できるようになります。(dotTraceの良いところは、単体テストと統合できることです。)

于 2010-02-25T21:53:28.917 に答える
0

Web サービスは同じサーバー上にありますか? その場合、サービス自体をテストすると、CPU 使用率が高いことが示されますか?

変換されたドキュメントをどのようにキャッシュに入れていますか?

于 2010-02-25T21:44:18.327 に答える
0

.NET のバージョンは? XML/XSL で何かを行ってからしばらく経ちましたが、.NET 2.0 には XslCompiledTransform でいくつかのメモリの問題がありました。それが問題である可能性がありますが、コード内の何かである可能性が高くなります。サンプル XML と XSL ドキュメントを提供できますか?

両方を静的ファイルとして保存し、変換を実行しようとするとどうなりますか (小さなスタンドアロン スクリプトを作成するか、問題があるかどうかを確認するだけの単体テストを作成します)。XslCompiledTransform オブジェクト (および XML ドキュメント) を使い終わったらすぐに破棄するようにしてください。

XSL 変換で問題が発生した場合は、通常、サンプルの XML ドキュメントを保存して、自分の XSL をCooktopに適用します。最初はわかりにくいかもしれませんが、XSL に明らかなエラーがないことを確認するための適切な健全性チェックです。

于 2010-02-25T20:33:55.110 に答える
0

Linq to XML を使用して変換を行うことを検討してください。変換の観点から見ると、350 kB は大きなテキスト/xml ドキュメントです。XSLT 変換よりも高速である可能性があります。サンプルはこちらをご覧ください。

于 2010-02-25T20:59:59.123 に答える