ユーザー入力の検証とビジネスオブジェクトの検証に頭を悩ませようとしています。Customerオブジェクトを操作しているとしましょう。次のプロパティがあります:CustomerId、FirstName、LastName。FirstNameとLastNameは必須であり、それらの長さは50文字を超えることはできません。
ASP.NET MVC 3を使用しています。FluentValidationも実験しています(ただし、この検証フレームワークである必要はありません)。
「顧客の作成」ビューを使用しているときに、ビューにCustomerViewModelを渡します。
[Validator(typeof(CustomerViewModelValidator))]
public class CustomerViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
CustomerViewModelValidatorで、上記のように検証に必要なルールを設定しました。これはすべて、ビューで正常に検証されます。今、私は質問があります。私のアプリケーションにはサービスレイヤーがあり、ここではすべてのアプリケーションロジックを適用したいと思います。新しい顧客を保存したいとします。次に、CustomerRepositoryのSaveメソッドを呼び出すCustomerServiceのSavecustomerメソッドがあります。
サービスレイヤーを利用する別のアプリケーション(上記のWebアプリ以外)がある可能性があります。つまり、Customerオブジェクトが作成された場合は、それを検証する必要があるということです。次の質問が発生します。
- FirstNameとLastNameを確認するために、CustomerServiceでもCustomerオブジェクトを検証する必要がありますか?
- Customerクラスを検証するために、新しいバリデータークラスを作成する方がよいでしょうか?それとも私はそれを共有する必要がありますか?
- CustomerIdも検証する必要がありますか?つまり、ゼロより大きくする必要がありますが、Idが0の新しい顧客をどのように有効にしますか?
誰かがこれについての洞察/記事を共有することができればそれはありがたいです。
いくつかのビジネスルールも追加したいのですが、これはどこにありますか?ビジネスルールをどこでどのように実装しますか?