Forwarded from کدهک
Forwarded from کدهک
در این ویدیو نگاهی به Span در سی شارپ 7.3 می اندازیم و این قابلیت جدید که در دات نت core 2.1 به بعد قابل استفاده است را بررسی می کنیم.
https://tinyurl.com/cdhks-span-intro
https://tinyurl.com/cdhks-span-intro
نسخه نهایی NET Core 3.0
به زودی پیش نمایش 9 از فریم ورک NET Core 3.0 عرضه میشود. با تغییر سیستم نام گذاری نسخه های دات نت دیگر نسخه ای با نام RC یا Release Candidate معرفی نمیشود و طبق اعلام مدیر فنی این نسخه به عنوان RC قابل استفاده است. به این معنی که دیگر تغییر بزرگی در راه نیست و Breaking Change نخواهیم داشت.
تیم توسعه ی دات نت در حال حاضر تمرکز اصلی خود را روی Blazor گذاشته و عملا کار زیادی روی ASP انجام نمی دهد.
طبق اعلام مایکروسافت نسخه ی نهایی Net Core 3.0 همزمان با کنفرانس NETConf در 23 سپتامبر رسما عرضه میشود که کمتر از یک ماه دیگه است.
تغییرات بزرگ و مهم نسخه 3.0 شامل اضافه شدن WinForm و WPF به Core است. همچنین Blazor به عنوان Web UI از طریق Web Assembly امکان برنامه نویسی #C در مرورگر را فراهم میکند و می تواند جایگزین خوبی برای جاوااسکریپت باشد.
ماه پیش سورس پروژه دات نت در GitHub به
5.0 تغییر نام داده شد که به این معنی است که کار روی نسخه ی بعدی دات نت شروع شده است.
به زودی پیش نمایش 9 از فریم ورک NET Core 3.0 عرضه میشود. با تغییر سیستم نام گذاری نسخه های دات نت دیگر نسخه ای با نام RC یا Release Candidate معرفی نمیشود و طبق اعلام مدیر فنی این نسخه به عنوان RC قابل استفاده است. به این معنی که دیگر تغییر بزرگی در راه نیست و Breaking Change نخواهیم داشت.
تیم توسعه ی دات نت در حال حاضر تمرکز اصلی خود را روی Blazor گذاشته و عملا کار زیادی روی ASP انجام نمی دهد.
طبق اعلام مایکروسافت نسخه ی نهایی Net Core 3.0 همزمان با کنفرانس NETConf در 23 سپتامبر رسما عرضه میشود که کمتر از یک ماه دیگه است.
تغییرات بزرگ و مهم نسخه 3.0 شامل اضافه شدن WinForm و WPF به Core است. همچنین Blazor به عنوان Web UI از طریق Web Assembly امکان برنامه نویسی #C در مرورگر را فراهم میکند و می تواند جایگزین خوبی برای جاوااسکریپت باشد.
ماه پیش سورس پروژه دات نت در GitHub به
5.0 تغییر نام داده شد که به این معنی است که کار روی نسخه ی بعدی دات نت شروع شده است.
Forwarded from کدهک
در دات نت اشیایی که کمتر از 85 کیلوبایت باشند در Small Object Heap ذخیره میشوند.
در SOH اطلاعات به صورت منظم و پشت سر هم ذخیره میشوند و برای تخصیص حافظه ی اشیای جدید از Next Object Pointer استفاده میشود که موقعیت جاری حافظه را در خود نگه میدارد.
وقتی در Garbage Collection حافظه ی یک شی مانند Object B پاکسازی میشود عملیات فشرده سازی روی SOH انجام میشود تا اشیای AوC کنار هم قرار گیرند و موقعیت NOP در محل جدید بدست آید.
عملیات فشرده سازی در SOH باعث کاهش پرفورمنس میشود همچنین کار کتابخانه هایی که با زبانهای Unmanaged مثل ++C نوشته شده اند را مخطل میکند. چون در زبان ++C محل حافظه قابل جابجایی خوکار نیست. به همین دلیل در #C کلمه ی کلیدی fixed جهت پین کردن حافظه استفاده میشود.
پین کردن حافظه از جابجا شدن آن توسط GC جلوگیری میکند و در کوتاه مدت پرفورمنس را افزایش میدهد. اما اگر برای مدت طولانی به کار گرفته شود در حافظه حفره های خالی ایجاد میکند و ممکن است به کرش کردن یا کاهش شدید پرفورمنس منجر شود.
در SOH اطلاعات به صورت منظم و پشت سر هم ذخیره میشوند و برای تخصیص حافظه ی اشیای جدید از Next Object Pointer استفاده میشود که موقعیت جاری حافظه را در خود نگه میدارد.
وقتی در Garbage Collection حافظه ی یک شی مانند Object B پاکسازی میشود عملیات فشرده سازی روی SOH انجام میشود تا اشیای AوC کنار هم قرار گیرند و موقعیت NOP در محل جدید بدست آید.
عملیات فشرده سازی در SOH باعث کاهش پرفورمنس میشود همچنین کار کتابخانه هایی که با زبانهای Unmanaged مثل ++C نوشته شده اند را مخطل میکند. چون در زبان ++C محل حافظه قابل جابجایی خوکار نیست. به همین دلیل در #C کلمه ی کلیدی fixed جهت پین کردن حافظه استفاده میشود.
پین کردن حافظه از جابجا شدن آن توسط GC جلوگیری میکند و در کوتاه مدت پرفورمنس را افزایش میدهد. اما اگر برای مدت طولانی به کار گرفته شود در حافظه حفره های خالی ایجاد میکند و ممکن است به کرش کردن یا کاهش شدید پرفورمنس منجر شود.
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ مقایسه پرفرمنس gRPC و REST
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
@IranAspMvc
طبق این بنچمارک میتونین ببینین که توی درخواست های سبک ( مثل یه GET ساده با دیتای کم حجم) gRPC و REST تفاوتی خاصی با هم ندارن
ولی توی درخواست های سنگین (که حجم دیتای انتقالی زیاد باشه) :
🔸توی حالت GET (دریافت اطلاعات) gRPC بیش از 7 برابر سریع تر از REST عمل میکنه
🔹وتوی حالت POST (ارسال اطلاعات) gRPC بیش از 11 برابر سریع تر از REST عمل میکنه
🔸دلیل اصلی این سرعت بسیار بالا اینه که gRPC از Protocol Buffers برای سریالایز و فشرده سازی اطلاعات استفاده میکنه و نیز به صورت پیشفرض از HTTP/2 و استفاده میکنه که اون هم یه مکانیزم فشرده سازی داره
🔹برای کار با gRPC در حالت عادی باید از CLI مخصوص اون "protoc" برای کامپایل و تولید کلاس های سرویس از روی فایل های "proto." استفاده کنید. ولی با Visual Studio میتونین همین کار رو کامپایلر built-in اش راحت تر انجام بدین
🔸جمع بندی اینکه gRPC میتونه گزینه بسیار خوبی برای ارتباطات بیین Micro-service ها باشه
لینک مقاله و ریپازیتوری گیتهاب این بنچمارک
Evaluating Performance of REST vs. gRPC
Github Repository
________________
@IranAspMvc
لایه های بهینه سازی
معماری در بالاترین سطح بهینه سازی قرار دارد. ساختار کلی پروژه و نحوه ی ارتباط اجزای آن باهم نقش بسیار بزرگی در پرفورمنس دارد.
در ادامه الگوریتمهای برنامه حضور دارند. بیشترین باگها و مشکلات پرفورمنس در این لایه خود را نشان میدهند. از آنجایی که این بخش مستقیم توسط برنامه نوشته میشود تغییر دادن آن کم هزینه تر است. اولین جایی است که باید بررسی شود.
در لایه ی بعدی فریم ورک دات نت قرار دارد. نسخه های مختلف فریم ورک از نظر کارایی با هم فرق می کنند و مایکروسافت همیشه در حال توسعه و بهبود آن است. در NET Core بخش بزرگی از کتابخانه های قدیمی باز نویسی شده است و اضافه شدن قابلیت های جدیدی مثل Ref Return و Span کمک کرده تا کارایی آن افزایش چشمگیری پیدا کند.
کد نوشته شده در نهایت با استفاده از JIT و CLR اجرا میشود. CLR شامل ابزاری مثل Garbage Collector است و با کمک زبانهایی مثل C و Assembly مدیریت حافظه و فرآیند اجرای برنامه را به عهده دارد. هرچند این لایه آخرین مرحله ی بهینه سازی است اما ابزار زیادی برای تغییر و Customize کردن رفتار آن وجود دارد تا نهایت بهرهبرداری از سیستم ممکن شود .
معماری در بالاترین سطح بهینه سازی قرار دارد. ساختار کلی پروژه و نحوه ی ارتباط اجزای آن باهم نقش بسیار بزرگی در پرفورمنس دارد.
در ادامه الگوریتمهای برنامه حضور دارند. بیشترین باگها و مشکلات پرفورمنس در این لایه خود را نشان میدهند. از آنجایی که این بخش مستقیم توسط برنامه نوشته میشود تغییر دادن آن کم هزینه تر است. اولین جایی است که باید بررسی شود.
در لایه ی بعدی فریم ورک دات نت قرار دارد. نسخه های مختلف فریم ورک از نظر کارایی با هم فرق می کنند و مایکروسافت همیشه در حال توسعه و بهبود آن است. در NET Core بخش بزرگی از کتابخانه های قدیمی باز نویسی شده است و اضافه شدن قابلیت های جدیدی مثل Ref Return و Span کمک کرده تا کارایی آن افزایش چشمگیری پیدا کند.
کد نوشته شده در نهایت با استفاده از JIT و CLR اجرا میشود. CLR شامل ابزاری مثل Garbage Collector است و با کمک زبانهایی مثل C و Assembly مدیریت حافظه و فرآیند اجرای برنامه را به عهده دارد. هرچند این لایه آخرین مرحله ی بهینه سازی است اما ابزار زیادی برای تغییر و Customize کردن رفتار آن وجود دارد تا نهایت بهرهبرداری از سیستم ممکن شود .
Forwarded from کدهک
در این ویدیو با استفاده از پیش نمایش NET Core 3.0 یک برنامه ی ویندوز فرم ایجاد می کنیم سپس درباره ی مزایای استفاده از دات نت کور در محیط WinForm صحبت می کنیم.
https://goo.gl/KwBG58
https://goo.gl/KwBG58
نگاهی به آمار Spotify
اسپاتیفای پلتفرم استریم صدا است که در سال 2006 در کشور سوئد تاسیس شده است و 35 میلیون آهنگ را میزبانی میکند.
این سرویس ماهانه 200 میلیون کاربر فعال دارد و در هر ثانیه 8 میلیون Query را پردازش می کند.
در اسپایتفای نزدیک به 1000 توسعه دهنده روی بیش از 2500 سرویس (میکرو سرویس) کار می کنند. بیشتر سرویس ها با جاوا و پایتون نوشته شده است.
اسپاتیفای پلتفرم استریم صدا است که در سال 2006 در کشور سوئد تاسیس شده است و 35 میلیون آهنگ را میزبانی میکند.
این سرویس ماهانه 200 میلیون کاربر فعال دارد و در هر ثانیه 8 میلیون Query را پردازش می کند.
در اسپایتفای نزدیک به 1000 توسعه دهنده روی بیش از 2500 سرویس (میکرو سرویس) کار می کنند. بیشتر سرویس ها با جاوا و پایتون نوشته شده است.
پیش نمایش 9 منتشر شد
آخرین پیش نمایش NET Core 3.0 منتشر شد. بیشترین تغییرات در زمینه ی Blazor است و بخشهایی هم مربوط به gRPC میشود. نکته ی جالب توجه حجم دانلود SDK است که با وجود اضافه شدن WinFrom و WPF نسبت به نسخه ی 2.2 حدود 20 مگابایت کمتر شده است.
طبق اعلام مایکروسافت این نسخه توسط مایکروسافت پشتیبانی میشود و می توان در Production مورد استفاده قرار گیرد. در حال حاضر سایت دات نت مایکروسافت به پیش نمایش 9 آپدیت شده است.
همچنین پیش نمایش جدید VS2019 با حجم دانلود 1.3 گیگابایت امروز منتشر شد که نشان از تغییرات زیادی دارد.
نسخه نهایی NET Core 3.0 به همراه ASP Core سه هفته ی دیگر در NET Conf معرفی میشود.
آخرین پیش نمایش NET Core 3.0 منتشر شد. بیشترین تغییرات در زمینه ی Blazor است و بخشهایی هم مربوط به gRPC میشود. نکته ی جالب توجه حجم دانلود SDK است که با وجود اضافه شدن WinFrom و WPF نسبت به نسخه ی 2.2 حدود 20 مگابایت کمتر شده است.
طبق اعلام مایکروسافت این نسخه توسط مایکروسافت پشتیبانی میشود و می توان در Production مورد استفاده قرار گیرد. در حال حاضر سایت دات نت مایکروسافت به پیش نمایش 9 آپدیت شده است.
همچنین پیش نمایش جدید VS2019 با حجم دانلود 1.3 گیگابایت امروز منتشر شد که نشان از تغییرات زیادی دارد.
نسخه نهایی NET Core 3.0 به همراه ASP Core سه هفته ی دیگر در NET Conf معرفی میشود.
آشنایی با gRPC
در ASP NET Core 3.0 یک قالب اختصاصی برای پروژه ی gRPC در نظر گرفته شده است. همین موضوع نشان از اهمیت و کاربرد زیاد تکنولوژی gRPC در دنیای امروز دارد.
در gRPC کلاینت می تواند متدی را در سرور اجرا کند درست مانند اینکه متد درون خودش قرار دارد.
تکنولوژی RPC قدیمی است و سالهاست مورد استفاده قرار میگیرد. گوگل با استاندارد سازی و بهینه کردن روش انتقال اطلاعات تکنولوژی gRPC را پیاده کرد و بعدا به صورت متن باز در اختیار سایر برنامه نویسها قرار داد.
متدهایی که در سرور قابل صدا زدن هستند از طریق Protobuf که یک فایل با پسوند proto است در اختیار کلاینت قرار میگیرند. ساختار پیامهای ارسالی و دریافتی از طریق این فایل مشخص میشود و بدون آن امکان خواندن محتوا بین کلاینت و سرور وجود ندارد. بر خلاف JSON در Protocol Buffer ساختار پیام ارسال نمیشود و فقط شامل خود داده است تا کمترین حجم پهنای باند مصرف شود.
گوگل برای زبانهای برنامه نویسی مختلف ابزاری فراهم کرده که کدهای مورد نیاز برای ارتباط بین کلاینت و سرور را می سازد.
از gRPC در میکروسرویسها بسیار استفاده میشود.
در ASP NET Core 3.0 یک قالب اختصاصی برای پروژه ی gRPC در نظر گرفته شده است. همین موضوع نشان از اهمیت و کاربرد زیاد تکنولوژی gRPC در دنیای امروز دارد.
در gRPC کلاینت می تواند متدی را در سرور اجرا کند درست مانند اینکه متد درون خودش قرار دارد.
تکنولوژی RPC قدیمی است و سالهاست مورد استفاده قرار میگیرد. گوگل با استاندارد سازی و بهینه کردن روش انتقال اطلاعات تکنولوژی gRPC را پیاده کرد و بعدا به صورت متن باز در اختیار سایر برنامه نویسها قرار داد.
متدهایی که در سرور قابل صدا زدن هستند از طریق Protobuf که یک فایل با پسوند proto است در اختیار کلاینت قرار میگیرند. ساختار پیامهای ارسالی و دریافتی از طریق این فایل مشخص میشود و بدون آن امکان خواندن محتوا بین کلاینت و سرور وجود ندارد. بر خلاف JSON در Protocol Buffer ساختار پیام ارسال نمیشود و فقط شامل خود داده است تا کمترین حجم پهنای باند مصرف شود.
گوگل برای زبانهای برنامه نویسی مختلف ابزاری فراهم کرده که کدهای مورد نیاز برای ارتباط بین کلاینت و سرور را می سازد.
از gRPC در میکروسرویسها بسیار استفاده میشود.
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
👩💻👨💻 روز #برنامهنویس مبارک
💢 روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) و مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سالهای کبیسه) به عنوان روز برنامهنویسان نام گرفته است. عدد ۲۵۶ (۲ به توان ۸) بزرگترین توان عدد ۲ کوچکتر از، ۳۶۵ که تعداد روزهای یک سال است، میباشد.
@barnamenevis_org
@barnamenevis_net
💢 روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) و مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سالهای کبیسه) به عنوان روز برنامهنویسان نام گرفته است. عدد ۲۵۶ (۲ به توان ۸) بزرگترین توان عدد ۲ کوچکتر از، ۳۶۵ که تعداد روزهای یک سال است، میباشد.
@barnamenevis_org
@barnamenevis_net
آشنایی با Blazor در ASP NET Core 3.0
طبق اعلام مایکروسافت نسخه ی رسمی Blazor به همراه NET Core 3.0 منتشر میشود. اما در حال حاضر فقط حالت Server-Side آن توسعه داده شده است و استفاده از Blazor به صورتی که در مرورگر کاربر اجرا شود به نسخه های بعدی دات نت موکول شده است.
هر چند که قالب پروژه مخصوص Client-Side وجود دارد و از همین امروز میتوانید از این تکنولوژی استفاده کنید اما پشتیبانی رسمی از آن انجام نمیشود.
در حال حاضر Blazor از نسخه ی NET Mono استفاده میکند و در واقع مایکروسافت یک نسخه از Runtime Mono را روی Web Assembly کامپایل کرده است.
تلاش زیادی برای کم کردن حجم Runtime صورت گرفته و در حال حاضر حجم آن به حدود 2 مگابایت رسیده است. این حجم در اولین نمایش صفحه دانلود میشود و در مرورگر کش میشود.
البته طبق گفته ی Steve Sanderson مبتکر اصلی Blazor در نسخه ی 5 از دات نت این روش تغییر خواهد کرد و روشهای بهتری جایگزن آن میشود که هنوز در دست بررسی است.
طبق اعلام مایکروسافت نسخه ی رسمی Blazor به همراه NET Core 3.0 منتشر میشود. اما در حال حاضر فقط حالت Server-Side آن توسعه داده شده است و استفاده از Blazor به صورتی که در مرورگر کاربر اجرا شود به نسخه های بعدی دات نت موکول شده است.
هر چند که قالب پروژه مخصوص Client-Side وجود دارد و از همین امروز میتوانید از این تکنولوژی استفاده کنید اما پشتیبانی رسمی از آن انجام نمیشود.
در حال حاضر Blazor از نسخه ی NET Mono استفاده میکند و در واقع مایکروسافت یک نسخه از Runtime Mono را روی Web Assembly کامپایل کرده است.
تلاش زیادی برای کم کردن حجم Runtime صورت گرفته و در حال حاضر حجم آن به حدود 2 مگابایت رسیده است. این حجم در اولین نمایش صفحه دانلود میشود و در مرورگر کش میشود.
البته طبق گفته ی Steve Sanderson مبتکر اصلی Blazor در نسخه ی 5 از دات نت این روش تغییر خواهد کرد و روشهای بهتری جایگزن آن میشود که هنوز در دست بررسی است.
در حالت server-side کدهایی که برای کنترل UI نوشته شده درون سرور اجرا میشوند. وقتی کاربر روی یک دکمه کلید می کند رویداد آن از طریق SignalR به سرور ارسال میشود. در سرور اطلاعات پردازش شده و تغییراتی که باید در HTML اعمال شود به کلاینت برگردانده میشود.
از مزایای استفاده از Server-Side این است که کدهای شما در اختیار کلاینت قرار نمیگیرند. در این روش مستقیما به امکانات کامل دات نت دسترسی دارید و حتی می توانید با اکسل ارتباط مستقیم برقرار کنید. اطلاعات مستقیم از دیتابیس قابل دسترسی است و نیاز به Web API ندارید.
مشکل اصلی در Latency است چون گردش رویدادها بین کلاینت و سرور زمانبر است. همینطور زمانی که کاربرها زیاد باشند برای هرکدام یک کانکشن جدا به سرور ایجاد میشود که در ترافیک بالا میتواند فشار زیادی به سرور وارد کند. همینطور حالت آفلاین هم وجود ندارد و کلاینت نمیتواند بدون اینترنت از اپ استفاده کند.
خوشبختانه Blazor به شکلی توسعه داده شده است که می تواند به راحتی بین حالت Server-Side و Client-Side جابجا شد و در آینده اگر لازم باشه می تواند کدهای خود را بدون تغییر خاصی از سرور به کلاینت منتقل کنید.
از مزایای استفاده از Server-Side این است که کدهای شما در اختیار کلاینت قرار نمیگیرند. در این روش مستقیما به امکانات کامل دات نت دسترسی دارید و حتی می توانید با اکسل ارتباط مستقیم برقرار کنید. اطلاعات مستقیم از دیتابیس قابل دسترسی است و نیاز به Web API ندارید.
مشکل اصلی در Latency است چون گردش رویدادها بین کلاینت و سرور زمانبر است. همینطور زمانی که کاربرها زیاد باشند برای هرکدام یک کانکشن جدا به سرور ایجاد میشود که در ترافیک بالا میتواند فشار زیادی به سرور وارد کند. همینطور حالت آفلاین هم وجود ندارد و کلاینت نمیتواند بدون اینترنت از اپ استفاده کند.
خوشبختانه Blazor به شکلی توسعه داده شده است که می تواند به راحتی بین حالت Server-Side و Client-Side جابجا شد و در آینده اگر لازم باشه می تواند کدهای خود را بدون تغییر خاصی از سرور به کلاینت منتقل کنید.
آشنایی با GPU
در حالی که CPU به طور متوسط شامل 8 یا 16 هسته است اما GPU معمولا بیش از 1000 هسته دارد. این تعداد هسته در انجام پردازش های گرافیکی که نیاز به محاسبات ریاضی زیادی دارد به کار می آیند و تجربه ی بازی کردن یا طراحی سه بعدی را شکل میدهد.
در GPU واحدهای پردازشی محاسباتی یا (ALU) از طریق SIMD یک عملیات را به صورت موازی و همزمان انجام میدهند. این موضوع سرعت پردازش را چند ده برابر میکند اما تنوع عملیاهای قابل اجرا را کاهش میدهد.
در CPU عملیاهایی مانند محسبات ریاضی تا کار با دیسک و شبکه انجام میشود و هدف اصلی این است که عملیاتها های متنوع به صورت جداگانه و در کوتاهترین زمان ممکن انجام شود در نتیجه CPU بازه ی بسیار گسترده ای از عملیاتها را پوشش میدهد.
قدرت پردازش بالای GPU باعث شده است در هوش مصنوعی و یادگیری ماشین همینطور در رمز ارزها و دستگاههای ماینر BitCoin مورد استفاده قرار گیرد.
در سی شارپ می توانید با استفاده از کامپایلر hybridizer برای GPU برنامه نویسی کنید. این کامپایلر کد سی شارپ را به پلتفرم CUDA منتقل میکند و فایل باینری مورد نیاز را تولید میکند.
https://tinyurl.com/cdhks-hybridizer
در حالی که CPU به طور متوسط شامل 8 یا 16 هسته است اما GPU معمولا بیش از 1000 هسته دارد. این تعداد هسته در انجام پردازش های گرافیکی که نیاز به محاسبات ریاضی زیادی دارد به کار می آیند و تجربه ی بازی کردن یا طراحی سه بعدی را شکل میدهد.
در GPU واحدهای پردازشی محاسباتی یا (ALU) از طریق SIMD یک عملیات را به صورت موازی و همزمان انجام میدهند. این موضوع سرعت پردازش را چند ده برابر میکند اما تنوع عملیاهای قابل اجرا را کاهش میدهد.
در CPU عملیاهایی مانند محسبات ریاضی تا کار با دیسک و شبکه انجام میشود و هدف اصلی این است که عملیاتها های متنوع به صورت جداگانه و در کوتاهترین زمان ممکن انجام شود در نتیجه CPU بازه ی بسیار گسترده ای از عملیاتها را پوشش میدهد.
قدرت پردازش بالای GPU باعث شده است در هوش مصنوعی و یادگیری ماشین همینطور در رمز ارزها و دستگاههای ماینر BitCoin مورد استفاده قرار گیرد.
در سی شارپ می توانید با استفاده از کامپایلر hybridizer برای GPU برنامه نویسی کنید. این کامپایلر کد سی شارپ را به پلتفرم CUDA منتقل میکند و فایل باینری مورد نیاز را تولید میکند.
https://tinyurl.com/cdhks-hybridizer
آشنایی با Worker Service در NET Core 3.0
فردا همزمان با NETConf 2019 نسخه ی نهایی NET Core 3.0 منتشر میشود. یکی از موارد جدیدی که در این نسخه اضافه شده است قابلیت Background Service است که از طریق قالب پروژه Worker Service در دسترس است.
از Worker Service برای ایجاد سرویس هایی که قرار است برای مدت طولانی در سیستم عامل اجرا شوند استفاده میشود. این نوع اپ ها رابط کاربری ندارند و معمولا برای لوگ کردن اطلاعات یا نمایش وضعیت کلی سیستم در صفحه Terminal مورد استفاده قرار میگیرند.
کاربرد این نوع اپ ها در مواردی است که قصد دارید یک عملیات در پس زمینه همیشه در حال اجرا باشد .
یکی از کاربردهای Worker Service مدیریت پیامهای RabbitMQ است. یا اگر میخواهید پیامک یا ایمیل ها در ساعت زمانبندی شده خارج از پروسه اصلی سایت اجرا شود مناسب است. همچنین از این ابزار برای مونیتور کردن سلامت سرور و دیتابیس استفاده میشود.
در گذشته از برنامه های کنسول یا TopShelf استفاده میشد اما Worker Service ابزاری اختصاصی برای اجرا عملیاتهای بلند مدت فراهم می کند و به راحتی می توان آن را به صورت Windows Service یا Daemon Linux اجرا کرد.
فردا همزمان با NETConf 2019 نسخه ی نهایی NET Core 3.0 منتشر میشود. یکی از موارد جدیدی که در این نسخه اضافه شده است قابلیت Background Service است که از طریق قالب پروژه Worker Service در دسترس است.
از Worker Service برای ایجاد سرویس هایی که قرار است برای مدت طولانی در سیستم عامل اجرا شوند استفاده میشود. این نوع اپ ها رابط کاربری ندارند و معمولا برای لوگ کردن اطلاعات یا نمایش وضعیت کلی سیستم در صفحه Terminal مورد استفاده قرار میگیرند.
کاربرد این نوع اپ ها در مواردی است که قصد دارید یک عملیات در پس زمینه همیشه در حال اجرا باشد .
یکی از کاربردهای Worker Service مدیریت پیامهای RabbitMQ است. یا اگر میخواهید پیامک یا ایمیل ها در ساعت زمانبندی شده خارج از پروسه اصلی سایت اجرا شود مناسب است. همچنین از این ابزار برای مونیتور کردن سلامت سرور و دیتابیس استفاده میشود.
در گذشته از برنامه های کنسول یا TopShelf استفاده میشد اما Worker Service ابزاری اختصاصی برای اجرا عملیاتهای بلند مدت فراهم می کند و به راحتی می توان آن را به صورت Windows Service یا Daemon Linux اجرا کرد.
پخش زنده کنفرانس NetConf در یوتویب
کنفرانس NETConf امشب ساعت 19:30 به وقت ایران شروع میشود.
قرار است طی این کنفرانس که به صورت مجازی برگزار میشود نسخه ی NET Core 3.0 RTM معرفی شود.
نسخه ی جدید NET Core شامل ASP NET Core و Blazor و Win Forms و WPF میشود که کاملا به صورت متن باز توسعه داده شده است.
در این نسخه فقط بخش Server-side از Blazor عرضه میشود و ارائه ی قابلیبت Client-side آن به نسخه ی 3.1 موکول شده است.
لینک پخش زنده :
https://tinyurl.com/cdhk-netconf
کنفرانس NETConf امشب ساعت 19:30 به وقت ایران شروع میشود.
قرار است طی این کنفرانس که به صورت مجازی برگزار میشود نسخه ی NET Core 3.0 RTM معرفی شود.
نسخه ی جدید NET Core شامل ASP NET Core و Blazor و Win Forms و WPF میشود که کاملا به صورت متن باز توسعه داده شده است.
در این نسخه فقط بخش Server-side از Blazor عرضه میشود و ارائه ی قابلیبت Client-side آن به نسخه ی 3.1 موکول شده است.
لینک پخش زنده :
https://tinyurl.com/cdhk-netconf
نسخه ی نهایی NET Core 3.0 منتشر شد.
طبق اعلام مدیر فنی NET Core توسط بیش از یک میلیون دولوپر مورد استفاده قرار گرفته است.
دات نت متن باز توسعه داده میشود و تا به حال بیش از 100 هزار Pull Request توسط افراد خارج از مایکروسافت پذیرفته شده است.
ویژوال استودیو نسخه 2019 سریعتر از نسخه های قبل توسط دولوپر ها دانلود و مورد استفاده قرار گرفته است.
نسخه ی نهایی NET Core 3.0 بعد از 10 نسخه ی پیش نمایش منتشر شده است و بسیاری از باگها و ایرادات آن در این بازه ی زمانی برطرف شده است. از همین امروز می توانید شروع به استفاده از این نسخه کنید.
این نسخه شامل پشتیبانی LTS نمیشود و برای آن باید تا انتشار نسخه ی 3.1 که یک ماه دیگر ارئه میشود صبر کنید.
مایکروسافت قصد دارد از این فرصت یک ماهه استفاده کند و مشکلات احتمالی که توسط دولوپر ها گزارش میشود قبل از شروع دوره ی پشتیبانی بلند مدت برطرف کند.
طبق اعلام مدیر فنی NET Core توسط بیش از یک میلیون دولوپر مورد استفاده قرار گرفته است.
دات نت متن باز توسعه داده میشود و تا به حال بیش از 100 هزار Pull Request توسط افراد خارج از مایکروسافت پذیرفته شده است.
ویژوال استودیو نسخه 2019 سریعتر از نسخه های قبل توسط دولوپر ها دانلود و مورد استفاده قرار گرفته است.
نسخه ی نهایی NET Core 3.0 بعد از 10 نسخه ی پیش نمایش منتشر شده است و بسیاری از باگها و ایرادات آن در این بازه ی زمانی برطرف شده است. از همین امروز می توانید شروع به استفاده از این نسخه کنید.
این نسخه شامل پشتیبانی LTS نمیشود و برای آن باید تا انتشار نسخه ی 3.1 که یک ماه دیگر ارئه میشود صبر کنید.
مایکروسافت قصد دارد از این فرصت یک ماهه استفاده کند و مشکلات احتمالی که توسط دولوپر ها گزارش میشود قبل از شروع دوره ی پشتیبانی بلند مدت برطرف کند.
نقشه ی راه
مایکروسافت برنامه ی بلند مدت خود را برای توسعه ی نسخه های بعدی دات نت اعلام کرد.
نسخه ی 3.1 از NET Core در اواخر ماه نوامبر (یک ماه دیگر) منتشر میشود که شامل پشتیبانی LTS یا بلند مدت سه ساله است.
در دوره های پشتیبانی بلند مدت برای باگها و مشکلات امنیتی پچ و آپدیت ارائه میشود که به صورت رایگان در اختیار همه قرار میگیرد.
در سال 2020 قرار است نسخه ی یک پارچه ی دات نت به شماره 5.0 منتشر شود و همه ی فریم ورکهای مختلف دات نت را زیر یک چتر مشترک جمع آوری کند.
از سال 2021 هر سال نسخه ی جدیدی از دات نت منتشر خواهد شد و یک سال در میان هم پشتیبانی LTS ارائه میشود.
مایکروسافت برنامه ی بلند مدت خود را برای توسعه ی نسخه های بعدی دات نت اعلام کرد.
نسخه ی 3.1 از NET Core در اواخر ماه نوامبر (یک ماه دیگر) منتشر میشود که شامل پشتیبانی LTS یا بلند مدت سه ساله است.
در دوره های پشتیبانی بلند مدت برای باگها و مشکلات امنیتی پچ و آپدیت ارائه میشود که به صورت رایگان در اختیار همه قرار میگیرد.
در سال 2020 قرار است نسخه ی یک پارچه ی دات نت به شماره 5.0 منتشر شود و همه ی فریم ورکهای مختلف دات نت را زیر یک چتر مشترک جمع آوری کند.
از سال 2021 هر سال نسخه ی جدیدی از دات نت منتشر خواهد شد و یک سال در میان هم پشتیبانی LTS ارائه میشود.
چرا برنامه نویسان دسکتاپ باید به NET Core مهاجرت کنند؟
نسخه ی NET Core 3.0 اولین نسخه ای است که از WinForm و WPF پشتیبانی می کند.
دات نت Core امکان نصب Side-by-Side دارد و میتوان چند نسخه ی NET Core را کنار هم روی یک سیستم عامل نصب کرد.
همچنین می توان برنامه را به صورت self-contained منتشر کرد. در این حالت فایلهای فریم ورک به همراه پروژه منتشر میشود و نیاز به نصب ندارد.
امکان ایجاد فایل یکتا برای کل پروژه وجود دارد و مانند اپ Portable با کپی و پیست تکسیر و بدون نصب اجرا میشود.
کامپایلر جدید امکان حذف کتابخانه های مازاد دات نت را فراهم کرده با این کار حجم بسیار کمتر میشود. دیگر لازم نیست همه فریم ورک NET Core در کنار برنامه ی شما روی سیستم کاربر کپی شود.
حالت WinForm و WPF فقط برای ویندوز است و در لینوکس یا مک اجرا نمیشود. این سیستم عاملها محیط گرافیکی متفاوتی نسبت به ویندوز دارند که پیاده سازی آن روی دات نت کاربردی نیست.
نکته : بخش Form Designer مربوط به WinForm هنوز آماده نشده است و فعلا به صورت Preview و با نصب افزونه قابل استفاده است ولی برای WPF و محیط XAML مشکلی وجود ندارد.
نسخه ی NET Core 3.0 اولین نسخه ای است که از WinForm و WPF پشتیبانی می کند.
دات نت Core امکان نصب Side-by-Side دارد و میتوان چند نسخه ی NET Core را کنار هم روی یک سیستم عامل نصب کرد.
همچنین می توان برنامه را به صورت self-contained منتشر کرد. در این حالت فایلهای فریم ورک به همراه پروژه منتشر میشود و نیاز به نصب ندارد.
امکان ایجاد فایل یکتا برای کل پروژه وجود دارد و مانند اپ Portable با کپی و پیست تکسیر و بدون نصب اجرا میشود.
کامپایلر جدید امکان حذف کتابخانه های مازاد دات نت را فراهم کرده با این کار حجم بسیار کمتر میشود. دیگر لازم نیست همه فریم ورک NET Core در کنار برنامه ی شما روی سیستم کاربر کپی شود.
حالت WinForm و WPF فقط برای ویندوز است و در لینوکس یا مک اجرا نمیشود. این سیستم عاملها محیط گرافیکی متفاوتی نسبت به ویندوز دارند که پیاده سازی آن روی دات نت کاربردی نیست.
نکته : بخش Form Designer مربوط به WinForm هنوز آماده نشده است و فعلا به صورت Preview و با نصب افزونه قابل استفاده است ولی برای WPF و محیط XAML مشکلی وجود ندارد.