DotNetZoom – Telegram
DotNetZoom
2.97K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://news.1rj.ru/str/+ufG25x7lVFgyYTNk
Download Telegram
❇️ نمونه معماری پیاده سازی شده با ASP.NET Core و Angular و DDD
مناسب جهت Code Review و ایده برداری

Architecture .NET 5, ASP.NET Core 5, Entity Framework Core 5, C# 9, Angular 11, Clean Code, SOLID, DDD.

تکنولوژی ها و تکنیک های استفاده شده:
✔️.NET 5
✔️ASP.NET Core 5
✔️Entity Framework Core 5
✔️C# 9
✔️#Angular 11
✔️#UIkit
✔️#Clean_Code
✔️#Clean_Architecture
✔️#SOLID
✔️#DDD

🔰لینک مخزن گیتهاب
https://github.com/rafaelfgx/Architecture
___________________
@DotNetZoom
لاگ کردن جزئیات Request ها به کمک Serilog و ActionFilter

بعضی وقتا پیش میاد لازم دارید اطلاعات هر درخواست ورودی Action هامون رو به همراه جزئیات کاملشون رو جهت عیب یابی یا بررسی های آتی ثبت و Log کنیم
در اینجا یک نمونه پروژه آماده کردم که این کار رو به راحتی قرار دادن یک اتریبیوت [LogRequest] بر روی اکشن های مورد نظر انجام میده یا میتونین روی Controller یا به صورت Global ثبت اش کنین تا همه اکشن ها رو Log کنه

🔸طرز کارش به این صورته که در درون ActionFilter مذکور (LogRequest)، جزئیات لازم رو قبل و بعد از اجرا شدن Action مورد نظر Log میکنه (بنا بر نیازتون میتونین هر دیتای دلخواه دیگه ای رو هم از request و response بهش اضافه کنین)
و نهایتا برای ذخیره سازی لاگ ها هم از Serilog و از SqlServer به عنوان Sinks استفاده میکنه (در صورت دلخواه میتونین تو هر Storage/Sink دیگه ای ذخیره کنین)

🔹مسلما لاگ کردن همه درخواست ها میتونه سربار داشته باشه و شخصا پیشنهاد نیمکنم همیشه و همه جا ازش استفاده کنین ولی نکته ای که در مورد Sink های Serilog وجود داره اینه که اکثرا از Async و PeriodicBatching استفاده میکنن به این صورت که در بازه های زمانی Log ها رو به صورت Bulk ایی Insert میکنن (اونم به صورت Async که Thread ایی رو بلاک نکنن) در نتیجه از نظر پرفرمنسی در حالت بهینه ای کار میکنن

🔰از جمله جزئیاتی که در هر درخواست Log میکنه:

1- آدرس URL درخواستی به همراه مقادیر QueryString
2- مقادیر Header های Request و Response
3- مقادیر ارسالی از سمت کاربر (آرگومان های Action)
4- وضعیت ModelState به همراه Error Message ها در صورت وجود
5- مقادیر Routing بسته به Route مچ شده
6- مقادیر شی User.Identity از جمله Claim ها، Name و IsAuthenticated
7- مقدار IP Address کاربر
8- مقدار Url Referrer (آدرس هدایت کننده قبلی به این صفحه)
9- مدت زمان پردازش درخواست جاری (Elapsed Time) و زمان ثبت درخواست
10- جزئیات Exception در صورت وقوع خطا
11- وضعیت Http Status Code درخواست
12- و...

https://github.com/dotnetzoom/RequestLogger-AspNetCore
____________________
@DotNetZoom
Forwarded from کدهک
آموزش کار با Lazy در سی شارپ

https://youtu.be/Oyl8wbYvIT4
معرفی REST API Guideline شرکت های بزرگ + Best Practice ها

🔸Microsoft
REST API Guidelines
🔹Microsoft Best Practices for Web API design
🔸Microsoft Best Practices for Web API implementation

🔹Google API Design Guide

🔸PayPal API Design Guidelines

🔸Stackoverflow Best practices for REST API design

