Start your .NET Clean Architecture journey
Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear guidelines and rules that help you fall into the pit of success immediately. It can, however, be confusing and complicated at first, especially if you don't have an experienced developer explaining the concept and principles to you. That's where Dometrain comes in. In this course, Amichai Mantinband, a Software Engineer at Microsoft, will help you start with Clean Architecture and teach you all the principles and rules in easy-to-digest clips and understandable examples. Start your Clean Architecture journey today on Dometrain!
https://dometrain.com/course/getting-started-clean-architecture-in-dotnet/
Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear guidelines and rules that help you fall into the pit of success immediately. It can, however, be confusing and complicated at first, especially if you don't have an experienced developer explaining the concept and principles to you. That's where Dometrain comes in. In this course, Amichai Mantinband, a Software Engineer at Microsoft, will help you start with Clean Architecture and teach you all the principles and rules in easy-to-digest clips and understandable examples. Start your Clean Architecture journey today on Dometrain!
https://dometrain.com/course/getting-started-clean-architecture-in-dotnet/
👍1
DotNet | دات نت
Start your .NET Clean Architecture journey Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear…
Dometrain_Getting_Started_Clean_Architecture_in_dotNet_2024_2_Downloadly.rar
740.9 MB
Dive deep into the advanced practices of Clean Architecture in .NET
Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear guidelines and rules that help you immediately fall into the pit of success. It can, however, be confusing and complicated at first, especially if you don't have an experienced developer explaining the concept and principles to you. In this course, Amichai Mantinband, a Software Engineer at Microsoft, will help you dive deeper into Clean Architecture and teach you all the advanced principles and rules you need to know in easy-to-digest clips and understandable examples. Continue your Clean Architecture journey today on Dometrain!
https://dometrain.com/course/deep-dive-clean-architecture-in-dotnet/
Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear guidelines and rules that help you immediately fall into the pit of success. It can, however, be confusing and complicated at first, especially if you don't have an experienced developer explaining the concept and principles to you. In this course, Amichai Mantinband, a Software Engineer at Microsoft, will help you dive deeper into Clean Architecture and teach you all the advanced principles and rules you need to know in easy-to-digest clips and understandable examples. Continue your Clean Architecture journey today on Dometrain!
https://dometrain.com/course/deep-dive-clean-architecture-in-dotnet/
DotNet | دات نت
Dive deep into the advanced practices of Clean Architecture in .NET Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution…
Dometrain_Deep_Dive_Clean_Architecture_in_dotNet_2024_2_Downloadly.rar
822.8 MB
❤1
Forwarded from فرصتهای شغلی تراز اول
🎯 Senior .Net Developer
💵 حقوق سالانه: قابل مذاکره
📍محل کار: تهران - حضوری
⚙️ صنعت: تکنولوژی
🌟 مهارتهای کلیدی:
• مسلط بر توسعه نرمافزار با .Net
• تجربه در زمینه ساختار نرمافزار
• مهارت حل مسئله
📩 برای ارسال رزومه میتوانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیتهای شغلی ما را در لینکدین و واتساپ دنبال کنید.
#Senior_DotNET_Developer #DotNET #موقعیت_شغلی #استخدام
💵 حقوق سالانه: قابل مذاکره
📍محل کار: تهران - حضوری
⚙️ صنعت: تکنولوژی
🌟 مهارتهای کلیدی:
• مسلط بر توسعه نرمافزار با .Net
• تجربه در زمینه ساختار نرمافزار
• مهارت حل مسئله
📩 برای ارسال رزومه میتوانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیتهای شغلی ما را در لینکدین و واتساپ دنبال کنید.
#Senior_DotNET_Developer #DotNET #موقعیت_شغلی #استخدام
Forwarded from فرصتهای شغلی تراز اول
🎯 Senior .NET Engineer
💵 حقوق سالانه: ۰.۸ تا ۱ میلیارد تومان
📍محل کار: تهران - نیمه حضوری
⚙️ صنعت: فینتک
🌟 مهارتهای کلیدی:
• مسلط بر توسعه نرمافزار با .Net
• مهارت رهبری و مدیریت تیم
• مهارت حل مسئله
📩 برای ارسال رزومه میتوانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیتهای شغلی ما را در لینکدین و واتساپ دنبال کنید.
#Senior_DotNet_Engineer #DotNet #موقعیت_شغلی #استخدام
💵 حقوق سالانه: ۰.۸ تا ۱ میلیارد تومان
📍محل کار: تهران - نیمه حضوری
⚙️ صنعت: فینتک
🌟 مهارتهای کلیدی:
• مسلط بر توسعه نرمافزار با .Net
• مهارت رهبری و مدیریت تیم
• مهارت حل مسئله
📩 برای ارسال رزومه میتوانید از طریق این لینک و یا آیدی تلگرام @HRBamboosHeadHunter اقدام نمایید.
-------------
برای اطلاع از آخرین موقعیتهای شغلی ما را در لینکدین و واتساپ دنبال کنید.
#Senior_DotNet_Engineer #DotNet #موقعیت_شغلی #استخدام
👍1
Forwarded from Learning With M (Masoud DaneshPour)
از OOP بگی، از S.O.L.I.D بگی و از Coupling & Cohesion نگی، اشتباه کردی.
هرچه قدر استفاده از S.O.L.I.D توی مصاحبه ها زیاده و فهمش کمتر، Coupling & Cohesion مفهومیه که نه تنها بهش پرداخته نمیشه، بلکه فهمش هم مهمتره به نظرم.
حالا این دو تا بچه چی هستند ؟
Coupling
این مهفوم بسیار جذاب حرفش در مورد اتصال های بی مورد و یا نادرسته، وقتی این مفهوم رو نشناسی کلا نمی بینیش، ولی وقتی باهاش آشنا میشی همه جا میاد جلو چشمت(یه مدت مدیدی من به کاپلینگ می گفتم کوپلینگ!)
حالا حرفش چیه؟ میگه آقا انقدر همه چیز رو به هم اتصال نده، اتصال دادن خوبه ها ولی تهش بدبختیه، هرچی بیشتر وصل باشی مثل ریشه تو خاک یک درخته، بعدا نمی تونی درش بیاری، نکنه نشه، انرژی زیادی می بره.
Coupling انواع مختلفی داره که شامل موارد زیر هست، فقط حواسمون باشه که این موارد از بدتری به بهترین هستند :
Coupling یه مفهوم خیلی جالبه که بعدا بشتر در مورد انواعش صحبت می کنم و مواردی مثل Afferent و Efferent رو باز می کنم. قول می دم 😉
خب بریم سر وقت بچه بعدی، Cohesion.
حالا این مفهوم چی میگیه؟ میگه دوست من حالا که LSP رو رعایت کردی، بهتر نیست چیزایی که به هم ربط دارن رو کنار هم بزاری ؟ چرا اینو میگه ؟ چون SRP رو بهتر بتونی رعایت کنی. میبینید چطور مفاهیم بهم می تونن پیوند بخورن؟ جالب نیست؟ همینه من مفاهیم پایه ای رو دوست دارم، همشون هوای همیدگه رو دارن.
❓حالا شما به من بگید، Functional Cohesion مثل کدوم مفهومی می مونه که تا الان یاد گرفتیم ؟
هرچه قدر استفاده از S.O.L.I.D توی مصاحبه ها زیاده و فهمش کمتر، Coupling & Cohesion مفهومیه که نه تنها بهش پرداخته نمیشه، بلکه فهمش هم مهمتره به نظرم.
حالا این دو تا بچه چی هستند ؟
Coupling
این مهفوم بسیار جذاب حرفش در مورد اتصال های بی مورد و یا نادرسته، وقتی این مفهوم رو نشناسی کلا نمی بینیش، ولی وقتی باهاش آشنا میشی همه جا میاد جلو چشمت(یه مدت مدیدی من به کاپلینگ می گفتم کوپلینگ!)
حالا حرفش چیه؟ میگه آقا انقدر همه چیز رو به هم اتصال نده، اتصال دادن خوبه ها ولی تهش بدبختیه، هرچی بیشتر وصل باشی مثل ریشه تو خاک یک درخته، بعدا نمی تونی درش بیاری، نکنه نشه، انرژی زیادی می بره.
Coupling انواع مختلفی داره که شامل موارد زیر هست، فقط حواسمون باشه که این موارد از بدتری به بهترین هستند :
Content Coupling: ماژولی مستقیماً در کد داخلی ماژول دیگر تغییر ایجاد میکند.
Common Coupling: ماژولها متغیرهای سراسری مشترک دارند.
External Coupling: ماژولها به منبع خارجی یکسانی وابستهاند (مثل فایل یا دستگاه مشترک).
Control Coupling: یک ماژول رفتار ماژول دیگر را از طریق پارامترهای کنترلی تعیین میکند.
Stamp Coupling: ماژولها ساختار داده پیچیدهای را به اشتراک میگذارند، اما همیشه به کل آن نیاز ندارند.
Data Coupling: ماژولها تنها دادههای مورد نیاز را به شکل پارامترهای ساده تبادل میکنند (بهترین حالت).
Coupling یه مفهوم خیلی جالبه که بعدا بشتر در مورد انواعش صحبت می کنم و مواردی مثل Afferent و Efferent رو باز می کنم. قول می دم 😉
خب بریم سر وقت بچه بعدی، Cohesion.
حالا این مفهوم چی میگیه؟ میگه دوست من حالا که LSP رو رعایت کردی، بهتر نیست چیزایی که به هم ربط دارن رو کنار هم بزاری ؟ چرا اینو میگه ؟ چون SRP رو بهتر بتونی رعایت کنی. میبینید چطور مفاهیم بهم می تونن پیوند بخورن؟ جالب نیست؟ همینه من مفاهیم پایه ای رو دوست دارم، همشون هوای همیدگه رو دارن.
Coincidental Cohesion: وظایف نامرتبط بهصورت تصادفی در یک ماژول جمع شدهاند.
Logical Cohesion: وظایف مشابه از لحاظ نوع (نه هدف) در یک ماژول قرار دارند و با کلیدهای کنترلی انتخاب میشوند.
Temporal Cohesion: وظایف مرتبط با یک نقطه زمانی مشترک (مثلاً راهاندازی برنامه) در یک ماژول هستند.
Procedural Cohesion: وظایف در یک ترتیب مشخص برای رسیدن به یک هدف کلی اجرا میشوند، ولی داده مشترک ندارند.
Communicational Cohesion: وظایف حول یک داده یا دادههای مرتبط مشترک عمل میکنند.
Sequential Cohesion: خروجی یک وظیفه ورودی وظیفه بعدی است، تشکیل زنجیرهای معنادار.
Functional Cohesion: تمام وظایف ماژول برای انجام یک کار واحد و مشخص به صورت متمرکز طراحی شدهاند (بهترین حالت)
❓حالا شما به من بگید، Functional Cohesion مثل کدوم مفهومی می مونه که تا الان یاد گرفتیم ؟
👍5❤1
Forwarded from Yaser Moradi
Media is too big
VIEW IN TELEGRAM
ویدئو معرفی Bit Boilerplate Project Template
در کمتر از ده دقیقه با یکی از کاملترین NET project template. حال حاضر برای Cross Platform Desktop/Mobile/Web development آشنا بشید و ببینید با Blazor چه اپهای خفنی میشه توسعه داد که هم سبک و سریع باشن و هم full featured
🌸🌸🌸
لینک تماشای ویدئو بدون نیاز به VPN
https://bitplatformhq-my.sharepoint.com/:v:/g/personal/yaser_moradi_bitplatform_dev/EWbT0h-aKaBFvqdr6tOPMFwB6qyvz7ddB82vI1o6jvlA6Q?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJTdHJlYW1XZWJBcHAiLCJyZWZlcnJhbFZpZXciOiJTaGFyZURpYWxvZy1MaW5rIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXcifX0%3D&e=GuZjBZ
لینکهای مفید
https://t.iss.one/bitplatformfa
https://bitplatform.dev/demo
https://bitplatform.dev/boilerplate
https://www.linkedin.com/company/bitplatformhq
در کمتر از ده دقیقه با یکی از کاملترین NET project template. حال حاضر برای Cross Platform Desktop/Mobile/Web development آشنا بشید و ببینید با Blazor چه اپهای خفنی میشه توسعه داد که هم سبک و سریع باشن و هم full featured
🌸🌸🌸
لینک تماشای ویدئو بدون نیاز به VPN
https://bitplatformhq-my.sharepoint.com/:v:/g/personal/yaser_moradi_bitplatform_dev/EWbT0h-aKaBFvqdr6tOPMFwB6qyvz7ddB82vI1o6jvlA6Q?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJTdHJlYW1XZWJBcHAiLCJyZWZlcnJhbFZpZXciOiJTaGFyZURpYWxvZy1MaW5rIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXcifX0%3D&e=GuZjBZ
لینکهای مفید
https://t.iss.one/bitplatformfa
https://bitplatform.dev/demo
https://bitplatform.dev/boilerplate
https://www.linkedin.com/company/bitplatformhq
👍4❤1
8 out of the top 8 most wished for books in the Microsoft .NET category are published by Packt: https://www.amazon.com/gp/most-wished-for/books/764452/
Most Wished For in Microsoft .NET: https://www.amazon.com/gp/most-wished-for/books/764452/
Most Wished For in Microsoft .NET: https://www.amazon.com/gp/most-wished-for/books/764452/
Forwarded from Learning With M (Masoud DaneshPour)
رضا پدرمون بود، محمدرضا دانش پور.
مادرم همیشه پدر رو رضا صدا می زد. پدرم عاشق یادگیری بود، سال های آخر عمرش به خاطر مشکلات بینایی که داشت، برای یادگیری از پادکست استفاده می کرد. اون الهام بخش ما بود برای یادگیری و رشد.
#بورسیه_رضا، بورسیه ای هست که ما هر سال در روز سالگرد پدرم (19 دی ماه) ثبت نامش رو شروع خواهیم کرد. توی این بورسیه، ما 1 سال کامل دو نفر رو برای تبدیل شدن به یک مهندس نرم افزار خبره که بتونه یک خانواده رو پشتیانی کنه آموزش می دیم. هرچه که در این مسیر یادگرفته ایم رو بدون منت در اختیار 2 نفر منتخب قرار خواهیم داد.
تمرکز #بورسیه_رضا بر روی نوجوان های مستعدی هست که دسترسی آنها به آموزش و رشد به دلایلی مثل : هزینه، سخت افزار، دوری از مراکز آموزشی، نبود امکانات و ... غیر ممکن است، طراحی شده است.
ممنون میشم فقط افرادی که به بورسیه تحصیلی نیاز دارند رو به این دوره معرفی کنید تا هزینه های بررسی و انتخاب برای ما کاهش پیدا کنه.
برای ثبتنام این دوره می تونید از این بخش اقدام کنید :
https://B2n.ir/rezbrs1403
برای اطلاعات بیشتر و پرسش های بیشتر هم می تونید این بخش رو ببینید :
https://B2n.ir/rezbrs
مادرم همیشه پدر رو رضا صدا می زد. پدرم عاشق یادگیری بود، سال های آخر عمرش به خاطر مشکلات بینایی که داشت، برای یادگیری از پادکست استفاده می کرد. اون الهام بخش ما بود برای یادگیری و رشد.
#بورسیه_رضا، بورسیه ای هست که ما هر سال در روز سالگرد پدرم (19 دی ماه) ثبت نامش رو شروع خواهیم کرد. توی این بورسیه، ما 1 سال کامل دو نفر رو برای تبدیل شدن به یک مهندس نرم افزار خبره که بتونه یک خانواده رو پشتیانی کنه آموزش می دیم. هرچه که در این مسیر یادگرفته ایم رو بدون منت در اختیار 2 نفر منتخب قرار خواهیم داد.
تمرکز #بورسیه_رضا بر روی نوجوان های مستعدی هست که دسترسی آنها به آموزش و رشد به دلایلی مثل : هزینه، سخت افزار، دوری از مراکز آموزشی، نبود امکانات و ... غیر ممکن است، طراحی شده است.
ممنون میشم فقط افرادی که به بورسیه تحصیلی نیاز دارند رو به این دوره معرفی کنید تا هزینه های بررسی و انتخاب برای ما کاهش پیدا کنه.
برای ثبتنام این دوره می تونید از این بخش اقدام کنید :
https://B2n.ir/rezbrs1403
برای اطلاعات بیشتر و پرسش های بیشتر هم می تونید این بخش رو ببینید :
https://B2n.ir/rezbrs
❤3👍1
این کتاب یک منبع خیلی خوب برای هرکسی است که قصد دارد در فریمورک ASP.NET Core مسلط شود، با تکیه بر مفاهیم پیشرفته و مثالهای عملی. پیشنهاد میکنم هر کسی که علاقهمند به یک راهنمایی کامل و ارزشمند است، این کتاب را مطالعه کند.
👍3
ابزار Hybrid Cache در .NET 9: بهبود عملکرد و سادگی در مدیریت کش
در دنیای توسعه نرمافزار، کشینگ یکی از مهمترین تکنیکها برای بهبود عملکرد و کاهش بار روی سرور است. در .NET 9، مایکروسافت ویژگی جدیدی به نام Hybrid Cache معرفی کرده است که ترکیبی از کش حافظه داخلی (In-Memory Cache) و کش توزیعشده (Distributed Cache) است. این ویژگی نه تنها عملکرد را بهبود میبخشد، بلکه مدیریت کش را نیز سادهتر میکند. در این مقاله، به بررسی Hybrid Cache، فواید آن، و نحوه استفاده از آن در یک سناریوی واقعی میپردازیم.
ابزار Hybrid Cache چیست؟
ابزار Hybrid Cache یک کتابخانه جدید در .NET 9 است که دو لایه کش را با هم ترکیب میکند:
کش L1 (کش حافظه داخلی): برای دسترسی سریع به دادهها در حافظه محلی.
کش L2 (کش توزیعشده): برای ذخیره دادهها در یک کش توزیعشده مانند Redis یا SQL Server، که برای محیطهای توزیعشده و چند سروری مناسب است.
این ترکیب باعث میشود که دادهها ابتدا از کش حافظه داخلی خوانده شوند و در صورت عدم وجود، از کش توزیعشده بازیابی شوند. این رویکرد نه تنها تأخیر را کاهش میدهد، بلکه از بار اضافی روی کش توزیعشده نیز جلوگیری میکند.
فواید Hybrid Cache
1. بهبود عملکرد: با استفاده از کش حافظه داخلی، دسترسی به دادههای پرکاربرد بسیار سریعتر میشود.
2. سادگی در مدیریت: دیگر نیازی به انتخاب بین کش حافظه داخلی و توزیعشده نیست. Hybrid Cache به طور خودکار این کار را انجام میدهد.
3. حمایت از تگها: میتوانید دادهها را با تگها گروهبندی کنید و به راحتی آنها را حذف یا بهروزرسانی کنید.
4. محافظت در برابر Stampede: هنگامی که چندین درخواست همزمان برای دادهای که در کش وجود ندارد ارسال میشود، Hybrid Cache از اجرای چندین باره کد جلوگیری میکند و فقط یک درخواست را پردازش میکند.
5. پیکربندی انعطافپذیر: میتوانید زمان انقضا و سایر تنظیمات را برای هر دو لایه کش به صورت جداگانه تنظیم کنید.
نحوه استفاده از Hybrid Cache در .NET 9
نصب و پیکربندی
برای شروع، باید بسته NuGet مربوط به Hybrid Cache را نصب کنید:
سپس، سرویس Hybrid Cache را در برنامه خود اضافه کنید:
مثال عملی: کش کردن اطلاعات محصولات
فرض کنید یک API دارید که اطلاعات محصولات را از یک پایگاه داده بازیابی میکند. با استفاده از Hybrid Cache، میتوانید این اطلاعات را کش کنید تا درخواستهای بعدی سریعتر پاسخ داده شوند.
در دنیای توسعه نرمافزار، کشینگ یکی از مهمترین تکنیکها برای بهبود عملکرد و کاهش بار روی سرور است. در .NET 9، مایکروسافت ویژگی جدیدی به نام Hybrid Cache معرفی کرده است که ترکیبی از کش حافظه داخلی (In-Memory Cache) و کش توزیعشده (Distributed Cache) است. این ویژگی نه تنها عملکرد را بهبود میبخشد، بلکه مدیریت کش را نیز سادهتر میکند. در این مقاله، به بررسی Hybrid Cache، فواید آن، و نحوه استفاده از آن در یک سناریوی واقعی میپردازیم.
ابزار Hybrid Cache چیست؟
ابزار Hybrid Cache یک کتابخانه جدید در .NET 9 است که دو لایه کش را با هم ترکیب میکند:
کش L1 (کش حافظه داخلی): برای دسترسی سریع به دادهها در حافظه محلی.
کش L2 (کش توزیعشده): برای ذخیره دادهها در یک کش توزیعشده مانند Redis یا SQL Server، که برای محیطهای توزیعشده و چند سروری مناسب است.
این ترکیب باعث میشود که دادهها ابتدا از کش حافظه داخلی خوانده شوند و در صورت عدم وجود، از کش توزیعشده بازیابی شوند. این رویکرد نه تنها تأخیر را کاهش میدهد، بلکه از بار اضافی روی کش توزیعشده نیز جلوگیری میکند.
فواید Hybrid Cache
1. بهبود عملکرد: با استفاده از کش حافظه داخلی، دسترسی به دادههای پرکاربرد بسیار سریعتر میشود.
2. سادگی در مدیریت: دیگر نیازی به انتخاب بین کش حافظه داخلی و توزیعشده نیست. Hybrid Cache به طور خودکار این کار را انجام میدهد.
3. حمایت از تگها: میتوانید دادهها را با تگها گروهبندی کنید و به راحتی آنها را حذف یا بهروزرسانی کنید.
4. محافظت در برابر Stampede: هنگامی که چندین درخواست همزمان برای دادهای که در کش وجود ندارد ارسال میشود، Hybrid Cache از اجرای چندین باره کد جلوگیری میکند و فقط یک درخواست را پردازش میکند.
5. پیکربندی انعطافپذیر: میتوانید زمان انقضا و سایر تنظیمات را برای هر دو لایه کش به صورت جداگانه تنظیم کنید.
نحوه استفاده از Hybrid Cache در .NET 9
نصب و پیکربندی
برای شروع، باید بسته NuGet مربوط به Hybrid Cache را نصب کنید:
dotnet add package Microsoft.Extensions.Caching.Hybrid
سپس، سرویس Hybrid Cache را در برنامه خود اضافه کنید:
var builder = WebApplication.CreateBuilder(args);
// افزودن سرویس Hybrid Cache
builder.Services.AddHybridCache(options =>
{
options.DefaultEntryOptions = new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromMinutes(30), // زمان انقضا برای کش توزیعشده
LocalCacheExpiration = TimeSpan.FromMinutes(5) // زمان انقضا برای کش حافظه داخلی
};
});
// افزودن Redis به عنوان کش توزیعشده
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString("RedisConnectionString");
});
مثال عملی: کش کردن اطلاعات محصولات
فرض کنید یک API دارید که اطلاعات محصولات را از یک پایگاه داده بازیابی میکند. با استفاده از Hybrid Cache، میتوانید این اطلاعات را کش کنید تا درخواستهای بعدی سریعتر پاسخ داده شوند.
public class ProductService
{
private readonly HybridCache _cache;
public ProductService(HybridCache cache)
{
_cache = cache;
}
public async Task<Product> GetProductAsync(int productId, CancellationToken cancellationToken = default)
{
var cacheKey = $"product-{productId}";
return await _cache.GetOrCreateAsync(
cacheKey,
async cancel =>
{
// شبیهسازی بازیابی اطلاعات از پایگاه داده
return await FetchProductFromDatabaseAsync(productId, cancel);
},
cancellationToken: cancellationToken
);
}
private async Task<Product> FetchProductFromDatabaseAsync(int productId, CancellationToken cancellationToken)
{
// شبیهسازی یک عملیات زمانبر
await Task.Delay(1000, cancellationToken);
return new Product { Id = productId, Name = "Sample Product", Price = 99.99 };
}
}
حذف دادهها از کش
برای حذف دادهها از کش، میتوانید از متد
مثال Real-World:
کش کردن اطلاعات کاربران در یک سیستم احراز هویت
در یک سیستم احراز هویت، اطلاعات کاربران مانند نقشها و دسترسیها میتوانند به طور مکرر مورد استفاده قرار گیرند. با استفاده از Hybrid Cache، میتوانید این اطلاعات را کش کنید تا درخواستهای بعدی سریعتر پردازش شوند.
نتیجهگیری
ابزاز Hybrid Cache در .NET 9 یک ابزار قدرتمند برای بهبود عملکرد و سادگی در مدیریت کش است. با ترکیب کش حافظه داخلی و کش توزیعشده، این ویژگی به توسعهدهندگان اجازه میدهد تا برنامههای خود را بهینهتر و مقیاسپذیرتر کنند. با استفاده از مثالهای ارائهشده، میتوانید به راحتی این ویژگی را در پروژههای خود پیادهسازی کنید و از مزایای آن بهرهمند شوید.
برای اطلاعات بیشتر به مستندات رسمی مایکروسافت مراجعه کنید.
برای حذف دادهها از کش، میتوانید از متد
RemoveAsync
استفاده کنید: public async Task RemoveProductFromCacheAsync(int productId, CancellationToken cancellationToken = default)
{
var cacheKey = $"product-{productId}";
await _cache.RemoveAsync(cacheKey, cancellationToken);
}
مثال Real-World:
کش کردن اطلاعات کاربران در یک سیستم احراز هویت
در یک سیستم احراز هویت، اطلاعات کاربران مانند نقشها و دسترسیها میتوانند به طور مکرر مورد استفاده قرار گیرند. با استفاده از Hybrid Cache، میتوانید این اطلاعات را کش کنید تا درخواستهای بعدی سریعتر پردازش شوند.
public class UserService
{
private readonly HybridCache _cache;
public UserService(HybridCache cache)
{
_cache = cache;
}
public async Task<UserInfo> GetUserInfoAsync(string userId, CancellationToken cancellationToken = default)
{
var cacheKey = $"user-info-{userId}";
return await _cache.GetOrCreateAsync(
cacheKey,
async cancel =>
{
// بازیابی اطلاعات کاربر از پایگاه داده
return await FetchUserInfoFromDatabaseAsync(userId, cancel);
},
new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromMinutes(60),
LocalCacheExpiration = TimeSpan.FromMinutes(10)
},
cancellationToken
);
}
private async Task<UserInfo> FetchUserInfoFromDatabaseAsync(string userId, CancellationToken cancellationToken)
{
// شبیهسازی یک عملیات زمانبر
await Task.Delay(500, cancellationToken);
return new UserInfo { UserId = userId, Roles = new[] { "Admin", "Editor" } };
}
}
نتیجهگیری
ابزاز Hybrid Cache در .NET 9 یک ابزار قدرتمند برای بهبود عملکرد و سادگی در مدیریت کش است. با ترکیب کش حافظه داخلی و کش توزیعشده، این ویژگی به توسعهدهندگان اجازه میدهد تا برنامههای خود را بهینهتر و مقیاسپذیرتر کنند. با استفاده از مثالهای ارائهشده، میتوانید به راحتی این ویژگی را در پروژههای خود پیادهسازی کنید و از مزایای آن بهرهمند شوید.
برای اطلاعات بیشتر به مستندات رسمی مایکروسافت مراجعه کنید.
Docs
HybridCache library in ASP.NET Core
Learn how to use HybridCache library in ASP.NET Core.
👍5🔥3
Forwarded from OfferingOne
📣 موقعیت شغلی Full-Stack Developer
🔺شرح موقعیت شغلی
شرکت آفرینگان به عنوان ارائه دهنده خدمات منابع انسانی، در جستجوی یک فرد بسیار توانمند در حوزه برنامه نویسی جهت کار (دورکاری) در یک شرکت امریکایی پیشرو در زمینه هوش مصنوعی برای توسعه یک جعبه ابزار در زمینه پردازش تصویر است. مهارت بک اند در زمینه Python یا Net. یا # C و فرانت اند JavaScript و TypeScript ضروری است.
لازم به ذکر است که در این موقعیت شغلی توانایی کد نویسی و دانش الگوریتم مورد نیاز است.
🤝نوع همکاری: تمام وقت، ریموت
📄سابقه شغلی مرتبط: حداقل ۶ سال
💰حقوق: دلاری بسیار خوب، رنج بالا و متناسب با توانمندیهای فرد
سابقه کار روی پروداکت های پیچیده مزیت محسوب میشود.
🔗 در صورت نیاز به دریافت اطلاعات بیشتر و ارسال رزومه با ادمین در ارتباط باشید.
@OfferingOne
در صورتی که فردی متناسب با این شغل می شناسید لطفا معرفی کنید.
📣 کانال آفرینگان برای اطلاع از فرصتهای شغلی
t.iss.one/offeringOneJobs
📌همچنین می توانید لینکدین ما را هم دنبال کنید
https://www.linkedin.com/company/offeringone/
#برنامه_نویس #فول_استک #آفرینگان #فرصت_شغلی #استخدام
#Full_stack #Front_end #Back_end #developer
🔺شرح موقعیت شغلی
شرکت آفرینگان به عنوان ارائه دهنده خدمات منابع انسانی، در جستجوی یک فرد بسیار توانمند در حوزه برنامه نویسی جهت کار (دورکاری) در یک شرکت امریکایی پیشرو در زمینه هوش مصنوعی برای توسعه یک جعبه ابزار در زمینه پردازش تصویر است. مهارت بک اند در زمینه Python یا Net. یا # C و فرانت اند JavaScript و TypeScript ضروری است.
لازم به ذکر است که در این موقعیت شغلی توانایی کد نویسی و دانش الگوریتم مورد نیاز است.
🤝نوع همکاری: تمام وقت، ریموت
📄سابقه شغلی مرتبط: حداقل ۶ سال
💰حقوق: دلاری بسیار خوب، رنج بالا و متناسب با توانمندیهای فرد
سابقه کار روی پروداکت های پیچیده مزیت محسوب میشود.
🔗 در صورت نیاز به دریافت اطلاعات بیشتر و ارسال رزومه با ادمین در ارتباط باشید.
@OfferingOne
در صورتی که فردی متناسب با این شغل می شناسید لطفا معرفی کنید.
📣 کانال آفرینگان برای اطلاع از فرصتهای شغلی
t.iss.one/offeringOneJobs
📌همچنین می توانید لینکدین ما را هم دنبال کنید
https://www.linkedin.com/company/offeringone/
#برنامه_نویس #فول_استک #آفرینگان #فرصت_شغلی #استخدام
#Full_stack #Front_end #Back_end #developer
👍1
Forwarded from TondTech (مسعود بیگی)
صبح شنبه تونو با این مقاله هوتن شروع کنید که چند جا در #رسمیو برامون نجات دهنده بود.
https://www.linkedin.com/posts/hootanht_microservices-systemdesign-softwarearchitecture-activity-7291205813237383168-9e17
https://www.linkedin.com/posts/hootanht_microservices-systemdesign-softwarearchitecture-activity-7291205813237383168-9e17
Linkedin
پترن 𝗢𝘂𝘁𝗯𝗼𝘅 چیه و چرا انقدر مهمه؟ | Hootan Hemmati
پترن 𝗢𝘂𝘁𝗯𝗼𝘅 چیه و چرا انقدر مهمه؟
حتماً تا حالا برات پیش اومده که بخوای پیام یا دادهای رو از یک سرویس به سرویس دیگه بفرستی، اما نگران باشی که اگه اون سرویس مقصد موقتاً از کار بیفته، تکلیف پیامت چی میشه؟ یا اینکه اگه هنگام آپدیت پایگاه دادهات خطایی رخ بده،…
حتماً تا حالا برات پیش اومده که بخوای پیام یا دادهای رو از یک سرویس به سرویس دیگه بفرستی، اما نگران باشی که اگه اون سرویس مقصد موقتاً از کار بیفته، تکلیف پیامت چی میشه؟ یا اینکه اگه هنگام آپدیت پایگاه دادهات خطایی رخ بده،…
👍5