📽مسیر کامل دوره یادگیری دیزاین پترن سی شارپ
⏰حدود 14 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند تازه Design Patterns را شروع کنند در قسمت زبان سی شارپ
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #designpattern #pluralsight #csharp #dotnet
🆔 @dotnetcode
⏰حدود 14 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند تازه Design Patterns را شروع کنند در قسمت زبان سی شارپ
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #designpattern #pluralsight #csharp #dotnet
🆔 @dotnetcode
DotNet | دات نت
این کورس مخصوصا برای کسانی که به یک بک-اند شسته و رفته و ساده نیاز دارند، پیشنهاد میگردد: البته مفاهیم Repository Pattern و Unit Of Work در اینترنت زیاد است، ولی خوبی این کورس اینه که کمی شسته تر برخورد کرده و ضمنن طولانی نیست ، لذا ارزش بررسی دارد. به جرات…
این کورس در این مسیر آموزشی هست ولی اگر کسی دیزاین پترن و هم بلده حتما اینو ببینه
Telegram
DotNet | دات نت
📽مسیر کامل دوره یادگیری دیزاین پترن سی شارپ
⏰حدود 14 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند تازه Design Patterns را شروع کنند در قسمت زبان سی شارپ
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها…
⏰حدود 14 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند تازه Design Patterns را شروع کنند در قسمت زبان سی شارپ
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها…
👍3🤩3
Roadmap to becoming an ASP.NET Core developer in 2022
معین تاجیک عزیز در این مخزن گیتهابی خیلی دقیق و مفصل به مسیر یادگیری تکنولوژیها، ابزارها و مفاهیم دنیای .Net Core پرداخته.
#roadmap #asp #aspnet #core #aspnetcore #dotnet
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
معین تاجیک عزیز در این مخزن گیتهابی خیلی دقیق و مفصل به مسیر یادگیری تکنولوژیها، ابزارها و مفاهیم دنیای .Net Core پرداخته.
#roadmap #asp #aspnet #core #aspnetcore #dotnet
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
Course Track Path For .NET Developers
مجموعه درسهای آنلاین برای تبدیل شدن به یک برنامهنویس داتنت خوب هستند.
این دوره هم آپدیت شدش رو قرار میدم به زودی
#roadmap #udemy #course #dotnet #net #aspnet #aspnetcore
https://www.dotnetmastery.com/home/careerPath
مجموعه درسهای آنلاین برای تبدیل شدن به یک برنامهنویس داتنت خوب هستند.
این دوره هم آپدیت شدش رو قرار میدم به زودی
#roadmap #udemy #course #dotnet #net #aspnet #aspnetcore
https://www.dotnetmastery.com/home/careerPath
❤5
📽مسیر کامل یادگیری ASP.NET Core از صفر تا صد (A-Z)
نکته : دوره شماره 11 به خاطر این که آژور ایران رو تحریم کرده قرار ندادم.(جلوگیری از اتلاف وقت ، مباحث کاربردی تر دیگری هست که هنوز بلد نیستیم😉🌹)
همچنين ديدم خيلى از جاها اين دوره ها رو به صورت تكى و آپديت نشده ميفروشن ، رايگان استفاده كنيد به همراه آخرين آپديت ها و بهترين بهره رو از اين مسير آموزشى فوق العاده داشته باشين.
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند از صفر ASP.NET Core را شروع کنند ، جزو بهترین مسیر هایی آموزشی دات نت هست که وجود دارد
—دانلود 📥 :
پارت 1 | پارت 2 | پارت 3 | پارت 4 | پارت 5 | پارت 6 | پارت 7 | پارت 8 | پارت 9 | پارت 10 | پارت 11 | پارت 12 | پارت 13 | پارت 14 | پارت 15 | پارت 16 | پارت 17 | پارت 18 | پارت 19 | پارت 20 | پارت 21
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #udemy #csharp #dotnet #dotnetpath #dotnetmastery
🆔 @dotnetcode
نکته : دوره شماره 11 به خاطر این که آژور ایران رو تحریم کرده قرار ندادم.(جلوگیری از اتلاف وقت ، مباحث کاربردی تر دیگری هست که هنوز بلد نیستیم😉🌹)
همچنين ديدم خيلى از جاها اين دوره ها رو به صورت تكى و آپديت نشده ميفروشن ، رايگان استفاده كنيد به همراه آخرين آپديت ها و بهترين بهره رو از اين مسير آموزشى فوق العاده داشته باشين.
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند از صفر ASP.NET Core را شروع کنند ، جزو بهترین مسیر هایی آموزشی دات نت هست که وجود دارد
—دانلود 📥 :
پارت 1 | پارت 2 | پارت 3 | پارت 4 | پارت 5 | پارت 6 | پارت 7 | پارت 8 | پارت 9 | پارت 10 | پارت 11 | پارت 12 | پارت 13 | پارت 14 | پارت 15 | پارت 16 | پارت 17 | پارت 18 | پارت 19 | پارت 20 | پارت 21
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #udemy #csharp #dotnet #dotnetpath #dotnetmastery
🆔 @dotnetcode
❤9👍2
https://www.udemy.com/course/using-grpc-in-microservices-communication-with-net-5/
اینم یک دوره ای که درخواستی بوده ، لذت ببرید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #owner #grpc #microservice #dotnet #five5
🆔 @dotnetcode
اینم یک دوره ای که درخواستی بوده ، لذت ببرید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #owner #grpc #microservice #dotnet #five5
🆔 @dotnetcode
Udemy
Using gRPC in Microservices Communication with .Net 5
<p>You will learn how to Build a high-performance <strong>gRPC Inter-service Communication between backend microservices with .Net 5 and AspNet 5</strong>.</p><p>Microservices are modern distributed systems so with <strong>gRPC in ASP.NET 5</strong>, we will…
❤3
آیا میتوانید سوال بالا را بدون استفاده از توابع بازگشتی حل نمایید؟
در #C قابلیتی وجود دارد به نام LINQ که با آن میشود بدون استفاده از حلقه و تابع بازگشتی، چنین مسائلی را حل نمود.
راه حل فلوئنت:
https://dotnetfiddle.net/Ossu01
راه حل خالص:
https://dotnetfiddle.net/4V9kPl
#csharp #dotnet #problemsolving #linq #laylazi
در #C قابلیتی وجود دارد به نام LINQ که با آن میشود بدون استفاده از حلقه و تابع بازگشتی، چنین مسائلی را حل نمود.
راه حل فلوئنت:
https://dotnetfiddle.net/Ossu01
راه حل خالص:
https://dotnetfiddle.net/4V9kPl
#csharp #dotnet #problemsolving #linq #laylazi
📽مسیر کامل یادگیری Graphql
⏰حدود 12 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند Graphql را شروع کنند و در آن حرفه ای شوند.
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #pluralsight #csharp #api #graphql #asp #dotnet
🆔 @dotnetcode
⏰حدود 12 ساعت دوره از مبتدی تا پیشرفته
📁به همراه تمام فایل ها و زیرنویس ها
برای کسانی که میخواهند Graphql را شروع کنند و در آن حرفه ای شوند.
—دانلود 📥 :
پارت اول
🗂 دقت کنید باید همه پارت ها دانلود بشوند و بعد همه پارت ها را انتخاب کنید و Extract کنید
ما رو به دوستان خودتان معرفی کنید 😉🌹
#course #pluralsight #csharp #api #graphql #asp #dotnet
🆔 @dotnetcode
❤3👍1
سلام سلام
قرار هست امشب ساعت 7:30 باهم مایکروسافت بیلد رو به صورت دورهمی در تیمز ببنیم
به این دورهمی بیاین تا بتونیم در کنار هم با تکنولوژی های جدید آشنا بشیم
لینک دورهمی : https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1653403049063?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22b7a23ba2-09f7-4abc-9303-bc4ae688206a%22%7D
#cs_internship #MSBuild #dotnet
قرار هست امشب ساعت 7:30 باهم مایکروسافت بیلد رو به صورت دورهمی در تیمز ببنیم
به این دورهمی بیاین تا بتونیم در کنار هم با تکنولوژی های جدید آشنا بشیم
لینک دورهمی : https://teams.microsoft.com/l/meetup-join/19:91cc6eeb886d4f0eb167546a1ce3fd2f@thread.tacv2/1653403049063?context=%7B%22Tid%22:%2224fbf492-43a9-4a8f-ba7b-6f12fa9b8d87%22,%22Oid%22:%22b7a23ba2-09f7-4abc-9303-bc4ae688206a%22%7D
#cs_internship #MSBuild #dotnet
Microsoft Teams
Join conversation
🚀 Learn Live: Build mobile and desktop apps with .NET MAUI - Events | Microsoft Learn
🌐 https://learn.microsoft.com/en-us/events/learn-events/learnlive-mobile-desktop-apps-dotnet-maui/
#️⃣ #dotnet #maui
🌐 https://learn.microsoft.com/en-us/events/learn-events/learnlive-mobile-desktop-apps-dotnet-maui/
#️⃣ #dotnet #maui
Docs
Learn Live: Build mobile and desktop apps with .NET MAUI - Events
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
سیستم Logging در NET.: از اشتباهات رایج تا بهترین روشها
مقدمه
سلام دوستان! اینجا میخوایم در مورد Logging داخل برنامههای NET. صحبت کنیم. نکاتی که نیک چاپساس میگه رو به زبون ساده مرور میکنیم تا بتونید به راحتی سیستمهای خودتون رو بهبود بدید.
اهمیت Logging
سیستم Logging به شما کمک میکنه تا:
- خطاها رو راحتتر پیدا کنید.
- رفتار برنامه رو زیر نظر داشته باشید.
- اطلاعات لازم برای رفع مشکلات رو جمعآوری کنید.
اما اگه درست انجام نشه، ممکنه:
- گزارشها خیلی بزرگ و پیچیده بشن.
- نتونید مشکلات رو به درستی بفهمید.
- عملکرد برنامه تحت تاثیر قرار بگیره.
۸ قانون ساده Logging
قانون ۱: پیام یعنی الگوی پیام
به جای یه رشته ساده، پیام باید الگو باشه. اینجوری پیامها مرتبتر و قابل فهمتر میشن.
قانون ۲: از درونیابی یا الحاق رشته دوری کن
این روشها میتونن باعث کاهش سرعت برنامه بشن و اطلاعات مفید رو از بین ببرن.
قانون ۳: Logging ساختاریافته رو انتخاب کن
با استفاده از الگوهای پیام با پارامترهای مشخص:
- سرعت و کارایی بهتر میگیری.
- دادهها به صورت ساختاریافته ثبت میشن.
- خوانایی گزارشها افزایش پیدا میکنه.
قانون ۴: از جعبهسازی غیرضروری دوری کن
قبل از اینکه هر مقداری رو ارسال کنی، ببین سطح گزارش فعاله یا نه تا از مشکلات عملکردی جلو گیری کنی.
قانون ۵: از Source Generator استفاده کن
این ابزار توی NET. بهت کمک میکنه تا:
- کد بهینه تولید بشه.
- از نوشتن کد اضافی جلوگیری بشه.
- گزارشهای یکنواخت و ساختاریافته داشته باشی.
قانون ۶: پیچیدگیهای غیرضروری رو کنار بگذار
همیشه سعی کن راهحلهای ساده و قابل فهم انتخاب کنی تا همه راحت کار کنن.
قانون ۷: هشدار رو به عنوان سطح پیشفرض انتخاب کن
این کار باعث میشه:
- حجم گزارشها کمتر بشه.
- تمرکز روی موارد مهم حفظ بشه.
(البته برای موارد خاص میتونی گزارشهای اطلاعاتی هم فعال کنی.)
قانون ۸: فقط اطلاعات ضروری رو ثبت کن
تنها اون اطلاعاتی رو ثبت کن که واقعاً برای فهم داستان برنامه نیاز داری. اینجوری گزارشها مرتب و مفید میمونن.
نتیجهگیری
سیستم Logging درست کلید موفقیت توی برنامهنویسه. با رعایت این ۸ قانون ساده، میتونی گزارشهایی داشته باشی که هم کارآمد باشن و هم بهت کمک کنن داستان برنامهات رو بهتر بفهمی. فقط اطلاعات ضروری رو ثبت کن تا همه چیز مرتب و بهینه بمونه.
منابع
- ویدیوی اصلی
- مستندات NET. برای Logging
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
مقدمه
سلام دوستان! اینجا میخوایم در مورد Logging داخل برنامههای NET. صحبت کنیم. نکاتی که نیک چاپساس میگه رو به زبون ساده مرور میکنیم تا بتونید به راحتی سیستمهای خودتون رو بهبود بدید.
اهمیت Logging
سیستم Logging به شما کمک میکنه تا:
- خطاها رو راحتتر پیدا کنید.
- رفتار برنامه رو زیر نظر داشته باشید.
- اطلاعات لازم برای رفع مشکلات رو جمعآوری کنید.
اما اگه درست انجام نشه، ممکنه:
- گزارشها خیلی بزرگ و پیچیده بشن.
- نتونید مشکلات رو به درستی بفهمید.
- عملکرد برنامه تحت تاثیر قرار بگیره.
۸ قانون ساده Logging
قانون ۱: پیام یعنی الگوی پیام
به جای یه رشته ساده، پیام باید الگو باشه. اینجوری پیامها مرتبتر و قابل فهمتر میشن.
قانون ۲: از درونیابی یا الحاق رشته دوری کن
این روشها میتونن باعث کاهش سرعت برنامه بشن و اطلاعات مفید رو از بین ببرن.
قانون ۳: Logging ساختاریافته رو انتخاب کن
با استفاده از الگوهای پیام با پارامترهای مشخص:
- سرعت و کارایی بهتر میگیری.
- دادهها به صورت ساختاریافته ثبت میشن.
- خوانایی گزارشها افزایش پیدا میکنه.
قانون ۴: از جعبهسازی غیرضروری دوری کن
قبل از اینکه هر مقداری رو ارسال کنی، ببین سطح گزارش فعاله یا نه تا از مشکلات عملکردی جلو گیری کنی.
قانون ۵: از Source Generator استفاده کن
این ابزار توی NET. بهت کمک میکنه تا:
- کد بهینه تولید بشه.
- از نوشتن کد اضافی جلوگیری بشه.
- گزارشهای یکنواخت و ساختاریافته داشته باشی.
قانون ۶: پیچیدگیهای غیرضروری رو کنار بگذار
همیشه سعی کن راهحلهای ساده و قابل فهم انتخاب کنی تا همه راحت کار کنن.
قانون ۷: هشدار رو به عنوان سطح پیشفرض انتخاب کن
این کار باعث میشه:
- حجم گزارشها کمتر بشه.
- تمرکز روی موارد مهم حفظ بشه.
(البته برای موارد خاص میتونی گزارشهای اطلاعاتی هم فعال کنی.)
قانون ۸: فقط اطلاعات ضروری رو ثبت کن
تنها اون اطلاعاتی رو ثبت کن که واقعاً برای فهم داستان برنامه نیاز داری. اینجوری گزارشها مرتب و مفید میمونن.
نتیجهگیری
سیستم Logging درست کلید موفقیت توی برنامهنویسه. با رعایت این ۸ قانون ساده، میتونی گزارشهایی داشته باشی که هم کارآمد باشن و هم بهت کمک کنن داستان برنامهات رو بهتر بفهمی. فقط اطلاعات ضروری رو ثبت کن تا همه چیز مرتب و بهینه بمونه.
منابع
- ویدیوی اصلی
- مستندات NET. برای Logging
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
You are doing logging in .NET wrong. Let’s fix it. - Nick Chapsas - NDC London 2024
This talk was recorded at NDC London in London, England. #ndclondon #ndcconferences #developer #softwaredeveloper
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndclondon.com/
Subscribe to our YouTube channel and learn…
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndclondon.com/
Subscribe to our YouTube channel and learn…
👍5🔥1
خداحافظی با انتظارهای چندساله، ویژوال استودیو هم سالانه شد!
یه خبر مهم و استراتژیک برای همه داتنتیها و کاربرای ویژوال استودیو! مایکروسافت بالاخره تصمیم گرفت مدل انتشار IDE محبوبش رو تغییر بده و یه نظم اساسی بهش ببخشه.
اگه یادتون باشه قبلاً روال کار اینجوری بود که باید ۲ یا ۳ سال صبر میکردیم تا یه نسخه ماژور جدید بیاد (مثل پرش از ۲۰۱۹ به ۲۰۲۲). اما طبق داکیومنتهای جدیدی که برای نسخه ۲۰۲۶ منتشر شده، بازی عوض شده!
👇 توی تصویر پست دقیق نگاه کنید:
1️⃣ ریلیزهای منظم سالانه: از این به بعد قراره مثل ساعت دقیق، هر سال یک نسخه اصلی جدید داشته باشیم. یعنی بلافاصله بعد از ویژوال استودیو ۲۰۲۶، باید منتظر ۲۰۲۷، ۲۰۲۸ و ۲۰۲۹ باشیم. این یعنی ویژگیهای جدید خیلی سریعتر به دستمون میرسه و دیگه خبری از "بیگبنگ"های چند ساله نیست. این حرکت دقیقا همراستا با چرخه انتشار سالانه .NET هست.
2️⃣ خیالراحت با کانالهای LTSC: شاید با خودتون بگید «ای بابا! کی حال داره هر سال نسخه عوض کنه و درگیر باگهای احتمالی بشه؟»
نگران نباشید! مایکروسافت برای تیمهای Enterprise و کسایی که دنبال ثباتن، نسخههای LTSC (Long-Term Servicing Channel) رو همزمان ارائه میده. این یعنی میتونید روی یه نسخه پایدار بمونید که تا ۱۸ ماه ساپورت میشه و فقط پچهای امنیتی رو میگیره، بدون اینکه محیط توسعهتون بهم بریزه.
🔥 خلاصه ماجرا:
مایکروسافت داره اکوسیستم توسعهش رو مدرنتر و سریعتر میکنه. پاییز هر سال، هم منتظر داتنت جدید باشید، هم ویژوال استودیو جدید!
🔗 جزئیات کامل و فنی این تغییرات رو توی لینک رسمی زیر بخونید:
https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-rhythm
#برنامه_نویسی #مایکروسافت #ویژوال_استودیو #دات_نت #تکنولوژی #VisualStudio #DotNet #Microsoft
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
یه خبر مهم و استراتژیک برای همه داتنتیها و کاربرای ویژوال استودیو! مایکروسافت بالاخره تصمیم گرفت مدل انتشار IDE محبوبش رو تغییر بده و یه نظم اساسی بهش ببخشه.
اگه یادتون باشه قبلاً روال کار اینجوری بود که باید ۲ یا ۳ سال صبر میکردیم تا یه نسخه ماژور جدید بیاد (مثل پرش از ۲۰۱۹ به ۲۰۲۲). اما طبق داکیومنتهای جدیدی که برای نسخه ۲۰۲۶ منتشر شده، بازی عوض شده!
👇 توی تصویر پست دقیق نگاه کنید:
1️⃣ ریلیزهای منظم سالانه: از این به بعد قراره مثل ساعت دقیق، هر سال یک نسخه اصلی جدید داشته باشیم. یعنی بلافاصله بعد از ویژوال استودیو ۲۰۲۶، باید منتظر ۲۰۲۷، ۲۰۲۸ و ۲۰۲۹ باشیم. این یعنی ویژگیهای جدید خیلی سریعتر به دستمون میرسه و دیگه خبری از "بیگبنگ"های چند ساله نیست. این حرکت دقیقا همراستا با چرخه انتشار سالانه .NET هست.
2️⃣ خیالراحت با کانالهای LTSC: شاید با خودتون بگید «ای بابا! کی حال داره هر سال نسخه عوض کنه و درگیر باگهای احتمالی بشه؟»
نگران نباشید! مایکروسافت برای تیمهای Enterprise و کسایی که دنبال ثباتن، نسخههای LTSC (Long-Term Servicing Channel) رو همزمان ارائه میده. این یعنی میتونید روی یه نسخه پایدار بمونید که تا ۱۸ ماه ساپورت میشه و فقط پچهای امنیتی رو میگیره، بدون اینکه محیط توسعهتون بهم بریزه.
🔥 خلاصه ماجرا:
مایکروسافت داره اکوسیستم توسعهش رو مدرنتر و سریعتر میکنه. پاییز هر سال، هم منتظر داتنت جدید باشید، هم ویژوال استودیو جدید!
🔗 جزئیات کامل و فنی این تغییرات رو توی لینک رسمی زیر بخونید:
https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-rhythm
#برنامه_نویسی #مایکروسافت #ویژوال_استودیو #دات_نت #تکنولوژی #VisualStudio #DotNet #Microsoft
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥7🎉3
آینده تستنویسی در .NET؛ وقتی هوش مصنوعی خودش را قضاوت میکند!
اگر در اکوسیستم داتنت فعالیت میکنید، حتماً میدانید که ورود AI به اپلیکیشنها، مدلهای سنتی تستنویسی را به چالش کشیده است. دیگر صرفاً چک کردن یک خروجی ثابت کافی نیست؛ ما با مدلهای زبانی (LLM) سر و کار داریم که پاسخهایشان متغیر است.
مایکروسافت با معرفی کتابخانههای Microsoft.Extensions.AI.Evaluation و ابزارهای جدید در Visual Studio 2026، پازل تستنویسی هوشمند را کامل کرده است.
💡 نکات کلیدی ویدیو (AI-Powered Testing in VS):
در ویدیوی جدید کانال داتنت، مککنا بارلو (PM تیم ابزارهای داتنت) نکات بسیار مهمی را مطرح کرد:
1️⃣ تستنویسی خودکار با Copilot: حالا GitHub Copilot میتواند برای کل Solution شما بهصورت یکجا Unit Testهای باکیفیت بنویسد. این یعنی دیگر لازم نیست ساعتها وقت صرف نوشتن کدهای تکراری تست کنید.
2️⃣ ترکیب Code Coverage و AI: ابزار Code Coverage در ویژوال استودیو حالا هوشمندتر شده؛ نقاطی از کد که تست نشدهاند را شناسایی کرده و مستقیماً به Copilot پیشنهاد میدهد تا برای همان بخشهای پرریسک، تست تولید کند.
3️⃣ گزارشهای بصری (AI Eval Reporting): با ابزار جدید dotnet aieval میتوانید گزارشهای گرافیکی دقیقی در مرورگر ببینید که نشان میدهد مدل هوش مصنوعی شما در چه بخشهایی (مثلاً در Groundedness یا صحت اطلاعات) ضعف داشته است.
4️⃣ فراتر از Black Box: هدف این ابزارها این است که خروجی AI دیگر یک "جعبه سیاه" نباشد. شما میتوانید دقیقاً بفهمید چرا یک مدل امتیاز پایینی گرفته و با چه منطقی پاسخ داده است.
🛠 کتابخانه Microsoft.Extensions.AI.Evaluation شامل چیست؟
این پکیجها فرآیند ارزیابی را به چهار لایه تقسیم میکنند:
✅ ارزیابی کیفی (Quality): سنجش میزان مرتبط بودن (Relevance) و انسجام (Coherence) پاسخها.
✅ ارزیابی ایمنی (Safety): شناسایی خودکار محتوای سمی، نفرتپراکنی یا کدهای مخرب تولید شده توسط AI.
✅ ارزیابی مستند بودن (Groundedness): حیاتیترین بخش برای جلوگیری از توهم (Hallucination)؛ چک میکند که آیا AI بر اساس دیتای واقعی شما حرف میزند یا از خودش داستان میسازد!
✅ ارزیابی کلاسیک (NLP): استفاده از معیارهای BLEU و F1 برای سنجش شباهت متنی با پاسخهای مرجع.
چرا این موضوع مهم است؟
در دنیای واقعی، ما نمیتوانیم به خروجی مدلهای هوش مصنوعی اعتماد صددرصدی داشته باشیم. این کتابخانهها به ما "اعتماد سیستماتیک" میدهند. یعنی قبل از اینکه کاربر نهایی با یک پاسخ اشتباه روبرو شود، سیستم تست شما آن را شکار میکند.
📌 ویژگی طلایی: تمام این فرآیندها دارای سیستم Caching هستند؛ یعنی اگر یک تست را دوباره اجرا کنید و ورودی تغییری نکرده باشد، هزینهای برای API پرداخت نمیکنید و نتیجه بلافاصله نمایش داده میشود.
📺 مشاهده ویدیو کامل در یوتیوب:
🔗 https://youtu.be/Bkn78klGhtc?si=c5dBLw1y7ituLTFH
📖 مطالعه مستندات رسمی:
🔗 https://learn.microsoft.com/en-us/dotnet/ai/evaluation/libraries
#dotnet #csharp #VisualStudio2026 #AI #Testing #GitHubCopilot #Programming #SoftwareEngineering #هوش_مصنوعی #برنامه_نویسی
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
اگر در اکوسیستم داتنت فعالیت میکنید، حتماً میدانید که ورود AI به اپلیکیشنها، مدلهای سنتی تستنویسی را به چالش کشیده است. دیگر صرفاً چک کردن یک خروجی ثابت کافی نیست؛ ما با مدلهای زبانی (LLM) سر و کار داریم که پاسخهایشان متغیر است.
مایکروسافت با معرفی کتابخانههای Microsoft.Extensions.AI.Evaluation و ابزارهای جدید در Visual Studio 2026، پازل تستنویسی هوشمند را کامل کرده است.
💡 نکات کلیدی ویدیو (AI-Powered Testing in VS):
در ویدیوی جدید کانال داتنت، مککنا بارلو (PM تیم ابزارهای داتنت) نکات بسیار مهمی را مطرح کرد:
1️⃣ تستنویسی خودکار با Copilot: حالا GitHub Copilot میتواند برای کل Solution شما بهصورت یکجا Unit Testهای باکیفیت بنویسد. این یعنی دیگر لازم نیست ساعتها وقت صرف نوشتن کدهای تکراری تست کنید.
2️⃣ ترکیب Code Coverage و AI: ابزار Code Coverage در ویژوال استودیو حالا هوشمندتر شده؛ نقاطی از کد که تست نشدهاند را شناسایی کرده و مستقیماً به Copilot پیشنهاد میدهد تا برای همان بخشهای پرریسک، تست تولید کند.
3️⃣ گزارشهای بصری (AI Eval Reporting): با ابزار جدید dotnet aieval میتوانید گزارشهای گرافیکی دقیقی در مرورگر ببینید که نشان میدهد مدل هوش مصنوعی شما در چه بخشهایی (مثلاً در Groundedness یا صحت اطلاعات) ضعف داشته است.
4️⃣ فراتر از Black Box: هدف این ابزارها این است که خروجی AI دیگر یک "جعبه سیاه" نباشد. شما میتوانید دقیقاً بفهمید چرا یک مدل امتیاز پایینی گرفته و با چه منطقی پاسخ داده است.
🛠 کتابخانه Microsoft.Extensions.AI.Evaluation شامل چیست؟
این پکیجها فرآیند ارزیابی را به چهار لایه تقسیم میکنند:
✅ ارزیابی کیفی (Quality): سنجش میزان مرتبط بودن (Relevance) و انسجام (Coherence) پاسخها.
✅ ارزیابی ایمنی (Safety): شناسایی خودکار محتوای سمی، نفرتپراکنی یا کدهای مخرب تولید شده توسط AI.
✅ ارزیابی مستند بودن (Groundedness): حیاتیترین بخش برای جلوگیری از توهم (Hallucination)؛ چک میکند که آیا AI بر اساس دیتای واقعی شما حرف میزند یا از خودش داستان میسازد!
✅ ارزیابی کلاسیک (NLP): استفاده از معیارهای BLEU و F1 برای سنجش شباهت متنی با پاسخهای مرجع.
چرا این موضوع مهم است؟
در دنیای واقعی، ما نمیتوانیم به خروجی مدلهای هوش مصنوعی اعتماد صددرصدی داشته باشیم. این کتابخانهها به ما "اعتماد سیستماتیک" میدهند. یعنی قبل از اینکه کاربر نهایی با یک پاسخ اشتباه روبرو شود، سیستم تست شما آن را شکار میکند.
📌 ویژگی طلایی: تمام این فرآیندها دارای سیستم Caching هستند؛ یعنی اگر یک تست را دوباره اجرا کنید و ورودی تغییری نکرده باشد، هزینهای برای API پرداخت نمیکنید و نتیجه بلافاصله نمایش داده میشود.
📺 مشاهده ویدیو کامل در یوتیوب:
🔗 https://youtu.be/Bkn78klGhtc?si=c5dBLw1y7ituLTFH
📖 مطالعه مستندات رسمی:
🔗 https://learn.microsoft.com/en-us/dotnet/ai/evaluation/libraries
#dotnet #csharp #VisualStudio2026 #AI #Testing #GitHubCopilot #Programming #SoftwareEngineering #هوش_مصنوعی #برنامه_نویسی
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
AI-Powered Testing in Visual Studio
Artificial intelligence is transforming how we approach testing and quality assurance. This session explores new AI-powered testing capabilities in Visual Studio that help you write better tests, identify edge cases, generate test data, and improve test coverage.…
❤6👏4🔥1
🛠 نجات توسعهدهندهها در شرایط «نت ملی»؛ تجربیات عملی ما برای زنده نگه داشتن چرخه تولید
توی این چند وقت که دسترسیها محدود شد و اینترنت به حالت داخلی (Intranet) رفت، ما هم مثل خیلی از تیمهای دیگه با چالشهای جدی روبرو شدیم. اما به جای متوقف شدن، سعی کردیم با ابزارهای جایگزین و تغییر استراتژی، جریان کار رو حفظ کنیم.
خواستم تجربیات واقعی و سولوشنهایی که تو این مدت پیادهسازی کردیم رو باهاتون به اشتراک بذارم تا شاید گرهای از کار شما هم باز کنه:
1️⃣ عبور از تحریم و محدودیت پکیجها (Frontend & Backend)
برای پروژههایی مثل Next.js که وابستگی زیادی به پکیجها دارن، اولین حرکت ما استفاده از Mirror Serverهای داخلی بود.
🔹 پیشنهاد: سرویس Runflare تقریباً اکثر ابزارها رو Mirror کرده، سرورهاش داخلیه و سرعتش عالیه.
🔗 https://runflare.com/mirrors/
🔥 خبر ویژه: همون روز اول با تیم فنی رانفلر صحبت کردم و دمشون گرم، خیلی سریع درخواست رو پیگیری کردن و Nuget رو هم به لیست سرویسهاشون اضافه کردن. الان دیگه داتنتیها هم میتونن راحت پکیجها رو دریافت کنن.
2️⃣ مدیریت داکر ایمیجها (Docker Images)
برای پول (Pull) کردن ایمیجها، پلتفرم docker.ir گزینه کارراهاندازی هست.
⚠️ نکته حیاتی برای داتنتیها:
از اونجایی که ایمیجهای داتنت روی Docker Hub نیستن و روی رجیستری مایکروسافت (MCR) قرار دارن، حتماً ایمیجهای SDK و ASP Core رو:
۱. یا روی سیستم لوکال داشته باشید.
۲. یا (روش اصولیتر) روی رجیستری داخلی خودتون Push کنید تا در صورت قطعی، بیلدها فیل نشن.
3️⃣ خداحافظی با وابستگی به کش لوکال (The Nexus Solution)
اوایل کار متکی به کشِ لوکال سیستمها (فولدر .nuget) بودیم، اما این روش ریسک بالایی داشت.
✅ راهکار پایدار: ما Nexus رو بالا آوردیم. با این کار تمام پکیجهای فرانت و بکاند یکبار در نکسوس کش میشن و اگه اینترنت کلاً قطع بشه، تیم فنی بدون هیچ توقفی به کارش ادامه میده.
4️⃣ ابزارهای مدیریت سورس، CI/CD و ارتباطات
برای اینکه تیم ریموت و پایپلاینها از کار نیفتن، از سرویسهای داخلی و Self-Hosted استفاده کردیم:
* گیت و رانر: سرویس Hamgit (محصول همروش) هم مخازن رو میزبانی میکنه و هم Runner برای پایپلاینها میده.
* جلسات آنلاین: جایگزین Google Meet، از Jitsi استفاده کردیم (هم توی بازارچه همروش هست، هم میتونید روی سرور خودتون بالا بیارید).
* چت سازمانی: ما خودمون Mattermost رو روی سرور شخصی بالا آوردیم که عالیه. اگر دنبال سرویس آمادهاید، Rocket.Chat در بازارچه ابری همروش موجوده.
🔗 یک گزینه کمکی دیگر:
سرویس چابکان هم Mirrorهای خوبی ارائه میده که داشتن لینککش به عنوان پلن B ضرری نداره:
🔗 https://iran.chabokan.net/#services
💡 هدفم از این پست فقط انتقال تجربه و کمک به کامیونیتی بود. امیدوارم به کارتون بیاد. هر جا سوالی بود یا کمکی از دستم برمیومد، حتماً بگید.
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
#DevOps #DotNet #Network #Programming #Intranet #ExperienceSharing #SoftwareEngineering
توی این چند وقت که دسترسیها محدود شد و اینترنت به حالت داخلی (Intranet) رفت، ما هم مثل خیلی از تیمهای دیگه با چالشهای جدی روبرو شدیم. اما به جای متوقف شدن، سعی کردیم با ابزارهای جایگزین و تغییر استراتژی، جریان کار رو حفظ کنیم.
خواستم تجربیات واقعی و سولوشنهایی که تو این مدت پیادهسازی کردیم رو باهاتون به اشتراک بذارم تا شاید گرهای از کار شما هم باز کنه:
1️⃣ عبور از تحریم و محدودیت پکیجها (Frontend & Backend)
برای پروژههایی مثل Next.js که وابستگی زیادی به پکیجها دارن، اولین حرکت ما استفاده از Mirror Serverهای داخلی بود.
🔹 پیشنهاد: سرویس Runflare تقریباً اکثر ابزارها رو Mirror کرده، سرورهاش داخلیه و سرعتش عالیه.
🔗 https://runflare.com/mirrors/
🔥 خبر ویژه: همون روز اول با تیم فنی رانفلر صحبت کردم و دمشون گرم، خیلی سریع درخواست رو پیگیری کردن و Nuget رو هم به لیست سرویسهاشون اضافه کردن. الان دیگه داتنتیها هم میتونن راحت پکیجها رو دریافت کنن.
2️⃣ مدیریت داکر ایمیجها (Docker Images)
برای پول (Pull) کردن ایمیجها، پلتفرم docker.ir گزینه کارراهاندازی هست.
⚠️ نکته حیاتی برای داتنتیها:
از اونجایی که ایمیجهای داتنت روی Docker Hub نیستن و روی رجیستری مایکروسافت (MCR) قرار دارن، حتماً ایمیجهای SDK و ASP Core رو:
۱. یا روی سیستم لوکال داشته باشید.
۲. یا (روش اصولیتر) روی رجیستری داخلی خودتون Push کنید تا در صورت قطعی، بیلدها فیل نشن.
3️⃣ خداحافظی با وابستگی به کش لوکال (The Nexus Solution)
اوایل کار متکی به کشِ لوکال سیستمها (فولدر .nuget) بودیم، اما این روش ریسک بالایی داشت.
✅ راهکار پایدار: ما Nexus رو بالا آوردیم. با این کار تمام پکیجهای فرانت و بکاند یکبار در نکسوس کش میشن و اگه اینترنت کلاً قطع بشه، تیم فنی بدون هیچ توقفی به کارش ادامه میده.
4️⃣ ابزارهای مدیریت سورس، CI/CD و ارتباطات
برای اینکه تیم ریموت و پایپلاینها از کار نیفتن، از سرویسهای داخلی و Self-Hosted استفاده کردیم:
* گیت و رانر: سرویس Hamgit (محصول همروش) هم مخازن رو میزبانی میکنه و هم Runner برای پایپلاینها میده.
* جلسات آنلاین: جایگزین Google Meet، از Jitsi استفاده کردیم (هم توی بازارچه همروش هست، هم میتونید روی سرور خودتون بالا بیارید).
* چت سازمانی: ما خودمون Mattermost رو روی سرور شخصی بالا آوردیم که عالیه. اگر دنبال سرویس آمادهاید، Rocket.Chat در بازارچه ابری همروش موجوده.
🔗 یک گزینه کمکی دیگر:
سرویس چابکان هم Mirrorهای خوبی ارائه میده که داشتن لینککش به عنوان پلن B ضرری نداره:
🔗 https://iran.chabokan.net/#services
💡 هدفم از این پست فقط انتقال تجربه و کمک به کامیونیتی بود. امیدوارم به کارتون بیاد. هر جا سوالی بود یا کمکی از دستم برمیومد، حتماً بگید.
📚💻 @dotnetcode
#DevOps #DotNet #Network #Programming #Intranet #ExperienceSharing #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
رانفلر | سکوی ابری - سرویس ابری - هاست ابری
Runflare Mirror - رانفلر | سکوی ابری - سرویس ابری - هاست ابری
Runflare Mirror در رانفلر برخی از مخزن ها و کتابخانه های مورد نیاز برنامه نویسان را به صورت mirror آماده ساخته ایم تا مشکل اختلال های اینترنت و محدودیت های زیر ساخت کشور در ارتباط با اینترنت بین الملل برای کاربران ما برطرف شود. از این لحظه شما می توانید با…
❤9👍4👏4
🚨 تغییر مهم در MassTransit: لایسنس تجاری از نسخه ۹.۰.۰
اگر در پروژههای داتنتی از کتابخانه MassTransit استفاده میکنید، مراقب آپدیتهای جدید باشید. از نسخه 9.0.0 به بعد، این کتابخانه مدل لایسنس خود را به Commercial تغییر داده است.
خلاصه وضعیت جدید:
🔹 نسخههای ۸ و قدیمیتر: همچنان رایگان و Open Source (Apache 2.0) باقی میمانند.
🔹 نسخه ۹ و بالاتر: برای شرکتهایی با درآمد بالای ۱ میلیون دلار در سال پولی است.
🔹 استارتاپها و توسعهدهندگان مستقل: اگر درآمد سالانه زیر ۱ میلیون دلار باشد، همچنان میتوانید با تخفیف ۱۰۰ درصدی (رایگان) استفاده کنید.
---
🛠 راهکار فنی: جلوگیری از آپدیت خودکار به نسخه پولی
برای اینکه ابزارهایی مثل NuGet یا Dependabot به صورت خودکار پروژه شما را به نسخه ۹ (پولی) ارتقا ندهند، باید ورژن را در فایل
چرا این کار مهم است؟
* نوشتن
* اما
اگر پروژهی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیجهای خود اعمال کنید.
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
#DotNet #MassTransit #CSharp #Programming_Tips #Microservices
اگر در پروژههای داتنتی از کتابخانه MassTransit استفاده میکنید، مراقب آپدیتهای جدید باشید. از نسخه 9.0.0 به بعد، این کتابخانه مدل لایسنس خود را به Commercial تغییر داده است.
خلاصه وضعیت جدید:
🔹 نسخههای ۸ و قدیمیتر: همچنان رایگان و Open Source (Apache 2.0) باقی میمانند.
🔹 نسخه ۹ و بالاتر: برای شرکتهایی با درآمد بالای ۱ میلیون دلار در سال پولی است.
🔹 استارتاپها و توسعهدهندگان مستقل: اگر درآمد سالانه زیر ۱ میلیون دلار باشد، همچنان میتوانید با تخفیف ۱۰۰ درصدی (رایگان) استفاده کنید.
---
🛠 راهکار فنی: جلوگیری از آپدیت خودکار به نسخه پولی
برای اینکه ابزارهایی مثل NuGet یا Dependabot به صورت خودکار پروژه شما را به نسخه ۹ (پولی) ارتقا ندهند، باید ورژن را در فایل
.csproj قفل کنید. استفاده از براکت `[]` به معنای اجبار روی یک نسخه دقیق است:<PackageReference Include="MassTransit" Version="[8.5.7]" />
چرا این کار مهم است؟
* نوشتن
Version="8.5.7" به NuGet اجازه میدهد نسخههای بالاتر (مثل 9.0.1) را هم نصب کند.* اما
Version="[8.5.7]" یعنی فقط و فقط همین نسخه نصب شود و جلوی ارتقای ناخواسته به نسخه پولی را میگیرد.اگر پروژهی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیجهای خود اعمال کنید.
📚💻 @dotnetcode
#DotNet #MassTransit #CSharp #Programming_Tips #Microservices
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👏3👍2🔥1
🔥 نکته حیاتی در Hangfire: جنگ با ساعت و تایمزونها! ⏰🌍
اگر تا حالا براتون پیش اومده که جابی رو برای ساعت ۸ صبح تنظیم کردید ولی ساعت ۱۱:۳۰ اجرا شده، این پست برای شماست!
⚠️ ماجرا چیه؟
هنگفایر (Hangfire) به صورت پیشفرض (Default) همه جابهای تکرارشونده (Recurring Jobs) رو بر مبنای ساعت UTC اجرا میکنه. یعنی اگر تنظیمات تایمزون رو بهش ندید، باید اختلاف ساعت ایران با گرینویچ رو دستی حساب کنید که اصلا جالب نیست.
حالا اگر بخوایم بگیم "به وقت ایران اجرا شو"، با یه چالش جدید روبرو میشیم:
🔸 ویندوز میگه: "Iran Standard Time"
🔸 لینوکس/داکر میگه: "Asia/Tehran"
اگر این تفاوت هندل نشه، روی سرور لینوکسی یا کانتینر داکر به خطای TimeZoneNotFoundException میخورید! 🤯
✅ راه حل نهایی (Cross-Platform):
با این تیکه کد، هم مشکل UTC رو حل کنید و هم کدی بنویسید که روی ویندوز، لینوکس و مک بدون تغییر کار کنه:
💡 با این روش، دیگه نگران جلو/عقب کشیدن ساعتها یا تفاوت محیط لوکال و سرور نباشید.
🔗 بحث مرتبط در کامیونیتی هنگفایر:
https://discuss.hangfire.io/t/need-local-time-instead-of-utc/279/7
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥
#CSharp #DotNet #Hangfire #Docker #Backend #TimeZone #Tips
اگر تا حالا براتون پیش اومده که جابی رو برای ساعت ۸ صبح تنظیم کردید ولی ساعت ۱۱:۳۰ اجرا شده، این پست برای شماست!
⚠️ ماجرا چیه؟
هنگفایر (Hangfire) به صورت پیشفرض (Default) همه جابهای تکرارشونده (Recurring Jobs) رو بر مبنای ساعت UTC اجرا میکنه. یعنی اگر تنظیمات تایمزون رو بهش ندید، باید اختلاف ساعت ایران با گرینویچ رو دستی حساب کنید که اصلا جالب نیست.
حالا اگر بخوایم بگیم "به وقت ایران اجرا شو"، با یه چالش جدید روبرو میشیم:
🔸 ویندوز میگه: "Iran Standard Time"
🔸 لینوکس/داکر میگه: "Asia/Tehran"
اگر این تفاوت هندل نشه، روی سرور لینوکسی یا کانتینر داکر به خطای TimeZoneNotFoundException میخورید! 🤯
✅ راه حل نهایی (Cross-Platform):
با این تیکه کد، هم مشکل UTC رو حل کنید و هم کدی بنویسید که روی ویندوز، لینوکس و مک بدون تغییر کار کنه:
using System.Runtime.InteropServices;
// 1. تشخیص خودکار شناسه تایمزون بر اساس سیستمعامل
// Windows -> "Iran Standard Time"
// Linux/Docker -> "Asia/Tehran"
var tehranId = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? "Iran Standard Time"
: "Asia/Tehran";
// 2. تنظیم ساعت به وقت ایران
RecurringJob.AddOrUpdate(
type.FullName,
() => job.ExecuteAsync(),
attribute.CronExpression,
new RecurringJobOptions
{
// خداحافظ UTC، سلام تهران! 👋
TimeZone = TimeZoneInfo.FindSystemTimeZoneById(tehranId)
}
);
💡 با این روش، دیگه نگران جلو/عقب کشیدن ساعتها یا تفاوت محیط لوکال و سرور نباشید.
🔗 بحث مرتبط در کامیونیتی هنگفایر:
https://discuss.hangfire.io/t/need-local-time-instead-of-utc/279/7
📚💻 @dotnetcode
#CSharp #DotNet #Hangfire #Docker #Backend #TimeZone #Tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Hangfire Discussion
Need local time instead of UTC
I need to schedule recurring jobs based on local time, for example 02:00 CET (which is UTC+1 normally and UTC+2 during daylight savings time aka “summer time”). I know this introduces some problems when switching to/from summer to winter time (there is an…
❤11👍7🔥3