私はいくつかの興味深い反応と関連する質問が見つかりました:私はこのことについて考えてきた、とのように、それは我々がサーバー側で持っている状況に似ている
Mapping Validation Attributes From Domain Entity to DTO
をクライアント側の検証が含まれます。 (例えば、NHibernate ValidatorとjQuery.validateの両方を使用するなど)。
最近では、サーバー側の検証が完全に行われている必要があり、クライアント側の検証を追加することは、アプリケーションをより使いやすいようにするためのオプションです。以前はクライアント側の検証を手動で実装する必要がありましたが、ユーザビリティのメリットがあるため、作業の重複を受け入れました。
私がここで扱っていることは非常に似ていると主張したいと思います。ドメイン層にの検証が必要です。消費アプリケーションに依存して、常に検証自体を追加することはできません。
DTO /ビューモデルで検証を追加するオプションがアプリケーションにあります。例外をスローする可能性があるドメインに到達させるのではなく、あまり有用でないエラーメッセージを表示するのではなく、ビューの検証エラーを処理する方が便利なためです。要点は、ドメインの観点からは、これが行われていることに依存していないことです。あなたのシステムには自信があります。なぜなら、悪いデータが通過するかどうかを知っているからです。あなたのモデルはそれをキャッチします。
クライアントサイドのコード(ASP.Net MVCのModelValidatorProviderなど)からクライアントサイドのコードを生成するために、多くの作業が自動化されているため、クライアント/サーバーのケースは最近問題になりません。より多くの人々がビューモデル/ DTOを使うようになるにつれて、ドメイン検証をDTOに自動的にマッピングするための類似のソリューションが見られるようになります(it's already happening with AutoMapper)。
だから要するに、私の(実用的ではなく、理想的な;))答えは:
は、今のDRYの違反を受け入れ、両方の場所で検証を行うと、それを自動化することを目指すプロジェクトに貢献しよう将来的に
良い点。私はこれを解決しようとする私の最後のカップルの質問でこれをしました。 – nick