در برنامههای ASP.NET Core، امکان دریافت تنظیمات برنامه از منابع مختلفی مانند فایلهای JSON وجود دارد که در نگارشهای اخیر آن، امکان اعتبارسنجی اطلاعات آنها به صورت توکار نیز اضافه شدهاست؛ مانند: services.AddOptions<BearerTokensOptions>()
.Bind(configuration.GetSection("BearerTokens"))
.Validate(bearerTokens =>
{
return bearerTokens.AccessTokenExpirationMinutes < be ...
در قسمت قبل با نحوهی پیاده سازی اعتبارسنجیهای سفارشی سمت کلاینت مخصوص کتابخانهی Fluent Validation آشنا شدیم. در این قسمت، یک حالت خاص همان نوع اعتبارسنجیهای سمت کلاینت را که remote validation نام دارد، بررسی میکنیم. در این حالت خاص، نیازی به کدنویسی جاوااسکریپتی خاصی نیست. چون زیرساخت آن به همراه unobtrusive jQuery Ajax خود ASP.NET Core ارائه میشود. در اینجا فقط نیاز است تا متادیتای خاص آنرا تولید کنیم. به عبارتی اینبار هدف ...
FluentValidation یک کتابخانهی اعتبارسنجی اطلاعات سمت سرور است و راهکاری را برای اعتبارسنجیهای سمت کلاینت ارائه نمیدهد؛ اما میتواند متادیتای مورد نیاز unobtrusive java script validation را تولید کند و به این ترتیب بسیاری از قواعد آن دقیقا همانند روشهای توکار اعتبارسنجی ASP.NET Core در سمت کلاینت نیز کار میکنند؛ مانند:
• NotNull/NotEmpty
• Matches (regex)
• InclusiveBetween (range)
• CreditCard
...
در قسمت قبل ، روش تعریف قواعد اعتبارسنجی را با استفاده از کتابخانهی Fluent Validation بررسی کردیم. در این قسمت میخواهیم این قواعد را به صورت خودکار به یک برنامهی ASP.NET Core معرفی کرده و سپس از آنها استفاده کنیم. روش اول: استفادهی دستی از اعتبارسنج کتابخانهی Fluent Validation
روشهای زیادی برای استفادهی از قواعد تعریف شدهی توسط کتابخانهی Fluent Validation وجود دارند. اولین روش، فراخوانی دستی اعتبارسنج، در م ...
روش مرسوم اعتبارسنجی اطلاعات مدلهای ASP.NET Core، با استفاده از data annotations توکار آن است که در بسیاری از موارد هم به خوبی کار میکند. اما اگر به دنبال ویژگیهای دیگری مانند نوشتن آزمونهای واحد برای اعتبارسنجی اطلاعات، جداسازی شرطهای اعتبارسنجی از تعاریف مدلها، نوشتن اعتبارسنجیهای پیچیده به همراه تزریق وابستگیها هستید، کتابخانهی FluentValidation میتواند جایگزین بهتر و بسیار کاملتری باشد. نصب کتابخانهی FluentValidation در ...
در قسمت قبل سناریوهای مختلف مرتبط با طراحی موجودیتهای سیستم را بررسی کردیم. در این قسمت به طراحی DTOهای متناظر با موجودیتها به همراه اعتبارسنجهای مرتبط و در نهایت به پیاده سازی سرویسهای CRUD آنها خواهیم پرداخت. قراردادها، مفاهیم و نکات اولیه
برخلاف بسیاری از طراحیهای موجود، بر فراز هر موجودیت اصلی (منظور AggregateRoot) باید یک DTO که از این پس با عنوان Model از آنها یاد خواهیم کرد، تعریف شود. هیچ ...
در قسمت قبلی روش استفاده از IRequest و IRequestHandler را در MediatR که نقش پیاده سازی Command/Query را در CQRS بر عهده دارند، بررسی کردیم. کدهای این قسمت در این ریپازیتوری بهروزرسانی شده و قابل دسترسی است.
Command ما که نقش ایجاد یک مشتری را داشت ( CreateCustomerCommand )، هیچ Validation ای برای اعتبار سنجی مقادیر ورودی از سمت کاربر را ندارد و کاربر با هر مقادیری میتواند این Command را فراخو ...
یکی از چالشهایی که در طراحی زیرساخت برای Domain هایی که تعداد زیادی عملیات CRUD را در back office سیستم خود دارند، داشتن مکانیزمی برای ذخیره سازی اطلاعات Master-Detail یا چه بسا Master-Detail-DetailOfDetail میباشد. در ادامه نحوه برخورد با چنین سناریوهایی را در EF Core و همچنین با استفاده از AutoMapper و FluentValidation بررسی خواهیم کرد. موجودیتهای فرضی public abstract class Entity : IHaveTrackingState
{
...
در این مطلب قصد داریم علاوه بر طراحی زیرساختی برای راه اندازی هرچه سریعتر ServiceLayer، طراحی ای برای مکانیزم Validation به عنوان یک Cross Cutting Concern ، نیز ارائه داده و آن را پیاده سازی کنیم. پیش نیازها: قبلا در سایت در مورد لایه بندی نرم افزار و ServiceLayer مطلب منتشر شده است؛ لذا مطالعه این سری مقالات برگرفته از کتاب Professional ASP.NET Design Patterns جزء پیش نیازهای این مطلب میباشد. دوره Aspect oriented p ...