🔸Best Practices for Designing a Pragmatic RESTful API
__________________
@DotNetZoom
Forwarded from کدهک
ویژوال استودیو 2022 به طور کامل از پردازنده های 64 بیتی پشتیبانی میکند و محدودیت حافظه 4 گیگابایتی آن روی devenv.exe برطرف شده است. به این ترتیب امکان باز کردن سولوشن هایی با هزاران پروژه و چند صد هزار فایل ممکن شده است.

این نسخه قرار است از MAUI هم پشتیبانی کند وامکان پیاده سازی اپ های با UI یکسان در انواع پلتفرم ها را فراهم میکند.

پیش بینی میشود نسخه 22 به همراه دات نت 6 در اواخر سال جاری میلادی منتشر شود.
پنجمین گفتگوی فنی #فری_تاک
با موضوع : تکنیک Caching و روش های مختلف آن
سه شنبه 7 اردیبهشت، ساعت 21:00
با حضور محمدجواد ابراهیمی و معین تاجیک

#فری_تاک یک گفتگوی فنی در مورد توسعه نرم افزار (بیشتر متمرکز بر دات نت) هست که هر هفته سه شنبه ها ساعت 21:00 برگزار میشه
این گفتگو صوتی هست و توسط قابلیت Voice Chat تلگرام (چیزی شبیه به Clubhouse یا Spaces توئیتر) در همین کانال برگزار میشه
ویس جلسات گفتگو ضبط شده و در آخر همینجا منتشر خواهد شد

جهت استفاده از قابلیت Voice Chat از آپدیت بودن تلگرامتون اطمینان حاصل کنین.

سه شنبه ساعت 21:00 منتظرتون هستیم
_______________
@DotNetZoom
سری آموزش چند مستاجری (Multi-Tenant) در ASP .NET Core

معماری چند مستاجری یا Multi Tenant به معماری گفته میشه که در اون "یک" نسخه از برنامه قادر هست به چندین Tenant (مستاجر) خدمات ارائه بده مثلا سایت های ارائه وبلاگ که هر کس میتونه وبلاگ خودش رو داشته باشه ولی اینطور نیست که به ازای هر دارنده وبلاگ، یه نسخه مجزا از وبسایت و دیتابیس رو براش لانچ کنن. یا مثلا یک فروشگاه Market Place که هر کس میتونه فروشگاه خودش رو داشته باشه ولی همگی از یک نسخه از وبسایت و دیتابیس تغذیه میکنن.
استراتژی های مختلفی هم برای طراحی دیتابیس اش وجود داره. که هر کدوم مزایا و معایب خودشون رو دارن. مثلا :
دیتابیس مجزا به ازای هر tenant
یک دیتابیس مشترک ولی scheme مجزا به ازای هر tenant
یا دیتابیس و scheme مشترک ولی جدا سازی اطلاعات بر اساس سطر های جداول

در اینجا سعی کردم لیستی از منابع آموزشی این معماری رو براتون تهیه کنم

🔸آموزش های تکی
✔️ معماری پایگاه داده چند مستاجری (Multi-Tenant Data Architecture)
✔️
پیاده سازی برنامه‌های چند مستاجری در ASP.NET Core
✔️Writing Multitenant ASP.NET Core Applications
✔️
Building Multi-Tenant Applications Using ASP.NET 5

🔹سری 8 قسمتی از Gunnar Peipman
1️⃣ Global query filters in Entity Framework Core 2.0
2️⃣ Implementing tenant providers on ASP.NET Core
3️⃣ Implementing database per tenant strategy on ASP.NET Core
4️⃣ Handling missing tenants in ASP.NET Core
5️⃣ Unit testing multi-tenant database provider
6️⃣ Defensive database context for multi-tenant ASP.NET Core applications
7️⃣ Tenant-based dependency injection in multi-tenant ASP.NET Core applications
8️⃣ Using configurable composite command in multi-tenant ASP.NET Core application

