منتشر شد .NET Core 3 Preview 2
بررسی تغییرات و قابلیت های مهم :
1- پشتیبانی از قابلیت های جدید سی شارپ 8
- قابلیت Using Declarations :
توسط این قابلیت میتونین متغیر های Disposable تون رو به صورت using توی یک بلاک scope تعریف کنین و قتی اون بلاک به اتمام رسید، اون متغیر هم به صورت خودکار Dispose میشه
این قابلیت امکان تعریف راحت تر و هوشمندانه تر دستور switch رو مشابه سینتکس lambda expression را برای ما فراهم میکنه.
محدودیت قابلیت await/async این بود که در آن نمی شد لیستی از مقادیر رو به صورت yield باز گردوند. این محدودیت توسط قابلیت Async streams برطرف شده و شما میتونین همزمان هم از yield return و در نتیجه گرفتن خروجی به صورت lazy توی IEnumerable استفاده کنین و هم از async
- قابلیت های سی شارپ 8 در آینده به تفصل مورد بررسی قرار خواهند گرفت
2- اضافه شدن Json Seralizer داخلی بسیار سریع
در راستای حذف وابستگی JsonNET - Newtonsoft از ASP Core و جایگزین کردن آن با یک Json Serializer داخلی سبک و سریع، کلاس های Utf8JsonWriter و JsonDocument اضافه شده اند.
کلاس Utf8JsonWriter که برای Serialize کردن استفاده میشه نسبت به مشابه اون در JsonNET، افزایش پرفرمنس 30 تا 80 درصدی را (بدون تخصیص حافظه) به همراه داشته.
و کلاس JsonDocument که برای Desrialize/Parse کردن استفاده میشه نیز نسبت به مشابه آن در JsonNET بین 2 تا 3 برابر سریع تره و حافظه کمتری تخصیص میکنه.
3- بهبود محاسبات اعداد اعشاری!
در راستای مطابقت با استاندارد IEEE 754-2008 revision (که درباره عملیات های مربوط به محاسبات اعداد اعشاری است) بهبود هایی انجام گرفته و چندین api محاسبات ریاضی جدید هم اضافه شده.
4- پیشتبانی بیشتر از CPU instruction sets
مجموعه ای دستور العمل هایی برای CPU (مانند SIMD یا Bit Manipulation) وجود دارند که در بعضی سناریو های خاص مانند پردازش موازی یا... ،پرفرمنس را به شدت افزایش میدهند که در این ورژن پشتیبانی بیشتری از آنها انجام شده است.
لیست تغییرات خیلی بیشتره میتونین از لینک زیر مطالعه کنین.
توضیحات بیشتر :
https://blogs.msdn.microsoft.com/dotnet/2019/01/29/announcing-net-core-3-preview-2/
_______________
@IranAspMvc
بررسی تغییرات و قابلیت های مهم :
1- پشتیبانی از قابلیت های جدید سی شارپ 8
- قابلیت Using Declarations :
توسط این قابلیت میتونین متغیر های Disposable تون رو به صورت using توی یک بلاک scope تعریف کنین و قتی اون بلاک به اتمام رسید، اون متغیر هم به صورت خودکار Dispose میشه
HttpResposeMessage GetUrl(string url)- قابلیت Switch Expressions :
{
using var httpClient = new HttpClient();
return httpClient.Get(url);
} // httpClient disposed here
این قابلیت امکان تعریف راحت تر و هوشمندانه تر دستور switch رو مشابه سینتکس lambda expression را برای ما فراهم میکنه.
string Display(object item) => o switch- قابلیت Async streams :
{
Point { X: 0, Y: 0 } => "origin",
Point { X: var x, Y: var y } => $"({x}, {y})",
_ => "unknown"
};
محدودیت قابلیت await/async این بود که در آن نمی شد لیستی از مقادیر رو به صورت yield باز گردوند. این محدودیت توسط قابلیت Async streams برطرف شده و شما میتونین همزمان هم از yield return و در نتیجه گرفتن خروجی به صورت lazy توی IEnumerable استفاده کنین و هم از async
- قابلیت های سی شارپ 8 در آینده به تفصل مورد بررسی قرار خواهند گرفت
2- اضافه شدن Json Seralizer داخلی بسیار سریع
در راستای حذف وابستگی JsonNET - Newtonsoft از ASP Core و جایگزین کردن آن با یک Json Serializer داخلی سبک و سریع، کلاس های Utf8JsonWriter و JsonDocument اضافه شده اند.
کلاس Utf8JsonWriter که برای Serialize کردن استفاده میشه نسبت به مشابه اون در JsonNET، افزایش پرفرمنس 30 تا 80 درصدی را (بدون تخصیص حافظه) به همراه داشته.
و کلاس JsonDocument که برای Desrialize/Parse کردن استفاده میشه نیز نسبت به مشابه آن در JsonNET بین 2 تا 3 برابر سریع تره و حافظه کمتری تخصیص میکنه.
3- بهبود محاسبات اعداد اعشاری!
در راستای مطابقت با استاندارد IEEE 754-2008 revision (که درباره عملیات های مربوط به محاسبات اعداد اعشاری است) بهبود هایی انجام گرفته و چندین api محاسبات ریاضی جدید هم اضافه شده.
4- پیشتبانی بیشتر از CPU instruction sets
مجموعه ای دستور العمل هایی برای CPU (مانند SIMD یا Bit Manipulation) وجود دارند که در بعضی سناریو های خاص مانند پردازش موازی یا... ،پرفرمنس را به شدت افزایش میدهند که در این ورژن پشتیبانی بیشتری از آنها انجام شده است.
لیست تغییرات خیلی بیشتره میتونین از لینک زیر مطالعه کنین.
توضیحات بیشتر :
https://blogs.msdn.microsoft.com/dotnet/2019/01/29/announcing-net-core-3-preview-2/
_______________
@IranAspMvc
.NET Blog
Announcing .NET Core 3 Preview 2
Today, we are announcing .NET Core 3 Preview 2. It includes new features in .NET Core 3.0 and C# 8, in addition to the large number of new features in Preview 1. ASP.NET Core 3.0 Preview 2 is also released today.
منتشر شد ASP.NET Core 3.0
اینطور که پیداست، تغییرات توی AspCore 3.0 و پیش نمایش هاش زیاده و هر بار با تعداد زیادی قابلیت و تغییر مواجه میشیم
Razor Components
SignalR client-to-server streaming
Pipes on HttpContext
Generic host in templates
Endpoint routing updates
به زودی تغییرات مهم این رو هم بررسی میکنیم
https://blogs.msdn.microsoft.com/webdev/2019/01/29/aspnet-core-3-preview-2/
_____________
@IranAspMvc
اینطور که پیداست، تغییرات توی AspCore 3.0 و پیش نمایش هاش زیاده و هر بار با تعداد زیادی قابلیت و تغییر مواجه میشیم
Razor Components
SignalR client-to-server streaming
Pipes on HttpContext
Generic host in templates
Endpoint routing updates
به زودی تغییرات مهم این رو هم بررسی میکنیم
https://blogs.msdn.microsoft.com/webdev/2019/01/29/aspnet-core-3-preview-2/
_____________
@IranAspMvc
ASP.NET Blog
ASP.NET Blog | ASP.NET Core updates in .NET Core 3.0 Preview 2
ASP.NET Core 3.0 Preview 2 now available and includes what's new like Razor Components, SignalR client-to-server streaming, Pipes on HttpContext, and more!
دانلود کتاب رایگان Domain Driven Design: The First 15 Years
به مناسبت 15 امین سالگرد به وجود اومدن Domain Driven Design، با دعوت اساتید برجسته این حوزه، کتابی تحت عنوان "15 سال اول" تهیه و به صورت رایگان منتشر شده است.
https://ufile.io/u6bx8
_______________
@IranAspMvc
به مناسبت 15 امین سالگرد به وجود اومدن Domain Driven Design، با دعوت اساتید برجسته این حوزه، کتابی تحت عنوان "15 سال اول" تهیه و به صورت رایگان منتشر شده است.
https://ufile.io/u6bx8
_______________
@IranAspMvc
توی این سری پست ها میخوایم تغییرات مهم ASP.NET Core 3.0 پیش نمایش 2 رو بررسی کنیم.
1️⃣ حذف وابستگی ها
یکی از تغییرات مهم این نسخه، حذف وابستگی JSON.Net از ASP Core 3.0 و اضافه شدن یک Json Serializer داخلی سریع و سبک در NET Core 3.0 در راستای ایجاد یک بستر مشترک و مستقل برای ASP Core است
به همین جهت از این به بعد برای استفاده از JSON.Net (مثل سابق) و یا برای ارتقاء برنامه های موجود خود با ورژن های پایین تر به ASP Core 3.0، باید پکیج
همچنین در همین راستا، وابستگی کامپایلر Roslyn نیز حذف شده و در نتیجه آن قابلیت کامپایل runtime برای View ها نیز حذف شده است و به جای آن، کامپایل ویو ها در زمان Build انجام خواهد شد.
ولی گفته شده برای فعال سازی قابلیت کامپایل runtime ویو ها در نسخه های پیش نمایش بعدی، یک پکیچ Nuget ارائه خواهد شد.
2️⃣ قابلیت Streaming دیتا از کلاینت به سرور در SignalR
قابلیت استریمینگ از سرور به کلاینت توی نسخه 2.1 اضافه شد و این امکان رو به ما میداد که به جای اینکه سمت سرور منتظر باشیم تا دیتا کامل لود بشه و بعد اون رو سمت کلاینت ارسال کنیم، دیتا ها رو به محض اماده شدن، به صورت بخش بخش به کلانیت ارسال کنیم
حالا برعکس این قابلیت یعنی استریمینگ از کلاینت به سرور اضافه شده در نتیجه کلاینت میتونه به جای اینکه صبر کنه تا دیتا کامل سمت کلاینت آماده بشه، لحظه به لحظه به محض اینکه هر دیتایی سمت کلاینت آماده شد، اون رو به سرور ارسال کنه.
از این قابلیت میشه مثلا برای استریمینگ ویدئو به سرور (مثلا ارسال تصاویر وبکم به سرور) استفاده کرد و سمت سرور هم میتونیم تصاویر دریافتی رو به یه کاربر دیگه به صورت استریمینگ ارسال کنیم و این یعنی امکان ایجاد یک ارتباط ویدئویی آنلاین بین دو/چند نفر!
لینک زیر هم همینکارو خیلی جالب انجام داده. اگه وبکم دارین کافیه لینک زیر رو باز کنین و توی اون تکس باکس یه اسم تایپ کنین و دکمه Start Streaming رو بزنین و اجازه دسترسی وبکم رو بهش بدین و تصویر خودتون رو به صورت متنی مشاهده کنین!
https://streamr.azurewebsites.net/
در کل در این نسخه، تغییرات زیادی داشته و اگه نجنبیم از غافله اپدیت ها عقب میمونیم :)
ادامه بررسی ها در پست بعدی
@IranAspMvc
1️⃣ حذف وابستگی ها
یکی از تغییرات مهم این نسخه، حذف وابستگی JSON.Net از ASP Core 3.0 و اضافه شدن یک Json Serializer داخلی سریع و سبک در NET Core 3.0 در راستای ایجاد یک بستر مشترک و مستقل برای ASP Core است
به همین جهت از این به بعد برای استفاده از JSON.Net (مثل سابق) و یا برای ارتقاء برنامه های موجود خود با ورژن های پایین تر به ASP Core 3.0، باید پکیج
Microsoft.AspNetCore.Mvc.NewtonsoftJson نصب و متد زیر اعمال شود.services.AddMvc()در غیر این صورت، عملیات سریالاز Json توسط Json Serializer داخلی آن انجام می شود که در پست قبلی سرعت آن را مقایسه کردیم و پیشنهاد می شود از این به بعد از آن به جای JSON.Net استفاده شود چرا که بسیار سریع تر و سبک تر است.
.AddNewtonsoftJson();
همچنین در همین راستا، وابستگی کامپایلر Roslyn نیز حذف شده و در نتیجه آن قابلیت کامپایل runtime برای View ها نیز حذف شده است و به جای آن، کامپایل ویو ها در زمان Build انجام خواهد شد.
ولی گفته شده برای فعال سازی قابلیت کامپایل runtime ویو ها در نسخه های پیش نمایش بعدی، یک پکیچ Nuget ارائه خواهد شد.
2️⃣ قابلیت Streaming دیتا از کلاینت به سرور در SignalR
قابلیت استریمینگ از سرور به کلاینت توی نسخه 2.1 اضافه شد و این امکان رو به ما میداد که به جای اینکه سمت سرور منتظر باشیم تا دیتا کامل لود بشه و بعد اون رو سمت کلاینت ارسال کنیم، دیتا ها رو به محض اماده شدن، به صورت بخش بخش به کلانیت ارسال کنیم
حالا برعکس این قابلیت یعنی استریمینگ از کلاینت به سرور اضافه شده در نتیجه کلاینت میتونه به جای اینکه صبر کنه تا دیتا کامل سمت کلاینت آماده بشه، لحظه به لحظه به محض اینکه هر دیتایی سمت کلاینت آماده شد، اون رو به سرور ارسال کنه.
از این قابلیت میشه مثلا برای استریمینگ ویدئو به سرور (مثلا ارسال تصاویر وبکم به سرور) استفاده کرد و سمت سرور هم میتونیم تصاویر دریافتی رو به یه کاربر دیگه به صورت استریمینگ ارسال کنیم و این یعنی امکان ایجاد یک ارتباط ویدئویی آنلاین بین دو/چند نفر!
لینک زیر هم همینکارو خیلی جالب انجام داده. اگه وبکم دارین کافیه لینک زیر رو باز کنین و توی اون تکس باکس یه اسم تایپ کنین و دکمه Start Streaming رو بزنین و اجازه دسترسی وبکم رو بهش بدین و تصویر خودتون رو به صورت متنی مشاهده کنین!
https://streamr.azurewebsites.net/
در کل در این نسخه، تغییرات زیادی داشته و اگه نجنبیم از غافله اپدیت ها عقب میمونیم :)
ادامه بررسی ها در پست بعدی
@IranAspMvc
3️⃣ قابلیت جدیدی به نام Razor Component
اما میشه گفت مهم ترین قابلیتی که به این نسخه اضافه شده Razor Components هست. این قابلیت یه روش جدید برای ساخت کامپیوننت های UI سمت کلاینت هست با این تفاوت که امکان اجرا کد های اونا سمت سرور هم وجود داره و ارتباط کلاینت و سرور جهت برورسانی وضعیت اون کامپوننت، به صورت real-time توسط SignalR انجام میشه. درنتیجه باهاش میتونین کد های منطق کامپوننت تون رو به جای javascript، با سی شارپ و سمت سرور بنویسین و بلافاصله تغییرات ظاهری لازم رو سمت کاربر مشاهده کنین.
این کامپوننت های کاملا مستقل هتستند و به راحتی میتونین کامپوننت ها رو بیلد کنین و خروجی dll اش رو توی پروژه هاتون اضافه و از کامپوننت هاتون استفاده کنین.
این قابلیت در ابتدا توی پروژه Blazor تحت عنوان Blazor Component به وجود آومد و الان ماکروسافت، اون رو به ASP Core هم منتقل کرده و هم اکنون امکان اجرای Razor Component ها بر روی هر دو پلتفرم ASP Core و Blazor ممکن شده.
اینطور که پیداست ماکروسافت حسابی پشت Blazor رو گرفته و تصمیم داره بعضی از قابلیت های Blazor رو به ASP Core اضافه کنه. پس میشه احتمال داد که آینده خوبی در انتظار Blazor هست!
پیشنهاد میکنم یه بار تستش کنین خیلی با حاله.
نحوه کار باهاش تو لینک زیر :
https://bit.ly/2GpmCqs
تو این مثال، یه button گذاشته که با هربار کلیک روش، یه واحد به یک عدد اضافه میشه؛ تو حالت عادی این کد باید با javascript نوشته بشه، ولی در اینجا، کد تمام کد لازم برای این عملیات با سی شارپ و سمت سرور نوشته شده و وقتی روی اون button کلیک میکنین با SignalR عملیات لازم سمت سرور انجام و نتیجه اون بلافاصله سمت کلاینت مشاهده میشه.
البته چون این قابلیت، عملیات منطق و رندر شدن کامپوننت ها سمت سرور انجام میشه، ممکنه توی تعداد بازدید بالا، بار روی سرور رو زیاد کنه پس بهتره با احتیاط استفاده بشه.
توضیحات بیشتر و آموزش :
https://bit.ly/2Gobkml
نکته جالب دیگه، امکان تعامل و اجرای کد های جاواسکریپت در Razor Component ها هست. یعنی میتونین سمت سرور مشخص کنین، وقتی روی فلان button کلیک شد یه کد javascript ایی سمت کاربر اجرا بشه، مثلا یه مودال خوشگل (که کتابخانه JS ایش سمت کلاینت اضافه شده) نمایش داده بشه. (که به این قابلیت میگن JavaScript interop)
یه روش دیگه برای کار با Razor Component ها، اجرای مستقیم اون ها درون مرورگر بدون نیاز به اتصال به سرور از طریق SignalR هست. در واقع به لطف پروژه Blazor و امکان اجرای کد های دات نت در مروگر توسط WebAssembly، میشه کامپوننت هایی با سی شارپ نوشت که مستقما توی مروگر اجرا میشن
البته این قابلیت هنوز توی این نسخه از ASP Core نیومده ولی قراره در نسخه های بعدی اضافه بشه.
نکته آخر هم اینکه: در حال حاضر فقط ادیتور VS 2019 از Razor Component پشتیبانی میکنه و نه VS for Mac و نه VS Code واسه توسعه این قابلیت پشتیبانی لازم رو ندارند. اینم به اون معنی نیست که بدون VS 2019 نمیتونین از Razor Component استفاده کنین. بلکه فقط intellisense و عیب یابی رو توی بقیه ندارین وگرنه با یه notepad هم میشه کد های Razor Component رو ویرایش کرد و توسعه داد.
مهم ترین تغییراتش اینا بود ولی چندتای دیگه هم مونده که اگه فرصت کردم در آینده بهشون میپردازم.
@IranAspMvc
اما میشه گفت مهم ترین قابلیتی که به این نسخه اضافه شده Razor Components هست. این قابلیت یه روش جدید برای ساخت کامپیوننت های UI سمت کلاینت هست با این تفاوت که امکان اجرا کد های اونا سمت سرور هم وجود داره و ارتباط کلاینت و سرور جهت برورسانی وضعیت اون کامپوننت، به صورت real-time توسط SignalR انجام میشه. درنتیجه باهاش میتونین کد های منطق کامپوننت تون رو به جای javascript، با سی شارپ و سمت سرور بنویسین و بلافاصله تغییرات ظاهری لازم رو سمت کاربر مشاهده کنین.
این کامپوننت های کاملا مستقل هتستند و به راحتی میتونین کامپوننت ها رو بیلد کنین و خروجی dll اش رو توی پروژه هاتون اضافه و از کامپوننت هاتون استفاده کنین.
این قابلیت در ابتدا توی پروژه Blazor تحت عنوان Blazor Component به وجود آومد و الان ماکروسافت، اون رو به ASP Core هم منتقل کرده و هم اکنون امکان اجرای Razor Component ها بر روی هر دو پلتفرم ASP Core و Blazor ممکن شده.
اینطور که پیداست ماکروسافت حسابی پشت Blazor رو گرفته و تصمیم داره بعضی از قابلیت های Blazor رو به ASP Core اضافه کنه. پس میشه احتمال داد که آینده خوبی در انتظار Blazor هست!
پیشنهاد میکنم یه بار تستش کنین خیلی با حاله.
نحوه کار باهاش تو لینک زیر :
https://bit.ly/2GpmCqs
تو این مثال، یه button گذاشته که با هربار کلیک روش، یه واحد به یک عدد اضافه میشه؛ تو حالت عادی این کد باید با javascript نوشته بشه، ولی در اینجا، کد تمام کد لازم برای این عملیات با سی شارپ و سمت سرور نوشته شده و وقتی روی اون button کلیک میکنین با SignalR عملیات لازم سمت سرور انجام و نتیجه اون بلافاصله سمت کلاینت مشاهده میشه.
البته چون این قابلیت، عملیات منطق و رندر شدن کامپوننت ها سمت سرور انجام میشه، ممکنه توی تعداد بازدید بالا، بار روی سرور رو زیاد کنه پس بهتره با احتیاط استفاده بشه.
توضیحات بیشتر و آموزش :
https://bit.ly/2Gobkml
نکته جالب دیگه، امکان تعامل و اجرای کد های جاواسکریپت در Razor Component ها هست. یعنی میتونین سمت سرور مشخص کنین، وقتی روی فلان button کلیک شد یه کد javascript ایی سمت کاربر اجرا بشه، مثلا یه مودال خوشگل (که کتابخانه JS ایش سمت کلاینت اضافه شده) نمایش داده بشه. (که به این قابلیت میگن JavaScript interop)
یه روش دیگه برای کار با Razor Component ها، اجرای مستقیم اون ها درون مرورگر بدون نیاز به اتصال به سرور از طریق SignalR هست. در واقع به لطف پروژه Blazor و امکان اجرای کد های دات نت در مروگر توسط WebAssembly، میشه کامپوننت هایی با سی شارپ نوشت که مستقما توی مروگر اجرا میشن
البته این قابلیت هنوز توی این نسخه از ASP Core نیومده ولی قراره در نسخه های بعدی اضافه بشه.
نکته آخر هم اینکه: در حال حاضر فقط ادیتور VS 2019 از Razor Component پشتیبانی میکنه و نه VS for Mac و نه VS Code واسه توسعه این قابلیت پشتیبانی لازم رو ندارند. اینم به اون معنی نیست که بدون VS 2019 نمیتونین از Razor Component استفاده کنین. بلکه فقط intellisense و عیب یابی رو توی بقیه ندارین وگرنه با یه notepad هم میشه کد های Razor Component رو ویرایش کرد و توسعه داد.
مهم ترین تغییراتش اینا بود ولی چندتای دیگه هم مونده که اگه فرصت کردم در آینده بهشون میپردازم.
@IranAspMvc
aspnetcore-developer-roadmap.png
534.3 KB
نقشه راه برنامه نویسی ASP.NET Core 2019
اگه میخواین بدونین چه سرفصل ها و موضوعاتی رو باید/بهتره یاد بگیرین و یا از کجاش شروع کنین، این نقشه راه (Roadmap) خیلی کمکتون میکنه
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
در آینده این رودمپ تکمیل تر و اصلاح تر هم خواهد شد پس واسه دیدن آخرین تغییرات به لینک ریپازیتوریش سر بزنین
@IranAspMvc
اگه میخواین بدونین چه سرفصل ها و موضوعاتی رو باید/بهتره یاد بگیرین و یا از کجاش شروع کنین، این نقشه راه (Roadmap) خیلی کمکتون میکنه
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
در آینده این رودمپ تکمیل تر و اصلاح تر هم خواهد شد پس واسه دیدن آخرین تغییرات به لینک ریپازیتوریش سر بزنین
@IranAspMvc
مقایسه تکنولوژی استفاده شده در شرکت های بزرگ برنامه نویسی دنیا
توسط این سایت می توانید بهترین تکنولوژی، ابزار ها و فریمورک های مورد استفاده در شرکت های بزرگ برنامه نویسی دنیا را مشاهده و با یکدیگر مقایسه کنید.
https://stackshare.io/
مثلا لینک زیر تکنولوژی ها و ابزاری های مورد استفاده در شرکت Airbnb را نمایش می دهد.
https://stackshare.io/airbnb/airbnb
_______________
@IranAspMvc
توسط این سایت می توانید بهترین تکنولوژی، ابزار ها و فریمورک های مورد استفاده در شرکت های بزرگ برنامه نویسی دنیا را مشاهده و با یکدیگر مقایسه کنید.
https://stackshare.io/
مثلا لینک زیر تکنولوژی ها و ابزاری های مورد استفاده در شرکت Airbnb را نمایش می دهد.
https://stackshare.io/airbnb/airbnb
_______________
@IranAspMvc
مقایسه بهترین کتابخانه های دات نت
https://dotnet.libhunt.com
توسط این سایت میتونین کتابخانه های دات نت رو با هم مقایسه کنین و بفهمین کدوم محبوب تره، همچنین میتونین لیستی از کتابخانه های مشابه رو هم برای هر کدوم پیدا کنید.
این سایت از پارامتر های مختلفی برای مقایسه و امتیازدهی کتابخانه ها استفاده میکنه. از جمله:
- Star, Fork, Watcher گیتهاب
- میزان فعال بودن بر اساس آخریت کامیت
- تعداد دانلود در ماه
- میزان کیفیت کد و ...
- میزان سرچ اش رو هم براسا امار Google Trend نشون میده
مثلا لینک زیر IOC Container های معروف Autofac و Ninject را با هم مقایسه میکنه.
https://dotnet.libhunt.com/compare-autofac-vs-ninject?rel=cmp-lib
🔸 توسط این سایت و سایت قبلی که معرفی کردیم میتونین بدون شک "محبوب ترین" کتابخانه و ابزار ها رو برای کاراتون پیدا کنین.
@IranAspMvc
https://dotnet.libhunt.com
توسط این سایت میتونین کتابخانه های دات نت رو با هم مقایسه کنین و بفهمین کدوم محبوب تره، همچنین میتونین لیستی از کتابخانه های مشابه رو هم برای هر کدوم پیدا کنید.
این سایت از پارامتر های مختلفی برای مقایسه و امتیازدهی کتابخانه ها استفاده میکنه. از جمله:
- Star, Fork, Watcher گیتهاب
- میزان فعال بودن بر اساس آخریت کامیت
- تعداد دانلود در ماه
- میزان کیفیت کد و ...
- میزان سرچ اش رو هم براسا امار Google Trend نشون میده
مثلا لینک زیر IOC Container های معروف Autofac و Ninject را با هم مقایسه میکنه.
https://dotnet.libhunt.com/compare-autofac-vs-ninject?rel=cmp-lib
🔸 توسط این سایت و سایت قبلی که معرفی کردیم میتونین بدون شک "محبوب ترین" کتابخانه و ابزار ها رو برای کاراتون پیدا کنین.
@IranAspMvc
رمزنگاری JWT و افزایش امنیت آن در ASP.NET Core
توکن JWT در حالت عادی به صورت Base64 کدگذاری(Encoding) میشه که این نوع Encoding به راحتی قابل رمزگشایی و خواندنه (امنیت در برابر خوانده شدن نداره).
در این مقاله میخوایم توکن JWT رو رمزنگاری کنیم و اون رو به Json Web Encryption (به اختصار JWE) تبدیل کنیم و امنیتش رو بالا ببریم
https://www.dotnettips.info/post/2992
مثال کامل و قابل اجرا در ریپازیتوری گیتهاب:
https://github.com/mjebrahimi/Jwt-Encryption-AspCore
__________
@IranAspMvc
توکن JWT در حالت عادی به صورت Base64 کدگذاری(Encoding) میشه که این نوع Encoding به راحتی قابل رمزگشایی و خواندنه (امنیت در برابر خوانده شدن نداره).
در این مقاله میخوایم توکن JWT رو رمزنگاری کنیم و اون رو به Json Web Encryption (به اختصار JWE) تبدیل کنیم و امنیتش رو بالا ببریم
https://www.dotnettips.info/post/2992
مثال کامل و قابل اجرا در ریپازیتوری گیتهاب:
https://github.com/mjebrahimi/Jwt-Encryption-AspCore
__________
@IranAspMvc
سریع ترین Object Mapper دات نت
کتابخانه Mapster مشابه AutoMapper است ولی با پرفرمنس باورنکردنی و فوق سریع
این کتابخانه حتی از حالت دستی هم سریع تر است!
https://github.com/MapsterMapper/Mapster
طبق بنچمارک زیر متونین پرفرمنس این روش ها رو مقایسه کنین.
https://github.com/mjebrahimi/Benchmark.netCoreMappers
_______________
@IranAspMvc
کتابخانه Mapster مشابه AutoMapper است ولی با پرفرمنس باورنکردنی و فوق سریع
این کتابخانه حتی از حالت دستی هم سریع تر است!
https://github.com/MapsterMapper/Mapster
طبق بنچمارک زیر متونین پرفرمنس این روش ها رو مقایسه کنین.
https://github.com/mjebrahimi/Benchmark.netCoreMappers
_______________
@IranAspMvc
Forwarded from جادی، کیبورد آزاد - Jadi
مثل هر سال «نظر سنجی بزرگ برنامه نویسان و مدیر سیستم های ایران» شروع شد (: لطفا کمی وقت بذارین و به گزینه ها جواب بدین تا بتونیم درک بهتری از جامعه مون داشته باشیم و بدونیم چی باید یاد بگیریم و چقدر درخواست حقوق کنیم و بقیه چطوری زندگی می کنن.
مثل هر سال نتایج هم به طور کامل و آزاد برای استفاده همه منتشر می شه.
https://docs.google.com/forms/d/e/1FAIpQLSdntC_H6ySUvW9iQwn-cFmQCEb6vdX0e0MgIr7XscHeZXA31Q/viewform
و خب هر چقدر پخشش کنین تا افراد متنوع تری شرکت کنن، باعث جامع تر شدن نتایج می شین. با تشکر.
مثل هر سال نتایج هم به طور کامل و آزاد برای استفاده همه منتشر می شه.
https://docs.google.com/forms/d/e/1FAIpQLSdntC_H6ySUvW9iQwn-cFmQCEb6vdX0e0MgIr7XscHeZXA31Q/viewform
و خب هر چقدر پخشش کنین تا افراد متنوع تری شرکت کنن، باعث جامع تر شدن نتایج می شین. با تشکر.
Google Docs
بررسی وضعیت شغلی برنامه نویسان و مدیر سیستمهای ایران - فروردین ۱۴۰۱
این پرسشنامه هر ساله توسط خود برنامه نویس ها برگزار می شه. ربطی به هیچ شرکت و سازمانی نداره و خودمون مستقیم توش جواب می دیم و مستقیم نتایج رو می بینیم. هدفش اینه که درک دقیق تری از وضعیت کار و زندگی برنامه نویس ها، مدیر سیستم ها و کلا کامپیوتری ها به همدیگه…
جادی، کیبورد آزاد - Jadi
مثل هر سال «نظر سنجی بزرگ برنامه نویسان و مدیر سیستم های ایران» شروع شد (: لطفا کمی وقت بذارین و به گزینه ها جواب بدین تا بتونیم درک بهتری از جامعه مون داشته باشیم و بدونیم چی باید یاد بگیریم و چقدر درخواست حقوق کنیم و بقیه چطوری زندگی می کنن. مثل هر سال…
❇️ نظرسنجی بزرگ برنامه نویسان ایران
👍 نظر سنجی امسال هم توسط جادی عزیز و به صورت کاملا ازاد برگزار شد.
✌️ نتایجش یک ماه دیگه به صورت آزاد و رایگان برای همه منتشر میشه.
https://bit.ly/irprogrammers
🔹پیشنهاد می کنم حتما شرکت کنین، کااااملا به نفع خودمونه
🔸پیشنهاد می کنم نتایج سال قبل (96) رو هم ببین خیلی جالبه
https://jadi.net/2018/04/1396-iran-programmers-life-and-work/
البته سایت جادی فیلتره، به یخ شکن نیاز دارید 😉
🔰 با به اشتراک گذاری این نظرسنجی به بهبود کیفیت نتایج کمک کنین :)
یادتون نره پرچم سی شارپم ببرین بالا 😄
@IranAspMvc
👍 نظر سنجی امسال هم توسط جادی عزیز و به صورت کاملا ازاد برگزار شد.
✌️ نتایجش یک ماه دیگه به صورت آزاد و رایگان برای همه منتشر میشه.
https://bit.ly/irprogrammers
🔹پیشنهاد می کنم حتما شرکت کنین، کااااملا به نفع خودمونه
🔸پیشنهاد می کنم نتایج سال قبل (96) رو هم ببین خیلی جالبه
https://jadi.net/2018/04/1396-iran-programmers-life-and-work/
البته سایت جادی فیلتره، به یخ شکن نیاز دارید 😉
🔰 با به اشتراک گذاری این نظرسنجی به بهبود کیفیت نتایج کمک کنین :)
یادتون نره پرچم سی شارپم ببرین بالا 😄
@IranAspMvc
DotNetZoom pinned «❇️ نظرسنجی بزرگ برنامه نویسان ایران 👍 نظر سنجی امسال هم توسط جادی عزیز و به صورت کاملا ازاد برگزار شد. ✌️ نتایجش یک ماه دیگه به صورت آزاد و رایگان برای همه منتشر میشه. https://bit.ly/irprogrammers 🔹پیشنهاد می کنم حتما شرکت کنین، کااااملا به نفع خودمونه…»
✅ معرفی پروژه DNTFrameworkCore
پروژه که نه بهتره بگیم یه فریمورک یا زیرساخت آماده واسه سایت هاتون هست که کلی امکانات و Best Practice رو تو خودش پیاده کرده و کارتون خیلی راحت میشه✌️
https://github.com/rabbal/DNTFrameworkCore
از امکانات این فریمورک میشه موارد زیر اشاره کرد :
🔹سبک و سریع (نکات پرفرمنسی رعایت شده)
🔸دارای معماری اصولی و توسعه پذیر
🔹پشتیبانی از طراحی چند مستاجری (Multi Tenancy)
🔸اعتبارسنجی خودکار
🔹مدیریت تراکنش ها
🔸پشتیبانی از آزمون واحد و کاملا تست پذیر
🔹و...
حتی اگه قصد استفاده ازشو ندارین، مرور و بررسی کد هاش خیلی میتونه آموزنده و مفید باشه و بهتون ایده بده
🌟 راستی یادتون نره Star هم بدین به ریپازیتوریش 😉
توضیحات بیشتر :
https://www.dotnettips.info/newsarchive/details/14242
_______________
@IranAspMvc
پروژه که نه بهتره بگیم یه فریمورک یا زیرساخت آماده واسه سایت هاتون هست که کلی امکانات و Best Practice رو تو خودش پیاده کرده و کارتون خیلی راحت میشه✌️
https://github.com/rabbal/DNTFrameworkCore
از امکانات این فریمورک میشه موارد زیر اشاره کرد :
🔹سبک و سریع (نکات پرفرمنسی رعایت شده)
🔸دارای معماری اصولی و توسعه پذیر
🔹پشتیبانی از طراحی چند مستاجری (Multi Tenancy)
🔸اعتبارسنجی خودکار
🔹مدیریت تراکنش ها
🔸پشتیبانی از آزمون واحد و کاملا تست پذیر
🔹و...
حتی اگه قصد استفاده ازشو ندارین، مرور و بررسی کد هاش خیلی میتونه آموزنده و مفید باشه و بهتون ایده بده
🌟 راستی یادتون نره Star هم بدین به ریپازیتوریش 😉
توضیحات بیشتر :
https://www.dotnettips.info/newsarchive/details/14242
_______________
@IranAspMvc
GitHub
GitHub - rabbal/DNTFrameworkCore: Lightweight and Extensible Infrastructure for Building Web Applications - Web Application Framework
Lightweight and Extensible Infrastructure for Building Web Applications - Web Application Framework - GitHub - rabbal/DNTFrameworkCore: Lightweight and Extensible Infrastructure for Building Web Ap...
Forwarded from Software Philosophy
خداحافظی با خطای میلیون دلاری: NullReferenceException
پس تغییر جنجالی C# 8.0، یعنی اضافه شدن امکان Nullable Reference Types، دیگر متغییرهای Reference Type مقدار نال قبول نخواند کرد مگر نوعشان Nullable باشد.
```
Person p = null; // ERROR
Person? P = null; // OK
string s = null; //ERROR
string? s = null; OK
اینکه این ویژگی فعال باشد یا نه از طریق تنظیمات پروژه قابل تنظیم است.
این تغییر باعث میشود این خطای معروف از بین برود. از طرفی پروژههایی که از قبل نوشته شدهاند نیاز به تغییرات دارند. فرانک کروگر یکی از برنامهنویسانی است که یکی از برنامههای خود را کامل بازنویسی کرده و تجربیات خود را د به اشتراک گذاشته است. جدا از اینکه تجربیاتش بسیار خواندی هستند، در حین تبدیل به چالشهایی برخورده که نتیجه یکی از آنها پیشنهاد اضافه کردن var? به C# بوده که نتیجهگیری و کاربرد جالبی است.
https://praeclarum.org/2018/12/17/nullable-reference-types.html
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/paMV30nGBdD
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
پس تغییر جنجالی C# 8.0، یعنی اضافه شدن امکان Nullable Reference Types، دیگر متغییرهای Reference Type مقدار نال قبول نخواند کرد مگر نوعشان Nullable باشد.
```
Person p = null; // ERROR
Person? P = null; // OK
string s = null; //ERROR
string? s = null; OK
اینکه این ویژگی فعال باشد یا نه از طریق تنظیمات پروژه قابل تنظیم است.
این تغییر باعث میشود این خطای معروف از بین برود. از طرفی پروژههایی که از قبل نوشته شدهاند نیاز به تغییرات دارند. فرانک کروگر یکی از برنامهنویسانی است که یکی از برنامههای خود را کامل بازنویسی کرده و تجربیات خود را د به اشتراک گذاشته است. جدا از اینکه تجربیاتش بسیار خواندی هستند، در حین تبدیل به چالشهایی برخورده که نتیجه یکی از آنها پیشنهاد اضافه کردن var? به C# بوده که نتیجهگیری و کاربرد جالبی است.
https://praeclarum.org/2018/12/17/nullable-reference-types.html
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/paMV30nGBdD
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
praeclarum
Containing Null with C# 8 Nullable References
C# 8’s nullable reference types are designed to help rid your apps of the dreaded NullReferenceException. This article walks you through the common errors that you will encounter while updating your app and offers a few of my opinions on how to fix them.…
✅ خلاصهای از دورهی ASP.NET Core Fundamentals آقای اسکات آلن از سایت Pluralsight
واسه کسایی که دنبال آموزش متنی جامع ASP Core میگردن، خوبه 👌
https://github.com/SirwanAfifi/aspdotnet-core-fundamentals
لینک دانلود PDF :
https://bit.ly/2XaEhs2
_______________
@IranAspMvc
واسه کسایی که دنبال آموزش متنی جامع ASP Core میگردن، خوبه 👌
https://github.com/SirwanAfifi/aspdotnet-core-fundamentals
لینک دانلود PDF :
https://bit.ly/2XaEhs2
_______________
@IranAspMvc
🔰دوره دوره API نویسی اصولی و حرفه ای در ASP.NET Core
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
تکنولوژی، ابزار ها و قابلیت های استفاده شده :
✅ احراز هویت با JWT و افزایش امنیت آن بوسیله رمزنگاری توکن (JWE)
✅ استاندارد سازی و یک دست سازی خروجی API ها
✅ اعتبار سنجی خودکار
✅ استفاده از Elmah، NLog برای لاگ خطا های سیستم
✅ لاگ خطا ها در Sentry.io (یک سیستم مدیریت لاگ) مخصوص اپلکیشن های Enterprise
✅ استفاده از Autofac محبوب ترین کتابخانه Ioc Container به همراه ثبت خودکار سرویس ها
✅ استفاده از کتابخانه محبوب AutoMapper به همراه یک معماری حرفه ای جهت Mapping خودکار
✅ بررسی اصول معماری پروژه و استفاده ترفند های از Reflection جهت فریمورک نویسی
✅ بررسی و استفاده از Claim ها تولید خودکار آنها توسط ClaimsFactory + ترفند امنیتی Security Stamp
✅ استفاده از چندین ترفند روی EF Core توسط Reflection جهت کدنویسی کمتر و راحت تر
✅ لایه بندی اصولی پروژه از صفر به همراه بررسی مباحث Repository و UOW
✅ استفاده از Versioning و مدیریت نسخه های پروژه توسط یک معماری حرفه ای
✅ استفاده از ابزار Swagger جهت ساخت یک ظاهر شکیل به همراه داکیومنت Aciton ها و Controller های پروژه و امکان تست API ها
✅ یکپارچه سازی Swagger با سیستم احراز هویت JWT و OAuth
✅ یکپارچه سازی Swagger با سیستم Versioning
✅ اعمال Best Practices ها جهت بهینه سازی، افزایش پرفرمنس و کدنویسی تمیز و اصولی
🔸سورس کامل و نهایی پروژه این دوره به همراه توضیحات بیشتر در گیتهاب در دسترس عموم قرار داد
https://github.com/dotnetzoom/AspNetCore-WebApi-Course
🔹این دوره در قالب 22 ساعت آموزش ویدئویی تدریس شده، چون سطح دوره پیشرفته هستند قبل از تهیه حتما قسمت پیشنیاز رو بررسی کنین.
🔸لینک خرید دوره
با دیدن دمو های دوره، در همین لینک میتونین از کیفیت اون اطمینان حاصل کنین
https://bit.ly/2Xo6NX2
❇️ کد تخفیف 45 درصدی : YaFateme
🔹شاید از دیدن قیمت کم اش شکه بشین! منم دلیلش رو توی سایت شخصیم نوشتم https://mjebrahimi.ir
چنین دوره ای که توی ایران وجود نداره ولی با یه بررسی و مقایسه قیمت بقیه سایت ها میتونین ارزش واقعی دوره رو حدود 800 هزار تومن پیدا کنین.
⭐️در پایان اگه واقعا از دوره خوشتون اومده بود حتما به ریپازیتوری گیتهاب اش Star بدین . با اینکار حمایت خودتون رو از ما اعلام میکنین🙏 و این به ما انگیزه میده آموزش های بیشتری تهیه کنیم✌️
_______________
@IranAspMvc
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
تکنولوژی، ابزار ها و قابلیت های استفاده شده :
✅ احراز هویت با JWT و افزایش امنیت آن بوسیله رمزنگاری توکن (JWE)
✅ استاندارد سازی و یک دست سازی خروجی API ها
✅ اعتبار سنجی خودکار
✅ استفاده از Elmah، NLog برای لاگ خطا های سیستم
✅ لاگ خطا ها در Sentry.io (یک سیستم مدیریت لاگ) مخصوص اپلکیشن های Enterprise
✅ استفاده از Autofac محبوب ترین کتابخانه Ioc Container به همراه ثبت خودکار سرویس ها
✅ استفاده از کتابخانه محبوب AutoMapper به همراه یک معماری حرفه ای جهت Mapping خودکار
✅ بررسی اصول معماری پروژه و استفاده ترفند های از Reflection جهت فریمورک نویسی
✅ بررسی و استفاده از Claim ها تولید خودکار آنها توسط ClaimsFactory + ترفند امنیتی Security Stamp
✅ استفاده از چندین ترفند روی EF Core توسط Reflection جهت کدنویسی کمتر و راحت تر
✅ لایه بندی اصولی پروژه از صفر به همراه بررسی مباحث Repository و UOW
✅ استفاده از Versioning و مدیریت نسخه های پروژه توسط یک معماری حرفه ای
✅ استفاده از ابزار Swagger جهت ساخت یک ظاهر شکیل به همراه داکیومنت Aciton ها و Controller های پروژه و امکان تست API ها
✅ یکپارچه سازی Swagger با سیستم احراز هویت JWT و OAuth
✅ یکپارچه سازی Swagger با سیستم Versioning
✅ اعمال Best Practices ها جهت بهینه سازی، افزایش پرفرمنس و کدنویسی تمیز و اصولی
🔸سورس کامل و نهایی پروژه این دوره به همراه توضیحات بیشتر در گیتهاب در دسترس عموم قرار داد
https://github.com/dotnetzoom/AspNetCore-WebApi-Course
🔹این دوره در قالب 22 ساعت آموزش ویدئویی تدریس شده، چون سطح دوره پیشرفته هستند قبل از تهیه حتما قسمت پیشنیاز رو بررسی کنین.
🔸لینک خرید دوره
با دیدن دمو های دوره، در همین لینک میتونین از کیفیت اون اطمینان حاصل کنین
https://bit.ly/2Xo6NX2
❇️ کد تخفیف 45 درصدی : YaFateme
🔹شاید از دیدن قیمت کم اش شکه بشین! منم دلیلش رو توی سایت شخصیم نوشتم https://mjebrahimi.ir
چنین دوره ای که توی ایران وجود نداره ولی با یه بررسی و مقایسه قیمت بقیه سایت ها میتونین ارزش واقعی دوره رو حدود 800 هزار تومن پیدا کنین.
⭐️در پایان اگه واقعا از دوره خوشتون اومده بود حتما به ریپازیتوری گیتهاب اش Star بدین . با اینکار حمایت خودتون رو از ما اعلام میکنین🙏 و این به ما انگیزه میده آموزش های بیشتری تهیه کنیم✌️
_______________
@IranAspMvc
DotNetZoom pinned «🔰دوره دوره API نویسی اصولی و حرفه ای در ASP.NET Core در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند. همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه. ونیز Best Practice…»
DotNetZoom
🔰دوره دوره API نویسی اصولی و حرفه ای در ASP.NET Core در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند. همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه. ونیز Best Practice…
دوستان عزیز مهلت اون کد تخفیف تموم شده
میتونین از کد تخفیف ۲۰درصدی زیر استفاده کنین
dotnetzoom
میتونین از کد تخفیف ۲۰درصدی زیر استفاده کنین
dotnetzoom
DotNetZoom via @vote
DotNetZoom via @vote
دوستان عزیز 🌹 خبر خوب. دوره بعدی تا قبل از عید شروع میشه. واسه آموزش بعدی کدوم دوره رو ترجیح میدین؟ anonymous poll آموزش امنیت پیشرفته در ASP.NET Core – 177 👍👍👍👍👍👍👍 57% آموزش Caching پیشرفته در ASP.NET Core – 136 👍👍👍👍👍 43% 👥 313 people voted so far.
خب میبینیم که اختلاف آرا خیلی کمه و رقابت تنگاتنگ
هرچی هم صبر کردیم یه تکونی بخوره نخورد و روی 4% اخلاف مونده
پس حالا که اینقدر نزدیکه تصمیم گرفتم اون دوره ای رو که مطالب جذاب و مفید بیشتری توش میتونم ارائه بدم رو اول شروع کنم
و اون چیزی نیست جز "Caching پیشرفته در ASP.NET Core"
به زودی لیست سرفصل هاشو هم براتون میفرستم حال کنید
دوره حدودا یک هفته مونده به عید استارت زده میشه
هرچی هم صبر کردیم یه تکونی بخوره نخورد و روی 4% اخلاف مونده
پس حالا که اینقدر نزدیکه تصمیم گرفتم اون دوره ای رو که مطالب جذاب و مفید بیشتری توش میتونم ارائه بدم رو اول شروع کنم
و اون چیزی نیست جز "Caching پیشرفته در ASP.NET Core"
به زودی لیست سرفصل هاشو هم براتون میفرستم حال کنید
دوره حدودا یک هفته مونده به عید استارت زده میشه