|
分類:[.NET 全般]
2007/11/02(Fri) 17:03:26 編集(投稿者) 2007/11/02(Fri) 16:34:55 編集(投稿者) 2007/11/02(Fri) 15:57:39 編集(投稿者)
いつも当掲示板にはお世話になっております。 初心者のnbmyouと申します。
現在、VisualStudio2005のC#で、下記のようなフォルダ監視のWindowsサービスを作成しています。 +++++++++++++++++ @DBが動作しているサーバ上で動くサービス。 A監視は数分おきのポーリングで行う。 B監視フォルダにXMLファイルが存在する場合、以下の処理を行う。 (XMLファイルは、複数存在することを認めています) ・バックアップ用フォルダへのコピー ・XMLファイルの読み取り ・読み取ったデータのDB登録 ・監視フォルダ内の処理済XMLファイルを削除 (XMLファイルの書式要因のNGがあった場合は、そのXMLファイルをエラーXMLフォルダへ移動) Cエラー発生時・ログを残したい時は、アプリケーションログに出力 +++++++++++++++++ 大雑把にこんな感じのものです。
そこで質問なのですが。
上記Bの各処理は上から順に行っていきますが、 ファイル操作・DB操作で例外が発生することが考えられます。 (例えば、読み込もうとしたときには該当ファイルが既になかった・・・等)
現在、僕が考えている仕様では、 「例外が発生した場合、どの処理も10回までリトライし、 それでもNGであれば、そこでそのファイルの処理はあきらめ、次のファイル処理へ移る」 というようにしています。 本当はファイル毎の処理はひとつの流れなので、トランザクションをかけるように 途中で失敗したら元に戻すようにも考えかけたのですが、 その処理でも例外が発生する可能性があるので、どこまでどうすればいいのかわからなくなってきてやめました。
上記の仕様で、問題はありますでしょうか。 また、リトライやエラー処理は、みなさんであればどのように行いますでしょうか。
どこまでシビアに処理しなければならないかによって、ケースバイケースではあると思いますが、 参考までにお聞かせいただければ幸いです。
御手数ですが、よろしくお願いいたします。
|