اعتبارسنجی، یک «cross-cutting concern» هست و نباید با «business logic» مخلوط شود. برای مدیریت «cross-cutting concern»ها عموما از روشهای AOP استفاده میشود؛ مانند قرار دادن یک Attribute بر روی متدی که قرار است پیش از اجرای منطق اصلی این متد، اجرا شود (الگوی decorator). در اینجا هم اجرای اعتبارسنجیها دقیقا به همین صورت است. پیش از رسیدن به متدهای سرویس برنامه، به صورت خودکار، کار اجرای اعتبارسنجی آنها انجام میشود.
یک نمونهی از جداسازیهای «cross-cutting concern»ها در مطلب «Validating with a Service Layer» خود مایکروسافت قابل مشاهدهاست. ابتدا با قرار دادن کل منطق اعتبارسنجی در داخل یک سرویس شروع کرده و سپس این منطق را refactor کرده و تبدیل به یک سرویس مجزای قابل استفادهی در یک سرویس و یا کنترلر در آورده. البته آن مطلب عمومی است و هر دوی اینها با Fluent validation، چه به صورت اعمال خودکار و یا اجرای دستی، قابل انجام است.
در کل پیاده سازی اعتبارسنجی business logic، توسط specification pattern انجام میشود؛ دقیقا مانند تعاریف AbstractValidatorها در Fluent validation (که پیاده سازی specification pattern هستند) و عموما اجرای آنها به دلیل cross-cutting concern بودن، توسط decorator pattern صورت میگیرد؛ مانند روشهای سوم و چهارم اجرای AbstractValidatorها.
یک نمونهی از جداسازیهای «cross-cutting concern»ها در مطلب «Validating with a Service Layer» خود مایکروسافت قابل مشاهدهاست. ابتدا با قرار دادن کل منطق اعتبارسنجی در داخل یک سرویس شروع کرده و سپس این منطق را refactor کرده و تبدیل به یک سرویس مجزای قابل استفادهی در یک سرویس و یا کنترلر در آورده. البته آن مطلب عمومی است و هر دوی اینها با Fluent validation، چه به صورت اعمال خودکار و یا اجرای دستی، قابل انجام است.
در کل پیاده سازی اعتبارسنجی business logic، توسط specification pattern انجام میشود؛ دقیقا مانند تعاریف AbstractValidatorها در Fluent validation (که پیاده سازی specification pattern هستند) و عموما اجرای آنها به دلیل cross-cutting concern بودن، توسط decorator pattern صورت میگیرد؛ مانند روشهای سوم و چهارم اجرای AbstractValidatorها.