7

MVC4プロジェクトでFluentValidationを使用しています。すべてが完璧に機能し、 IoC ( StructureMap )に接続されています。

2 つの質問があります。

  1. バリデーターのライフサイクルをどのように管理すればよいですか? それらをシングルトンにしても大丈夫ですか?それとも違いはなく、自分のニーズに応じてライフサイクルを管理できますか? ここでのベストプラクティスは何ですか?

  2. FluentValidationは非常に優れています。私は単純な検証に使用しています(プロパティが空ではないなど)。それを使用していくつかのDb 検証を行うことを考えています (プロパティ値は一意です。) StructureMapを使用してリポジトリをそれに渡し、 Db に対して値をチェックできます。これは良い考えですか?または、IValidator ではなくサービス層にこのロジックを実装する必要がありますか?

同様のシナリオで使用した場合、どのような経験をしましたか?

4

3 に答える 3

5

私は何年も FluentValidation を使用してきましたが、あなたの質問を聞いて解決しました。

  1. 個人的にはバリデータの作成コストはさほど高くないので、シングルトンにはしていません。ファイルのアップロードを要求するために HttpContext へのアクセスを必要とするシングルトンの問題に遭遇しました。最初の HttpContext は、現在の検証ではなく常に検証で使用されます。

DON'T use singletons を個人的にお勧めします

  1. 私は実際にこれを常に行っており、気に入っています。注入する依存関係は効率的でなければならないことに注意してください。データベース クエリが全テーブル スキャンを実行し、30 秒かかる場合、それは良いエクスペリエンスではありません。上で述べたように、通常は HttpContext を挿入してファイルがアップロードされたかどうかを確認し、DataContext を渡して電子メールがまだ取得されていないことを検証します。

これに夢中になってください。これは FluentValidation の大きな利点です。依存関係が時間とリソースに関して高価でないことを確認してください。

于 2013-06-10T13:11:04.927 に答える