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

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

لینک گروه ASPNET Core:
https://news.1rj.ru/str/+ufG25x7lVFgyYTNk
Download Telegram
Forwarded from کدهک
آشنایی با ML.NET

فریم ورک ML.NET ابزاری برای Machine Learning در دات نت است که توسط مایکروسافت توسعه داده شده است. در این ویدیو با استفاده از ML.NET شانس زنده ماندن مسافران کشتی تایتانیک را پیش بینی می کنیم.

https://tinyurl.com/cdhk-mlnet
❇️ معرفی MagicOnion : یک فریمورک Realtime مبتنی بر gRPC و MessagePack

این فریمورک با استفاده از قابلیت HTTP/2 Streaming مبتنی بر gRPC و بهره گیری از MessagePack برای Serialization (همراه با LZ4 integration) بستری قدرتمند را برای ارتباطات Realtime فراهم می‌کند.

🔸یکی از مزایای این فریمورک عدم نیاز به فایل‌های .proto مخصوص gRPC است چرا که از interface های سی شارپی برای به اشتراک گذاری امضای Endpoint‌های موجود بین Server و Client استفاده میکند.

🔹یکی از دیگر مزایای آن پشتیبانی از Swagger و داشتن Json Gateway توکار متبنی بر HTTP/1 است که به کمک آن می‌توان به صورت Json/RESTful نیز API‌ها را فراخوانی کرد.

🔸همچنین این فریمورک از OpenTelemetry پشتیبانی کرده و می‌توانید از برنامه‌های مانیتورینگ مانند Prometheus و StackDriver و Zipkin و... بر روی پروژه خود استفاده کنید و یا توسط Grafana یک داشبورد مانیتورینگ ویژوال و Realtime ایجاد کنید.

🔹این فریمورک ابزار مناسبی جهت ارتباطات بین Microservice‌ها می‌باشد.

🔸همچنین جایگزین مناسبی برای سرویس‌های API based مانند ASP.NET Core WebAPI و WCF بوده و نیز جایگزین مناسبی برای SignalR و Socket.io جهت ارتباطات Realtime می‌باشد.

🔰ریپازیتوری MagicOnion
https://github.com/Cysharp/MagicOnion
اطلاعات بیشتر
https://medium.com/@neuecc/magiconion-unified-realtime-api-engine-for-net-core-and-unity-21e02a57a3ff
_______________
@DotNetZoom
❇️ آموزش Best Practice های Async/Await (زبان اصلی زیر نویس دار)

از پایین ویدئو گزینه [Subnoscript/captions] میتوانید زیرنویس آن را فعال کنید

[00:57] - What's the relationship between Xamarin and Azure
[02:25] - HackerNews mobile app demo
[04:06] - async / await under the covers
[08:43] - Benefits for desktop or mobile applications
[09:65] - Refactoring async operations with commands
[12:52] - Don't use .Wait()
[15:41] - Avoiding context switches with ConfigureAwait(false)
[19:45] - Sometimes you don't need to use async / await
[21:22] - Using async / await inside of try/catch and using statement blocks
[23:40] - Summarizing best practices
[25:37] - Use cases for ValueTask

Useful Links
Generalized async return types
Async in Depth
Brandon's code sample repo
____________
@DotNetZoom
🔰معادل توابع شمارشی #C و JavaScript

در ECMAScript 5 توابعی معرفی شد که میتوانیم از آنها بجای loop ها استفاده کنیم.
لیست این توابع را میتوانید در این لینک مشاهده کنید.

🔸مقاله فارسی
https://www.dotnettips.info/post/3149
_________________
@DotNetZoom
❇️ مقایسه محبوبیت کتابخانه های Nuget

توسط سایت NugetTrends.com می توانید کتابخانه های nuget را از لحاظ تعداد دانلود بر روی نمودار مقایسه کنید.

🔰در تصویر بالا نمودار تعداد دانلود کتابخانه های Serilog و log4net و NLog را طی یک سال اخیر مشاهده میکنید.
https://nugettrends.com/packages?months=12&ids=Serilog&ids=NLog&ids=log4net

مخزن گیتهاب پروژه
https://github.com/NuGetTrends/nuget-trends
______________
@DotNetZoom
Forwarded from کدهک
آشنایی با InfluxDb

دیتابیس InfluxDb یک دیتابیس از نوع سری زمانی است که اطلاعات را درون کلیدی از جنس زمان با دقت نانو ثانیه ذخیره میکند.

