پیاده سازی Health Check پیشرفته در Asp.Net Core


در زمان توسعه اپلیکیشن بر روی سیستم خودمان به راحتی میتوانیم سرویس های خارجی و یا دیتابیس هایی که با آنها کار کنیم را تست کنیم که آیا میتوانیم به دیتابیس و یا سرویس خارجی دسترسی داشته باشیم یا نه. اما این کار بعد از آپلود بر روی سرورهای اصلی کمی دشوار است. برای همین بهتر ....
ادامه مطلب

تست نویسی با دیتابیس واقعی


هنگام نوشتن تست ها در بعضی موارد نیازمند ارتباط با دیتابیس هستیم که دیتایی را از آن بخوانیم و یا رکوردهایی را در آن ذخیره کنیم. اگر از یک دیتابیس ثابت استفاده کنیم، هربار که تست ها اجرا شوند مقادیر موجود در دیتابیس تغییر خواهند کرد و اگر شخص دیگری با دیتابیس کار کند و دیتاهای آن را تغییر دهد ....
ادامه مطلب

تست نویسی برای APIها در Asp.Net Core


در مقاله قبل به بررسی مثالی از نوشتن تست واحد پرداختیم. در این مطلب می خواهیم به پیاده سازی تست برای APIها بپردازیم با استفاده از کتابخانه xUnit. برای این کار ابتدا یک پروژه از نوع Asp.Net Core Web App ایجاد می کنیم. سپس یک کنترلر به نام UsersController ایجاد میکنیم ....
ادامه مطلب

سفارشی سازی دستورات Redis با استفاده از LuaScript در Asp.Net Core


اگر بخواهیم دستورات ردیس را مستقیما درون برنامه فراخوانی کنیم میتوانیم از LuaScript که در کتابخانه StackExchange.Redis قرار دارد استفاده کنیم. با استفاده از LuaScript میتوانیم چندین دستور ردیس را در یک ریکوئست اجرا کنیم. سناریویی را در نظر بگیرید که تعداد دفعات فراخوانی شدن یک API یا یک متد برای ش ....
ادامه مطلب

ایجاد HttpMethod سفارشی در Asp.Net Core


در Asp.Net Core به طور پیشفرض 7 Attribute مربوط به HttpMethod وجود دارند: (HttpDelete, HttpGet, HttpPost, HttpPut, HttpOption, HttpPatch, HttpHead). در این مطلب میخواهیم دو Attribute سفارشی ایجاد کنیم با نام های HttpRead و HttpWrite ....
ادامه مطلب

تست نویسی با xUnit در Asp.Net Core


امروزه تست نویسی یکی از موارد مهم در توسعه و تولید یک نرم افزار به حساب می آید، اگرچه با نوشتن تست سرعت توسعه کاهش می یابد اما مزایای آن در زمان توسعه، افزودن ویژگی های جدید و تغییرات نمایان می شود. اگر از تست نویسی ....
ادامه مطلب

همگام سازی MemoryCache در تمامی instance ها


در پروژه هایی که چند instance از آن بر روی سرور قرار دارد و از MemoryCache استفاده میکنند، یکی از مشکلات مدیریت کردن Memory Cache آنهاست. به عنوان مثال بر روی یک instance دیتایی درون Memory قرار دارد که با سایر instance ها ت ....
ادامه مطلب

پیاده سازی Circuit Breaker در Asp.Net Core


سناریوی را در نظر بگیرید که در برنامه شما با استفاده از HttpClient به یک API ریکوئست ارسال میکنید. اگر سرویس خارجی از دسترس خارج شود، ریکوئست هایی که به برنامه شما ارسال میشود و شما از طریق HttpClient به این API ارسال میشود با تاخیر جواب داده میشود و احتمالا خط ....
ادامه مطلب

خودکار سازی فرایند پابلیش پروژه های دات نتی بر روی GitLab


در این مطلب به پیاده سازی یک نمونه ساده از CICD برای یک پروژه Net Core. بر روی GitLab میپردازیم. عملا میخواهیم سرویسی را پیاده سازی کنیم تا آن کارهایی که به صورت دستی برای پابلیش پروژه انجام میدهیم را به صورت خودکار انجام دهد. برای پابلیش یک پروژه دات نتی بر روی IIS چه کار ....
ادامه مطلب

تفاوت IOptions, IOptionsMonitor و IOptionsSnapshot


در مطلب قبل به نحوه خواندن دیتاها از appsettings.json توسط IOptions پرداختیم. در این مطلب به بررسی تفاوت بین IOptions, IOptionsMonitor و IOptionsSnapshot میپردازیم. اینترفیس IOptions به صورت Singleton عمل میکند و به همین دلیل میتواند در تمامی سرویس ها با هر نو ....
ادامه مطلب