🔰معادل توابع شمارشی #C و JavaScript
در ECMAScript 5 توابعی معرفی شد که میتوانیم از آنها بجای loop ها استفاده کنیم.
لیست این توابع را میتوانید در این لینک مشاهده کنید.
🔸مقاله فارسی
https://www.dotnettips.info/post/3149
_________________
@DotNetZoom
در 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
توسط سایت 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
دیتابیس InfluxDb یک دیتابیس از نوع سری زمانی است که اطلاعات را درون کلیدی از جنس زمان با دقت نانو ثانیه ذخیره میکند.
در این ویدیو با استفاده از ASP NET Core اطلاعاتی را درون این دیتابیس ذخیره می کنیم و سپس با استفاده از Grafana به صورت گراف نمایش میدهیم.
https://tinyurl.com/cdhk-influx
❇️ در مورد متد ConfigureAwait بیشتر بدانید
این مورد توضیحش کمی پیچیدس و نیاز داره یه سری موارد رو قبلش بدونین مثل SynchronizationContext و TaskScheduler ولی خیلی ساده بخوام توضیح بدم اینکه وقتی متد async ایی رو فراخوانی میکنید اون تکه کد داخل متد async ایی توسط یک Thread دیگه [ترد ثانویه] (متفاوت از ترد [اصلی] - ترد فراخوانی کننده متد) اجرا میشه (البته نه الزاما ولی در متد های async IO bound بله)
حالا اگه داخل اون متد async ایی نیاز به دسترسی به اشیایی از Context ترد اصلی نیاز داشته باشید، باید [ترد ثانویه] برگرده به Context ترد اصلی [اصلی] تا بتونه به اشیا اون دسترسی داشته باشه وگرنه خطا میده که "یک ترد نمیتونه به اشیا ترد دیگه دسترسی داشته باشه"
مثلا توی WinForm بخواید مقدار یک کنترل UI مثل
به طور پیشفرض وقتی ما یک متد async رو به صورت عادی await میکنیم، پس از اتمام Task مربوطه، ترد ثانویه برمیگرده به Context ترد اصلی و ما بدون هیچ مشکلی میتونیم به اشیا Context ترد اصلی دسترسی پیدا کنیم ولی این قضیه یه سرباری رو داره تحمیل میکنه که بعضی وقتا بهش نیازی نیست
مثلا وقتی که ما یک کد general-purpose (غیر وابسته به Context خاصی) رو مینویسیم (مثلا کدی که به
در مقابل وقتی ما داریم یک کد application-level (وابسته به Context خاص) رو مینویسیم (مثلا کدی که به UI Control ها توی WinForm یا HttpContext.Current توی ASPNET MVC نیاز داره) باید این قابلیت رو داشته باشیم حتما وگرنه به مشکل میخوریم (خطای "یک ترد نمیتونه به اشیا ترد دیگه دسترسی داشته باشه")
واسه غیر فعال کردن این امکان باید بر روی متد های async مون از متد ConfigureAwait با مقدار (false) استفاده کنیم . مثال
🔸وقتی که کد general-purpose مینویسید بهتره از متد ConfigureAwait با مقدار (false) استفاده کنید.
🔹ولی وقتی که کد application-level مینویسید به هیچ وجه این کارو نکنید.
🔰نکته :
1️⃣ توی ASPNET Core چون به صورت پیشفرض SynchronizationContext خاص خودش رو نداره فرقی هم نمیکنه از ConfigureAwait استفاده بکنین یا نه (البته تا مادامی که به صورت دستی SynchronizationContext ایی ست نکرده باشین)
2️⃣ متد هایی که توسط Task.Run هم اجرا میشن نیازی به ConfigureAwait ندارن چون Task.Run به صورت ضمنی TaskScheduler.Default استفاده میکنه پس SynchronizationContext ترد اجرا کننده null میشه. (اینم تا مادامی که به صورت دستی SynchronizationContext ایی ست نکرده باشین)
🔰در مقاله زیر به سوالات زیر هم پاسخ داده شده :
https://devblogs.microsoft.com/dotnet/configureawait-faq/
_______________
@DotNetZoom
این مورد توضیحش کمی پیچیدس و نیاز داره یه سری موارد رو قبلش بدونین مثل 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
Microsoft News
ConfigureAwait FAQ
.NET added async/await to the languages and libraries over seven years ago. In that time, it’s caught on like wildfire, not only across the .NET ecosystem, but also being replicated in a myriad of other languages and frameworks. It’s also seen a ton of improvements…
Forwarded from کدهک
فروش ویژه
مرجع کامل آموزش ASP NET Core با 50% تخفیف ویژه یلدا
این دوره با مجموع 34 ساعت آموزش تخصصی ASP NET Core و به همراه یک سال اشتراک ویژه سایت کدهک عرضه میشود.
کد تخفیف : yalda
https://tinyurl.com/cdhk-yalda98
امکان خرید از طریق درگاه آنلاین یا کارت به کارت وجود دارد.
کد تخفیف 24 ساعت دیگر تمدید شد.
مرجع کامل آموزش ASP NET Core با 50% تخفیف ویژه یلدا
این دوره با مجموع 34 ساعت آموزش تخصصی ASP NET Core و به همراه یک سال اشتراک ویژه سایت کدهک عرضه میشود.
کد تخفیف : yalda
https://tinyurl.com/cdhk-yalda98
امکان خرید از طریق درگاه آنلاین یا کارت به کارت وجود دارد.
کد تخفیف 24 ساعت دیگر تمدید شد.
Forwarded from کدهک
پادکست کدهک - قسمت اول
در این قسمت می شنوید :
1-دردسرهای کریسمس برای مایکروسافت
2- آینده برنامه نویسی به کجا میرود؟
در این قسمت می شنوید :
1-دردسرهای کریسمس برای مایکروسافت
2- آینده برنامه نویسی به کجا میرود؟
✅ آپلود فایل های بسیار حجیم در 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
واسه فایل های نه چندان حجیم (مثلا تا 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
Telegram
Attach Files
❇️ آموزش ساخت برنامه های توزیع شده (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
از پایین ویدئو گزینه [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
Docs
Building distributed applications with Akka.NET
In this episode, Aaron Stannard (@Aaronontheweb) comes on to talk about his open source project, Akka.NET. This is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET and Mono.[01:35] - Implementations…
Forwarded from انجمن DDD ایران
🔸دعوت از علاقهمندان به سخنرانی در سومین رویداد DDDTalks ایران🔸
انجمن DDD ایران سومین رویداد DDD Talks خود را (رویداد زمستانه) در تاریخ ۱۷ بهمنماه برگزار میکند.
لذا از صاحبنظران و علاقهمندان به سخنرانی در این رویداد دعوت میشود تا با مراجعه به سایت انجمن، موضوع مدنظر خود برای سخنرانی را حداکثر تا تاریخ ۱۰ دی ماه، اطلاع دهند.
https://dddiran.com/call-for-paper/
- ۱ دی ماه ۱۳۹۸
@DDD_IRAN
انجمن 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
🔰 تکنولوژی ها و امکانات :
✔️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
GitHub
GitHub - fullstackproltd/AspNetCoreSpa: Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo:
Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo: - GitHub - fullstackproltd/AspNetCoreSpa: Asp.Net 7.0 & Angular 15 SPA Fullstack application ...
Podcast - Episode2
Codehaks
پادکست کدهک - قسمت دوم
در این شماره می شنوید :
1- رکورد بازی سوپر ماریو
2- محیط کاری گیتهاب
3- برنامه نویسی چند زبانه
4- پیشنهاد سه زبان برای یادگرفتن در 2020
در این شماره می شنوید :
1- رکورد بازی سوپر ماریو
2- محیط کاری گیتهاب
3- برنامه نویسی چند زبانه
4- پیشنهاد سه زبان برای یادگرفتن در 2020
Forwarded from Breakpoint
Please open Telegram to view this post
VIEW IN TELEGRAM
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
• 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
Moien Tajik
C# Garbage Collector - Part 3 - Moien Tajik
In this series of articles, we aim to dive into Memory Management in C#, acquaint ourselves with the Garbage Collector, and gain an overall understanding of how it operates.
⚫️ با نهایت تاسف، Scott Allen یکی از مدرسین عالی Pluralsight مرحوم شدند
ایشون یکی از مدرسین پیش کسوت NET. بودن
با آموزش هاشون حق گردن خیلی از ماها داشتن، همچنین مطالب خوبی در وبسایتشون https://odetocode.com/ به اشتراک میگذاشتن
خدا رحمتشون کنه
__________________
@DotNetZoom
ایشون یکی از مدرسین پیش کسوت 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
همانطور که میدانید 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
🔰تکنولوژی های استفاده شده :
✔️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
GitHub
GitHub - twzhangyang/RestAirline: DDD+CQRS+EventSourcing+Hypermedia API+ASP.NET Core 3.1+Masstransit+terraform+docker+k8s
DDD+CQRS+EventSourcing+Hypermedia API+ASP.NET Core 3.1+Masstransit+terraform+docker+k8s - twzhangyang/RestAirline
❇️ ویدئو های رویداد NET Conf. با موضوع Focus on Blazor
دو روز پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد.
ویدئو های این رویداد که در youtube و channel9 به همراه زیر نویس انگلیسی (گزینه Caption پایین سمت راست) جمع آوری شده و میتونین استفاده کنین
🔸لینک ویدئو ها در channel9
https://channel9.msdn.com/Events/dotnetConf/Focus-on-Blazor
🔹لینک ویدئو ها در youtube
https://www.youtube.com/playlist?list=PLdo4fOcmZ0oWlP1Qpzg7Dwzxr298ewdUQ
___________________
@DotNetZoom
دو روز پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد.
ویدئو های این رویداد که در youtube و channel9 به همراه زیر نویس انگلیسی (گزینه Caption پایین سمت راست) جمع آوری شده و میتونین استفاده کنین
🔸لینک ویدئو ها در channel9
https://channel9.msdn.com/Events/dotnetConf/Focus-on-Blazor
🔹لینک ویدئو ها در youtube
https://www.youtube.com/playlist?list=PLdo4fOcmZ0oWlP1Qpzg7Dwzxr298ewdUQ
___________________
@DotNetZoom
❇️ مهم ترین اخبار رویداد NET Conf. با موضوع Focus on Blazor
دو روز پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد و اخبار و آموزش های جدید در اون منتشر شد از جمله :
🔶 معرفی امکانات جدید
امکانات جدیدی که قرار است تا ماه May به Blazor WebAssembly (همان Client-Side Blazor سابق) اضافه شود
https://gunnarpeipman.com/focus-on-blazor-announcements/
🔷 معرفی نمونه پروژه ای از ترکیب Blazor + Electron
که امکان ساخت برنامه های مدرن و سریع Desktop ایی به صورت Cross-Platform توسط Blazor و تکنولوژی های Web ایی را فراهم می سازد (توضیحات بیشتر)
ریپازیتوری گیتهاب :
https://aka.ms/blazorelectron
🔶معرفی نمونه پروژه ای از ترکیب Blazor + WebWindow
که امکان ساخت برنامه های مانند پروژه قبلی را فراهم می سازد با این تفاوت که سبک تر است و حجم کمتری دارد. WebWindow یک پروژه (در حال حاضرآزمایشی) است که توسط Steve Sanderson خالق Blazor ساخته شده و جایگزین الکترون برای برنامههای NET Core. خواهد شد و نسبت به الکترون سبک تر و کم حجم تر است.
https://aka.ms/webwindow
🔷معرفی پروژه Mobile Blazor Bindings
که امکان ساخت برنامه های Native موبایل را توسط Razor و #C و CSS فراهم می سازد. همچنین به کامپوننت های بومی موبایل مانند GPS و Media دسترسی دارد. در این روش از کامپوننت های مبنی بر Xamarin Forms استفاده می شود
اطلاعات بیشتر و نمونه اپ های ساخته شده
https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/
https://docs.microsoft.com/en-us/mobile-blazor-bindings/
https://github.com/xamarin/MobileBlazorBindings
🔶امکان تست نویسی برای Blazor
قابلیت Unit Test نویسی برای کامپوننت های Blazor هم اکنون در حد نمونه اولیه پیاده سازی شده است و به زودی تکمیل می شود
اطلاعات بیشتر و ریپازیتوری کتابخانه مربوطه
https://blog.stevensanderson.com/2019/08/29/blazor-unit-testing-prototype/
https://github.com/egil/razor-components-testing-library
🔷کاهش حجم برنام های Blazor WebAssembly
توسط قابلیت Assembly trimming می توان حجم خروجی برنامه های Blazor WebAssembly را کاهش داد. به طور مثال حجم نسخه پیشفرض فعلی یک اپ Blazor WebAassembly حدود 2 مگابایت است که تیم Blazor وعده داده در انتشار ماه May سال جاری، حجم آن را تا 1.5 مگابایت کاهش دهد.
_______________
@DotNetZoom
دو روز پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد و اخبار و آموزش های جدید در اون منتشر شد از جمله :
🔶 معرفی امکانات جدید
امکانات جدیدی که قرار است تا ماه May به Blazor WebAssembly (همان Client-Side Blazor سابق) اضافه شود
https://gunnarpeipman.com/focus-on-blazor-announcements/
🔷 معرفی نمونه پروژه ای از ترکیب Blazor + Electron
که امکان ساخت برنامه های مدرن و سریع Desktop ایی به صورت Cross-Platform توسط Blazor و تکنولوژی های Web ایی را فراهم می سازد (توضیحات بیشتر)
ریپازیتوری گیتهاب :
https://aka.ms/blazorelectron
🔶معرفی نمونه پروژه ای از ترکیب Blazor + WebWindow
که امکان ساخت برنامه های مانند پروژه قبلی را فراهم می سازد با این تفاوت که سبک تر است و حجم کمتری دارد. WebWindow یک پروژه (در حال حاضرآزمایشی) است که توسط Steve Sanderson خالق Blazor ساخته شده و جایگزین الکترون برای برنامههای NET Core. خواهد شد و نسبت به الکترون سبک تر و کم حجم تر است.
https://aka.ms/webwindow
🔷معرفی پروژه Mobile Blazor Bindings
که امکان ساخت برنامه های Native موبایل را توسط Razor و #C و CSS فراهم می سازد. همچنین به کامپوننت های بومی موبایل مانند GPS و Media دسترسی دارد. در این روش از کامپوننت های مبنی بر Xamarin Forms استفاده می شود
اطلاعات بیشتر و نمونه اپ های ساخته شده
https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/
https://docs.microsoft.com/en-us/mobile-blazor-bindings/
https://github.com/xamarin/MobileBlazorBindings
🔶امکان تست نویسی برای Blazor
قابلیت Unit Test نویسی برای کامپوننت های Blazor هم اکنون در حد نمونه اولیه پیاده سازی شده است و به زودی تکمیل می شود
اطلاعات بیشتر و ریپازیتوری کتابخانه مربوطه
https://blog.stevensanderson.com/2019/08/29/blazor-unit-testing-prototype/
https://github.com/egil/razor-components-testing-library
🔷کاهش حجم برنام های Blazor WebAssembly
توسط قابلیت Assembly trimming می توان حجم خروجی برنامه های Blazor WebAssembly را کاهش داد. به طور مثال حجم نسخه پیشفرض فعلی یک اپ Blazor WebAassembly حدود 2 مگابایت است که تیم Blazor وعده داده در انتشار ماه May سال جاری، حجم آن را تا 1.5 مگابایت کاهش دهد.
_______________
@DotNetZoom
Gunnar Peipman - Programming Blog
Announcements from .NET Conf: Focus on Blazor
Most important announcements from .NET Conf: Focus on Blazor online conference. Blazor roadmap for May, 2020. New experimental projects announced.
❇️ ساخت برنامه های gRPC بدون فایل های proto. در ASP.NET Core
🔰برای ساخت برنامه های gRPC در دات نت، 2 پیاده سازی متفاوت (یکی رسمی و دیگری غیر رسمی) وجود دارد
1️⃣ پیاده سازی grpc-dotnet (یا gRPC for .NET) که کتابخانه رسمی gRPC برای دات نت است
https://github.com/grpc/grpc-dotnet
2️⃣ پیاده سازی protobuf-net.Grpc که کتابخانه غیر رسمی و از توسط Marc Gravell (یکی از برنامه نویسان بزرگ سایت Stackoverflow، و نویسنده کتابخانه های محبوب Dapper و StackExchange.Redis) تهیه شده است
https://github.com/protobuf-net/protobuf-net.Grpc
🔸یکی از تفاوت های این دو کتابخانه این است که در حالت عادی (توسط grpc-dotnet) ساخت فایل های .proto جهت تعریف ساختار API الزامی است ولی توسط کتابخانه protobuf-net.Grpc نیازی به فایل های اضافی .proto نبوده و ساختار متد های سرویس دهنده توسط Interface ها مشخص می شوند.
🔹تفاوت دیگر آن این است که کتابخانه protobuf-net.Grpc تارگت های NETFramework 4.6.1. و NETStandard 2.0. و NETStandard 2.1. را پشتیبانی میکند در حالی که کتابخانه grpc-dotnet فقط NETStandard 2.1. را پشتیبانی میکند در نتیجه بر روی .NET Framework و .NET Core نسخه های قبل از 3.0 قابل اجرا نیست
- البته یک پیاده سازی رسمی دیگر (به نام gRPC for C#) نیز وجود دارد که از نسخه های قدیمی تر مانند NETFramework 4.5. و NETStandard 1.5. و NETStandard 2.0. هم پشتیبانی میکند
https://github.com/grpc/grpc/tree/master/src/csharp
🔸نکته بعدی، تفاوت در سرعت این دو کتابخانه است به صورتی که طبق بنچمارک زیر protobuf-net.Grp کمی کند تر از grpc-dotnet است
https://pawelkmiec.net/2019/11/17/gRPC-performance-benchmark.html
🔹تفاوت بعد آن این است که API های کتابخانه رسمی grpc-dotnet و #gRPC for C شبیه پیاده سازی اصلی grpc گوگل بوده در حالی که کتابخانه protobuf- net.Grpc بیشتر متمایل به Contract های سی شارپی بوده و کار با آن برای برنامه نویسان سی شارپ ساده تر و باب میل تر است
🔰 مشابه قضیه بالا، برای استفاده از protobuf در دات نت نیز 2 کتابخانه وجود دارد
1️⃣ کتابخانه Google.Protobuf : که پیاده سازی و استفاده از آن شبیه نسخه اصلی protobuf است. (ریپازیتوری گیتهاب)
2️⃣ کتابخانه protobuf-net : که پیاده سازی و استفاده از آن شبیه بقیه سریالایزرهای دات نتی بوده و بیشتر متمایل به سی شارپ است. (ریپازیتوری گیتهاب)
کتابخانه دومی بیشتر باب میل سی شارپیها بوده و نیز ساده تر است. با دیدن مثال هر دو کتابخانه میتوانید بهتر متوجه این تفاوت شوید.
لینک زیر هم به مقایسه این دو کتابخانه پرداخته :
How to choose between protobuf-csharp-port and protobuf-net
✅ آموزش استفاده از protobuf-net.Grpc
✔️Getting Started with protobuf-net.Grpc
✔️Mark Gravell Talking Between Services with gRPC and Other Tricks
✅ آموزش استفاده از grpc-dotnet و #gRPC for C
✔️Introduction to gRPC on .NET Core
✔️gRPC services with C#
✔️gRPC services with ASP.NET Core
✔️Call gRPC services with the .NET client
✔️Create a gRPC client and server in ASP.NET Core
✔️Trying out gRPC in ASP.NET Core 3
__________________
@DotNetZoom
🔰برای ساخت برنامه های gRPC در دات نت، 2 پیاده سازی متفاوت (یکی رسمی و دیگری غیر رسمی) وجود دارد
1️⃣ پیاده سازی grpc-dotnet (یا gRPC for .NET) که کتابخانه رسمی gRPC برای دات نت است
https://github.com/grpc/grpc-dotnet
2️⃣ پیاده سازی protobuf-net.Grpc که کتابخانه غیر رسمی و از توسط Marc Gravell (یکی از برنامه نویسان بزرگ سایت Stackoverflow، و نویسنده کتابخانه های محبوب Dapper و StackExchange.Redis) تهیه شده است
https://github.com/protobuf-net/protobuf-net.Grpc
🔸یکی از تفاوت های این دو کتابخانه این است که در حالت عادی (توسط grpc-dotnet) ساخت فایل های .proto جهت تعریف ساختار API الزامی است ولی توسط کتابخانه protobuf-net.Grpc نیازی به فایل های اضافی .proto نبوده و ساختار متد های سرویس دهنده توسط Interface ها مشخص می شوند.
🔹تفاوت دیگر آن این است که کتابخانه protobuf-net.Grpc تارگت های NETFramework 4.6.1. و NETStandard 2.0. و NETStandard 2.1. را پشتیبانی میکند در حالی که کتابخانه grpc-dotnet فقط NETStandard 2.1. را پشتیبانی میکند در نتیجه بر روی .NET Framework و .NET Core نسخه های قبل از 3.0 قابل اجرا نیست
- البته یک پیاده سازی رسمی دیگر (به نام gRPC for C#) نیز وجود دارد که از نسخه های قدیمی تر مانند NETFramework 4.5. و NETStandard 1.5. و NETStandard 2.0. هم پشتیبانی میکند
https://github.com/grpc/grpc/tree/master/src/csharp
🔸نکته بعدی، تفاوت در سرعت این دو کتابخانه است به صورتی که طبق بنچمارک زیر protobuf-net.Grp کمی کند تر از grpc-dotnet است
https://pawelkmiec.net/2019/11/17/gRPC-performance-benchmark.html
🔹تفاوت بعد آن این است که API های کتابخانه رسمی grpc-dotnet و #gRPC for C شبیه پیاده سازی اصلی grpc گوگل بوده در حالی که کتابخانه protobuf- net.Grpc بیشتر متمایل به Contract های سی شارپی بوده و کار با آن برای برنامه نویسان سی شارپ ساده تر و باب میل تر است
🔰 مشابه قضیه بالا، برای استفاده از protobuf در دات نت نیز 2 کتابخانه وجود دارد
1️⃣ کتابخانه Google.Protobuf : که پیاده سازی و استفاده از آن شبیه نسخه اصلی protobuf است. (ریپازیتوری گیتهاب)
2️⃣ کتابخانه protobuf-net : که پیاده سازی و استفاده از آن شبیه بقیه سریالایزرهای دات نتی بوده و بیشتر متمایل به سی شارپ است. (ریپازیتوری گیتهاب)
کتابخانه دومی بیشتر باب میل سی شارپیها بوده و نیز ساده تر است. با دیدن مثال هر دو کتابخانه میتوانید بهتر متوجه این تفاوت شوید.
لینک زیر هم به مقایسه این دو کتابخانه پرداخته :
How to choose between protobuf-csharp-port and protobuf-net
✅ آموزش استفاده از protobuf-net.Grpc
✔️Getting Started with protobuf-net.Grpc
✔️Mark Gravell Talking Between Services with gRPC and Other Tricks
✅ آموزش استفاده از grpc-dotnet و #gRPC for C
✔️Introduction to gRPC on .NET Core
✔️gRPC services with C#
✔️gRPC services with ASP.NET Core
✔️Call gRPC services with the .NET client
✔️Create a gRPC client and server in ASP.NET Core
✔️Trying out gRPC in ASP.NET Core 3
__________________
@DotNetZoom
GitHub
GitHub - grpc/grpc-dotnet: gRPC for .NET
gRPC for .NET. Contribute to grpc/grpc-dotnet development by creating an account on GitHub.