در این ویدیو با استفاده از ASP NET Core اطلاعاتی را درون این دیتابیس ذخیره می کنیم و سپس با استفاده از Grafana به صورت گراف نمایش میدهیم.

https://tinyurl.com/cdhk-influx
❇️ در مورد متد ConfigureAwait بیشتر بدانید

این مورد توضیحش کمی پیچیدس و نیاز داره یه سری موارد رو قبلش بدونین مثل SynchronizationContext و TaskScheduler ولی خیلی ساده بخوام توضیح بدم اینکه وقتی متد async ایی رو فراخوانی میکنید اون تکه کد داخل متد async ایی توسط یک Thread دیگه [ترد ثانویه] (متفاوت از ترد [اصلی] - ترد فراخوانی کننده متد) اجرا میشه (البته نه الزاما ولی در متد های async IO bound بله)
حالا اگه داخل اون متد async ایی نیاز به دسترسی به اشیایی از Context ترد اصلی نیاز داشته باشید، باید [ترد ثانویه] برگرده به Context ترد اصلی [اصلی] تا بتونه به اشیا اون دسترسی داشته باشه وگرنه خطا میده که "یک ترد نمیتونه به اشیا ترد دیگه دسترسی داشته باشه"

مثلا توی WinForm بخواید مقدار یک کنترل UI مثل TextBox رو بخونید/عوض کنید یا مثلا توی ASPNET MVC (به جز ASP Core چون قضیه اش فرق داره) مثلا بخواهد یه چیزی رو از HttpContext.Current بخونید/تغییر بدید. چون این اشیایی که گفتم مال ترد اصلی هست، ترد ثانویه نمیتونه به اون دسترسی پیدا کنه.

به طور پیشفرض وقتی ما یک متد async رو به صورت عادی await میکنیم، پس از اتمام Task مربوطه، ترد ثانویه برمیگرده به Context ترد اصلی و ما بدون هیچ مشکلی میتونیم به اشیا Context ترد اصلی دسترسی پیدا کنیم ولی این قضیه یه سرباری رو داره تحمیل میکنه که بعضی وقتا بهش نیازی نیست

مثلا وقتی که ما یک کد general-purpose (غیر وابسته به Context خاصی) رو مینویسیم (مثلا کدی که به UI Control ها توی WinForm یا HttpContext.Current توی ASPNET MVC نیازی نداره) مثل یک کد دانلود یک فایل از اینترنت یا انجام عملیات با دیتابیس؛ توی این موارد میتونیم با غیر فعال کردن "بحث Sync شدن Context ها" از این سربار اضافی راحت بشیم

در مقابل وقتی ما داریم یک کد application-level (وابسته به Context خاص) رو مینویسیم (مثلا کدی که به UI Control ها توی WinForm یا HttpContext.Current توی ASPNET MVC نیاز داره) باید این قابلیت رو داشته باشیم حتما وگرنه به مشکل میخوریم (خطای "یک ترد نمیتونه به اشیا ترد دیگه دسترسی داشته باشه")

واسه غیر فعال کردن این امکان باید بر روی متد های async مون از متد ConfigureAwait با مقدار (false) استفاده کنیم . مثال
await httpClient.GetAsync(url).ConfigureAwait(false)
این مورد از dead-lock هم جلوگیری کنه در مواقتی که متد async ایی رو به صورت sync فراخوانی میکنید. مثلا :
asyncMethod.Wait(); یا
asyncMethod.Result; یا
asyncMethod.GetAwaiter().GetResult();

🔰 نتیجه :

🔸وقتی که کد general-purpose مینویسید بهتره از متد ConfigureAwait با مقدار (false) استفاده کنید.

🔹ولی وقتی که کد application-level می‌نویسید به هیچ وجه این کارو نکنید.

🔰نکته :

1️⃣ توی ASPNET Core چون به صورت پیشفرض SynchronizationContext خاص خودش رو نداره فرقی هم نمیکنه از ConfigureAwait استفاده بکنین یا نه (البته تا مادامی که به صورت دستی SynchronizationContext ایی ست نکرده باشین)

2️⃣ متد هایی که توسط Task.Run هم اجرا میشن نیازی به ConfigureAwait ندارن چون Task.Run به صورت ضمنی TaskScheduler.Default استفاده میکنه پس SynchronizationContext ترد اجرا کننده null میشه. (اینم تا مادامی که به صورت دستی SynchronizationContext ایی ست نکرده باشین)

