2

バックグラウンド

この質問は2つの部分に分かれています。

IIS6でホストされている一方向のWCF操作があります。これがどのように機能するかについての私の理解は次のとおりです。

_1。IISは要求を受け取ります。

_2。IISはHTTP202応答を送信します(ありがとう、これは後で処理します)。

_3。IISは、一方向のWCF操作を呼び出します。

これで、制御がWCF操作に渡されます。これは次のことを行います。

_4。トランザクションの耐久性のあるストアにリクエスト情報を永続化します。

_5。OLTPデータベースでリクエストの処理を開始します。

_6。エラーが発生した場合は、手順5から繰り返すか、何らかの修正措置を講じてから、手順4で保持されたデータをクリーンアップします。

質問1

IISがHTTP202応答を送信するタイミングについての私の理解は正しいですか?

質問2

IISがステップ2とステップ4の間でリサイクルする場合、変更を適用する前に要求情報を失う可能性がありますが、クライアントがメッセージを受け入れたと思った後です。保留中の要求がある場合にいつリサイクルされるか、またはリサイクルされないかについて、IISによって提供される保証はありますか?


PS:危険なフォーマットを許してください。何らかの理由で、マークダウンは私の番号付きリストアイテムを完全に台無しにしていました。

4

2 に答える 2

1

あなたの仮定が正しいかどうかはわかりません。

一方向の対話であっても、202 が返される前に WCF が非常に複雑になる可能性があります。たとえば、認証を使用する場合、メソッドが呼び出される前、および 202 が返される前にすべてが発生する必要があるため、問題が発生した場合に報告できます。

たとえば、すぐに使用できる wsHttpBinding を使用すると、実際のメソッド呼び出しの前に 200 になる 2 ~ 3 回のメッセージ交換が表示されます。これは、セキュリティ情報を交換し、セキュリティ コンテキストを確立することです。

確かに、サービスをセキュリティなしに構成した場合、これは発生せず、すぐに 202 が返されますが、これは、WCF スタックからそれを実行できるかどうかを知る必要があることを示唆しています。

それはさておき-あなたが何を達成しようとしているのかわかりません-どのIISリサイクルについて言及していますか? 私は IIS の専門家ではありませんが、何かがアクティブに実行されている間にホストがリサイクルされるとは思えません。アプリケーション プール (または IIS、またはマシン) を手動で再起動している人について言及している場合、できることはあまりないと思います。

メッセージが失われないことを確実に知る必要がある場合、私が知っている唯一の方法は、信頼できるメッセージングを何らかの方法で採用することです。

于 2009-01-03T09:28:03.510 に答える
0

私の意見では、私が提案したいことがいくつかあります:

IIS でプロセスのリサイクルを管理する唯一の方法は、Web サイトが使用しているアプリケーション プールを確認することです。IIS マネージャー -> アプリケーション プール -> プールを選択し、プロパティを右クリックすると、[リサイクル] タブに役立つオプションが表示されます。リサイクルでリクエストが失われないことを保証するものではないと思いますが、より長い時間を設定すると、そのようなケースの可能性が減少します.

ただし、構築しようとしている種類のシステムは、MSMQ の理想的な候補のように思えます。MSMQ は、ほとんどオーバーヘッドや手動の配管で適切にキューに入れられる非同期サービス要求を提供できます。これにより、プロセス全体のリサイクルの問題を完全に回避できます。それがあなたのシナリオのオプションかどうかはわかりませんが、検討する必要があるかもしれません.

于 2008-12-04T16:05:02.367 に答える