🔸سری 4 قسمتی از Carl Rippon
1️⃣ Creating a Multi-Tenant ASP.NET Core Web API with SQL Server RLS
2️⃣ Creating a Multi-Tenant ASP.NET Core Web API with Dapper and SQL RLS
3️⃣ Integration Testing on ASP.NET Core Web API controllers with a SQL backend
4️⃣ ASP.NET Core Web API Multi-Tenant JWTs

🔹سری 5 قسمتی از Michael McKenna
1️⃣ Creating a multi-tenant .NET Core Application - Tenant resolution
2️⃣
Creating a multi-tenant .NET Core Application - Tenant containers
3️⃣ Creating a multi-tenant .NET Core Application - Tenant specific options
4️⃣ Creating a multi-tenant .NET Core Application - Tenant specific authentication
5️⃣ Migrating multi-tenancy to .NET Core 3.1 (LTS)


🔰بهترین فریمورک های Multi-Tenant
✔️ https://github.com/Finbuckle/Finbuckle.MultiTenant
✔️ https://github.com/cloudscribe/cloudscribe
✔️ https://github.com/OrchardCMS/OrchardCore
✔️ https://github.com/aspnetboilerplate/aspnetboilerplate
__________________
@DotNetZoom
Live stream started
Live stream finished (1 hour)
Caching
DotNetZoom
ویس ضبط شده پنجمین گفتگوی فنی #فری_تاک با موضوع Caching
_________________
@DotNetZoom
DotNetZoom
DotNetZoom – Caching
مباحث و کلمات کلیدی ایی که در این جلسه از #فری_تاک در موردشون صحبت کردیم

- کش چیه؟
- اهمیتش Cache و اینکه کجاها استفاده میشه؟
- چه چیزایی رو کش کنیم و چه چیزایی رو نه؟
- روش های کشینگ
- Data Caching
- In-Memory
- Distributed
- BackPlane/Hybrid Cache
- Http Response Caching
- Varnish (Caching HTTP reverse proxy)

- Cache Invalidation

- Caching Libraries in .NET
- EasyCaching
- CacheManager
- IMemoryCache
- IDistributedCache (SqlServer, StackExchangeRedis)
- EFCoreSecondLevelCacheInterceptor

- Redis vs Memcached
- Single Thread vs Multi thread
- Data Structures
- Streaming
- Pub/Sub
- HA/Clustering

- Caching/Redis Best Practices
- Avoid Large Values
- Avoid Long Keys
- Avoid No TTL Keys (infinite)

- Serialization
- MessagePack
- Protobuf
- Newtonsoft.Json
- System.Text.Json

- Compression
- EasyCompressor
- LZ4
- Zstd
- GZip/Deflate
- Brotli

- Redis GUI Management
- Redis Desktop Manager
- RedisInsight
- Another Redis Desktop Manager
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
یک #نکته - آزاد سازی فضای درایو C با حذف پکیج های Nuget اضافی

وقتی یه پکیچ nuget رو نصب میکنید اون رو توی یه پوشه ای به ازای کاربری جاری سیستم عامل ذخیره میکنه (کش میکنه)
این باعث میشه که دفعات بعدی که اون پکیچ رو لازم دارید دیگه از اینترنت دانلود نکته و از کش شما بخونه. البته اگر ورژن جدید تری اومده باشه که توی پوشه کش شما وجود نداشته باشه اون رو دانلود میکنه و به لیست ورژن های قبلی ایی که داشتین اضافه میکنیه

این عمل خیلی خوبه و باعث میشه معمولا پکیج های اضافه دانلود نکنین و از کش نصب میکنه پس سرعت restore شدن پکیج ها خیلی بالا میره ولی در طولانی مدت باعث میشه حجم خیلی زیادی اشغال کنه. مثلا من که سالی 12 ماه ویندوز عوض نمیکنم و پکیج ها و ورژن های زیادی توی سیستمم ذخیره شده بود یه چند مدتی بود که فضای درایو C ایم کم بیاد و الان که این پوشه رو چک کردم بیش از 10 گیگابایت حجم داشت!