🔰در مقاله زیر به سوالات زیر هم پاسخ داده شده :
- What is a SynchronizationContext?
- What is a TaskScheduler?
- What does ConfigureAwait(false) do?
- Why would I want to use ConfigureAwait(false)?
- Why would I want to use ConfigureAwait(true)?
- When should I use ConfigureAwait(false)?
- ...
اطلاعات بیشتر :
https://devblogs.microsoft.com/dotnet/configureawait-faq/
_______________
@DotNetZoom
Forwarded from کدهک
فروش ویژه

مرجع کامل آموزش ASP NET Core با 50% تخفیف ویژه یلدا

این دوره با مجموع 34 ساعت آموزش تخصصی ASP NET Core و به همراه یک سال اشتراک ویژه سایت کدهک عرضه میشود.

کد تخفیف : yalda

https://tinyurl.com/cdhk-yalda98

امکان خرید از طریق درگاه آنلاین یا کارت به کارت وجود دارد.

کد تخفیف 24 ساعت دیگر تمدید شد.
Forwarded from کدهک
پادکست کدهک - قسمت اول

در این قسمت می شنوید :
1-دردسرهای کریسمس برای مایکروسافت
2- آینده برنامه نویسی به کجا میرود؟
Audio
پادکست کدهک - قسمت اول
آپلود فایل های بسیار حجیم در ASP.NET Core

واسه فایل های نه چندان حجیم (مثلا تا 200 الی 300 مگابایت) میتونین از 2 آموزش زیر استفاده کنین که ترفنداشو بهتون میگه

http://www.binaryintellect.net/articles/612cf2d1-5b3d-40eb-a5ff-924005955a62.aspx

https://www.talkingdotnet.com/how-to-increase-file-upload-size-asp-net-core/

🔰 ولی اگه فایل هاتون خیلی حجیم هست (مثلا 500 مگ به بالا تاااااا چندین گیگابایت)
بهتره از روش Chunk (خرد کردن فایل حجیم به تکه های کوچیک تر و سپس آپلود این تیکه ها و نهایتا جمع کردنش سمت سرور) استفاده کنین

🔸سمپل زیر این قابلیت رو به خوبی پیاده سازی کرده
واسه این روش باید هم سمت سرور کدشو بنویسین و هم سمت کلاینت، از پلاگینی استفاده کنین که کار Chunk کردن رو براتون انجام بده (البته دستی هم میشه ولی با پلاگین راحت تره) مثلا این سمپل از پلاگین Resumable.js استفاده کرده

https://github.com/edsoncunha/chunked-file-upload-csharp
نکته : واسه اجرا حتما برنامه رو روی Kestrel اجرا کنین وگرنه در حالت IISExpress محدودیت هایی داره
_______________
@DotNetZoom
❇️ آموزش ساخت برنامه های توزیع شده (Distributed) توسط Akka.NET (زبان اصلی زیر نویس دار)

از پایین ویدئو گزینه [Subnoscript/captions] میتوانید زیرنویس آن را فعال کنید

مدل Actor به عنوان یک مدل Messaging برای برنامه‌نویسی توزیع شده و همزمان در مقابل استفاده از Thread ها به حساب می‌آید.
فریمورک Akka برای استفاده از مدل Actor در زبان Java طراحی شده و Akka.NET فریمورک Port شده آن برای دات نت است.
(اطلاعات بیشتر : Repository - Document)
توسط این فریمورک میتوان برنامه هایی با پرفرمنس و همزمانی بالا را بدون اینکه صراحتا درگیر مدیریت تردها و قفل گذاری شوید بنویسید


[01:35] - Implementations and uses of the actor model
[03:13] - What is an actor?
[10:04] - Actors in the cloud
[12:05] - Running Akka .NET on premise or in cloud
[14:31] - Use cases for Akka .NET
[17:25] - Supported versions of .NET
[18:45] - Running Akka .NET in containers

Useful Links
Petabridge - (Repository)
Akka .NET on GitHub
Akka .NET Bootcamp
Akka .NET Code Samples
____________
@DotNetZoom
🔸دعوت از علاقه‌مندان به سخنرانی در سومین رویداد DDDTalks ایران🔸

انجمن DDD ایران سومین رویداد DDD Talks خود را (رویداد زمستانه) در تاریخ ۱۷ بهمن‌ماه برگزار می‌کند.

