جلوگیری از Cache Stampede در APIهای پرترافیک با استفاده از Double-Checked Locking
زمانی که تعداد کاربران یک وب سایت افزایش پیدا می کند و درخواست های بیشتری به سرور ارسال می شود، اولین بخشی که معمولاً تحت فشار قرار می گیرد، دیتابیس است. برای کاهش این فشار، معمولاً یک لایه کش (Cache) در مقابل دیتابیس قرار می گیرد. در این معماری، ابتدا برنامه بررسی می کند که آیا ....
ادامه مطلب
پیاده سازی Multi-Tenancy همراه با EF Core در Asp.Net Core
در این مطلب به پیاده سازی یک پروژه با قابلیت Multi-Tenant می پردازیم. در یکی از پروژه هایی که انجام دادیم، نیاز بر آن بود که سیستم به صورت Multi-Tenant پیاده سازی شود که بتوان سیستم را برای چندین مشتری اجرا کرد. بسیاری از پروژه ها را میتوان برای چندین مشتری اجرا کرد اما مشکلی که ....
ادامه مطلب
هیچ وقت به صورت مستقیم به Kestrel ریکوئست ارسال نکنید
چند روز پیش، قرار شد که یه اپلیکیشنی بنویسم که تعدادی ریکوئست به یه API ارسال کنه. یه ConsoleApp بود و کار زیاد پیچیده ای نداشت. اپلیکیشن رو نوشتم و روی سیستم خودم تست کردم اوکی بود. بعد گفتن که ریکوئست ها باید به صورت موازی ارسال بشه!. یه تغییر کوچ ....
ادامه مطلب
دریافت اطلاعات از Consumerهای Masstransit
اگر با کتابخانه Masstransit کار کرده باشید، معمولا از متدهای مربوط به Send و یا Publish آن استفاده کرده اید. به این صورت که یک دیتا را ارسال کرده و یک Consumer ثبت کرده اید. که اگر زمانی دیتایی ارسال شد، Consumer آن را دریافت کند و پردازش های لازم را انجام ....
ادامه مطلب
ساخت کد Time-based one time password همراه با زمان انقضای آن
به صورت پیشفرض دات نت از کلاس Rfc6238AuthenticationService برای ایجاد و اعتبارسنجی کد totp استفاده می کند. مشکلی که در این کلاس وجود دارد آن است که کد totp را که تولید می کند به مدت 9 دقیقه معتبر است. این زمان قابل تغییر نیست و به صورت هارد کد نوشته شده است. ....
ادامه مطلب