🔰واسه حذف این پکیج ها 2تا راه وجود داره:

1️⃣ مسیر زیر روی توی آدرس بار بزنین و دستی اون پوشه رو حذف کنین
%userprofile%\.nuget\packages
2️⃣ ویژوال استادیو رو باز کنین و از منو Tools به مسیر زیر برین (مانند تصویر)
Tools > NuGet Package Manager > General
و سپس دکمه Clear All NuGet Cache(s) رو بزنین. (ممکنه واسه چند لحظه هنگ کنه برنامه)

🔸این حذف کردن هیچ مشکلی هم براتون به وجود نمیاره فقط اگر پکیج هاتون شناسایی نشد رو Solution راست کلیک کنین و گزینه Restore Nuget Packages رو بزنین یا توسط NET Core CLI. دستور dotnet restore رو پروژه/سلشون تون اجرا کنین (این کار برای بار اول کمی زمان میبره تا همه رو دانلود کنه - یادتون نره یه بارم VS رو باز و بسته کنین)
___________________
@DotNetZoom
❇️ معرفی پروژه فروشگاهی eShopOnWeb جهت Code Review و ایده برداری
به همراه eBook آموزشی به صورت PDF

Sample ASP.NET Core 5.0 reference application, powered by Microsoft, demonstrating a layered application architecture with monolithic deployment model. Download the eBook PDF from docs folder.

تکنولوژی ها و تکنیک های استفاده شده:

✔️.NET 5
✔️ASP.NET Core 5
✔️Entity Framework Core 5
✔️#Monolith
✔️#Clean_Architecture
✔️#DDD
✔️#Design_Patterns

🔰لینک مخزن گیتهاب
https://github.com/dotnet-architecture/eShopOnWeb

▪️پروژه eShopOnContainers که نسخه Microservices همین پروژه هست قبلا در کانال معرفی شده
____________________
@DotNetZoom
ششمین گفتگوی فنی #فری_تاک
با موضوع : CQRS
سه شنبه 14 اردیبهشت، ساعت 21:00
ارائه دهندگان: محمدجواد ابراهیمی - معین تاجیک

#فری_تاک یک گفتگوی فنی در مورد توسعه نرم افزار (بیشتر متمرکز بر دات نت) هست که هر هفته سه شنبه ها ساعت 21:00 برگزار میشه
این گفتگو صوتی هست و توسط قابلیت Voice Chat تلگرام (چیزی شبیه به Clubhouse یا Spaces توئیتر) در همین کانال برگزار میشه
ویس جلسات گفتگو ضبط شده و در آخر همینجا منتشر خواهد شد

جهت استفاده از قابلیت Voice Chat از آپدیت بودن تلگرامتون اطمینان حاصل کنین.
ویس ضبط شده جلسات رو میتونین با هشتگ #فری_تاک پیدا کنین.
___________________
@DotNetZoom
نکات Refactoring برای برنامه نویسان #C

در برنامه‌نویسی کامپیوتر، به ویژگی‌ها یا نشانه‌هایی در کد یک برنامه که حاکی از وجود مشکلاتی در عمق برنامه باشند، Code Smell گفته می‌شود. تعیین اینکه چه چیزی Code Smellمحسوب می‌شود یا نه، وابسته به فرد توسعه‌دهنده، زبان برنامه‌نویسی و متد توسعه می‌باشد اما یک سری Code Smell معمول وجود دارد که در این مقاله قصد داریم به آنها اشاره و راه حل های Refactor آن ها را بیان نماییم

#بابک_طارمی
https://vrgl.ir/rJhub
___________________
@DotNetZoom
Forwarded from کدهک
چگونه Redis را در Docker نصب و راه اندازی کنیم؟

https://youtu.be/y6aT7kHDebw
گفتگوی فنی #فری_تاک با موضوع CQRS تا یک ساعت دیگه برگزار میشه
Live stream started
گفتگو شروع شدا عقب نمونین از بحث :)
البته ویس ضبط شده رو هم توی کانال قرار میدیم ✌️
Live stream finished (1 hour)