لذا از صاحب‌نظران و علاقه‌مندان به سخنرانی در این رویداد دعوت می‌شود تا با مراجعه به سایت انجمن، موضوع مدنظر خود برای سخنرانی را حداکثر تا تاریخ ۱۰ دی ماه، اطلاع دهند.

https://dddiran.com/call-for-paper/
- ۱ دی ماه ۱۳۹۸
@DDD_IRAN
❇️ یک پروژه FullStack سورس باز SPA با Angular 8 و Asp.Net Core 3.1

🔰 تکنولوژی ها و امکانات :
✔️ASP.NET Core 3.1
✔️Entity Framework Core 3.1
✔️Both Sql Server and Sql lite databases are supported
✔️Identity Server 4
✔️Angular 8
✔️Angular CLI 8
✔️Secure - with CSP and custom security headers
✔️SignalR
✔️SASS
✔️Best practices for Angular code organisation.
✔️Clean Architecture for ASP.Net Core code.
✔️PWA support
✔️SSR (Server side rendering)
✔️Fast Unit Testing with Jest.
✔️E2E testing with Protractor.l
✔️Compodoc for Angular documentation
✔️Login and Registration using Identity Server implicit flow
✔️Extensible User/Role identity implementation
✔️Social logins support with token based authentication
✔️Swagger as Api explorer

🔸 مخزن گیتهاب
https://github.com/asadsahi/AspNetCoreSpa
_____________________
@DotNetZoom
Podcast - Episode2
Codehaks
پادکست کدهک - قسمت دوم

در این شماره می شنوید :

1- رکورد بازی سوپر ماریو
2- محیط کاری گیتهاب
3- برنامه نویسی چند زبانه
4- پیشنهاد سه زبان برای یادگرفتن در 2020
Forwarded from Breakpoint
Please open Telegram to view this post
VIEW IN TELEGRAM
#زنگ_تفریح 😅

به همین قرآن رو localhost کار میکرد! 😩

@DotNetZoom
Forwarded from Moien Tajik 💭
خلاصه ای از Garbage Collector در #C - قسمت سوم: تاریخچه ای از GC و معرفی GC Flavor ها ⚙️ :
• Server GC
• Concurrent Workstation GC
• Non-Concurrent Workstation GC


[
Moien.dev ] : https://moien.dev/posts/2020-01-10-gc-part-3/

[ .NET Tips ] : https://www.dotnettips.info/post/3165
⚫️ با نهایت تاسف، Scott Allen یکی از مدرسین عالی Pluralsight مرحوم شدند

ایشون یکی از مدرسین پیش کسوت NET. بودن
با آموزش هاشون حق گردن خیلی از ما‌ها داشتن، همچنین مطالب خوبی در وبسایتشون https://odetocode.com/ به اشتراک میگذاشتن
خدا رحمتشون کنه
__________________
@DotNetZoom
This media is not supported in your browser
VIEW IN TELEGRAM
❇️ معرفی کد آنالیزر Serilog

همانطور که میدانید Serilog قوی ترین و محبوب ترین کتابخانه Logging در دات نت است. اگر از آن استفاده می کنید پیشنهاد میکنم افزونه و کتابخونه زیر رو هم نصب کنین

ابزار Serilog Analyzer یک آنالیزر roslyn-based برای Serilog بوده و خطا های رایج و اشتباهات متداول به هنگام استفاده از Serilog را گوشزد کرده و اصلاح میکند.

🔰جهت استفاده، افزونه Visual Studio و کتابخانه زیر را نصب کنید
https://marketplace.visualstudio.com/items?itemName=Suchiman.SerilogAnalyzer
https://www.nuget.org/packages/SerilogAnalyzer

ریپازیتوری گیتهاب :
https://github.com/Suchiman/SerilogAnalyzer
___________________
@DotNetZoom
❇️ پروژه ASP.NET Core رزرو بلیط هواپیما مبتی بر DDD و CQRS و Event Sourcing

🔰تکنولوژی های استفاده شده :
✔️ASP .NET Core 2.2
✔️EF Core 2.2
✔️#RESTful API
✔️#Hypermedia API
✔️#DDD
✔️#CQRS
✔️#Event_Sourcing
✔️#MongoDb
✔️#ElasticSearch
✔️#Docker
✔️#Kubernetes
✔️#TDD

https://github.com/twzhangyang/RestAirline
_________________
@DotNetZoom