همگام سازی 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 عمل میکند و به همین دلیل میتواند در تمامی سرویس ها با هر نو ....
ادامه مطلب

خواندن دیتاها از appsettings.json در asp.net core


در asp.net core پارامترهایی مانند کانکشن استرینگ های دیتابیس, کانفیگ های مربوط به سرویس ها, دیتاهایی که به ندرت تغییر میکنند را در فایل appsettings.json قرار میدهند و هر زمان که نیاز باشد آنها را از appsetting.json دریافت کنند باید از IConfiguration استفاده ....
ادامه مطلب

پیاده سازی Short polling


سناریوی ساختن یک کیک را در نظر بگیرید: اصافه کردن مواد کیک اضافه کردن شیر اضافه کردن تخم مرغ مخلوط کردن مواد کیک اماده کردن فر پختن کیک کیک اماده است در این مطلب میخوایم یک سناریوی شبیه به پختن کیک را به صورت Short polling و Long polling پیاده سازی کنی ....
ادامه مطلب

دسته بندی کردن لاگ ها در Serilog


در Serilog لاگ ها به صورت ترتیبی در فایل و یا در Elasticsearch ذخیره میشوند. این لاگ ها زمانیکه تعداد کاربران سایت زیاد میشوند و تعداد آن ها نیز افزایش می یابد، به صورت تصادفی ( به ازای ریکوئست کاربران ) در Elasticsearch و یا فایل متنی ذخیره میشوند. برای مثال یک کاربر ....
ادامه مطلب

نامعتبر سازی کوکی ها بعد از تغییر کلمه عبور کاربران


در Asp.Net Core به طور پیش فرض کوکی ها هر 30 دقیقه یک بار اعتبارسنجی میشوند. یعنی زمانی که کاربر به سایت لاگین میکند و اطلاعات خود را وارد میکند Claim های فعلی کابر در کوکی ذخیره میشود و میتواند به صفحه های مورد نظر خود دسترسی پیدا کند و تا 30 دقیقه اعتبارسنجی کوکی ها صورت نمیگیرد ....
ادامه مطلب

روشی برای محدود کردن API ها که هر درخواست با یک Key جدید قابل فراخوانی باشد ( Time-based One-time Password )


TOTP یک الگوریتمی است که از ساعت برای تولید رمزهای یکبارمصرف استفاده میکند. به این صورت که در هر لحظه یک کد منحصر به فرد تولید خواهد شد. اگر با برنامه Google Authenticator کار کرده باشید این مفهوم برایتان اشناست. در این مطلب میخواهیم سناریویی را پیاده سازی کنیم که برای ....
ادامه مطلب

معرفی Dapper


Dapper چیست؟ Dapper یک ORM کوچک و بسیار سریع است که توسط سایت Stackoverflow توسعه داده شده است. Dapper با هر نوع دیتابیسی کار میکند و مختص به یک دیتابیس خاص نیست. با استفاده از Dapper شما میتوانید دستورات SQL را به صورت Stored Procedure و یا به صورت دستورات مستقیم SQL اجرا کنید. اگر د ....
ادامه مطلب