2012-03-26 9 views
0

ドメインモデルオブジェクト(エンティティフレームワークによって生成された)は、ドメインモデルに検証属性を置くこととは対照的に、(属性とIValidatableObjectインターフェイスを使用して)バディクラス)。.NETドメインモデルの検証とバディークラス

UI(ASP.NET MVC)でクライアント側の検証を処理するための独自の検証属性を持つ特殊なViewModelクラスを使用していますが、ビジネスモデルが他のクライアントUIに公開されているため、これは良いアプローチですか?

+0

フレームワークのニーズを満たすために2つの異なる場所で2回検証を作成するため、DRY違反のようです。 –

+0

ありがとうございます、その後、最善のアプローチは何ですか?ビジネスモデルを使用する他のクライアントがあるため、ドメインモデルで検証が必要であることに注意してください。 – Socardo

答えて

0

はい、いいえ。あなたのサーバー側で検証を行っているので、良いアプローチです。あなたのドメインロジックは、クライアントが検証することを想定すべきではありません(クライアントはもちろんでなければなりません)。しかし、それ以外にも、検証ルールはコンテキスト固有であるため、属性でドメインを検証しません。彼らはあなたが実行している操作に依存しています。私は、 "顧客の作成"、 "顧客の請求"、 "注文の取り消し"など、ドメインのさまざまなユースケース(書き込み操作)を表すメソッドの検証を行います。すべての検証ルールが不変であると仮定しないでください。

ドメインエンティティをサービス境界外に公開することなくサーバーとクライアントの検証を再利用する方法はわかりませんが、それはずっと悪いことです。

関連する問題