2011-07-15 14 views
0

フィールドにテキストを入力してタブオフすると、関連するコントローラアクションを呼び出してそのフィールドを検証するjQueryイベントがトリガされるというフォームがあります。たとえば、私はAccountControllerとValidateFieldアクションを持っています。ユーザーがUsernameフィールドのタブを外すと、/ Account/ValidateFieldに要求が送信されます。次に、検証に基づいてJSON結果を返します。AJAXで個々のフィールドを検証する - ロジックを配置する場所は?

だから、ユーザー名フィールドを検証したいとしましょう。十分な文字が使用されていること、ユーザー名が使用中でないこと、使用されている文字が許可されていることを確認したい。これらのうちの2つは簡単です。ただし、ユーザー名がすでに存在するかどうかを確認するには、データベースにアクセスする必要があります。

ここで私はこのロジックを入れますか?サービス層では?

全くビジネスロジックの複製が行われない世界で

答えて

1

charatersの名前と有効性チェックの最小長は、ドメインロジックのように聞こえるので、それがドメインにする必要があります。あなたのajax呼び出しは、ドメインを呼び出して検証するサービス層を呼び出します。

ユーザー名を確認していないのは、持続層にアクセスしているため、これがサービス層に存在する可能性が高いと思います。サービス層は、リポジトリに指定された名前のユーザを照会するだけで、返されたものがあれば無効です。私たちは実際にパフォーマンスを気に世界で

:ユーザ名の一意の

チェックは、おそらくデータベースにアクセスするためのサービス層への旅行を必要としません。しかし、他の2つについては、これをUIで実行してサービスレイヤへのトリップを保存することはできますが、ドメイン内で複製する必要があります。これは、あるUdi漢が提唱されています

Command Query Responsibility Segregation

彼はUIの検証を示唆し、ドメインでそれを複製しますが、ドメインから有用なメッセージを与えて気にしないためにlikeyある理論上だけの人それまではハッカーになるだろう。

関連する問題