Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ در آستانه انتشار نهایی 3 NET Core.
هم اکنون NET Core. 3 تا نسخه پیش نمایش 8 خودش پیش رفته و تقریبا در آستانه انتشار نهاییش هست
تیم NET Core. گفته در حال حاضر قرار نیست دیگه فیچر جدیدی اضافه کنن و بیشتر تمرکزشون رو روی Bugfix و Stability (پایداری) گذاشتن
ماکروسافت هم گفته نسخه های پیش نمایش 7 و 8 رو پشتیبانی رسمی (Go Live) میکنه و میتونین ازشون در Production استفاده کنید. ولی پیشنهاد میشه قبل از استفاده از اون تست های لازم رو انجام بدین
ماکروسافت تاریخ انتشار نهایی NET Core 3. رو ماه سپتامبر (ماه آینده) وعده داده ولی با توجه به اینکه هنوز RC (نسخه Release Condidate) اون منتشر نشده بعید میدونم به سپتامبر برسه و احتمالا میره واسه اکتبر (2 ماه آینده)
@IranAspMvc
هم اکنون NET Core. 3 تا نسخه پیش نمایش 8 خودش پیش رفته و تقریبا در آستانه انتشار نهاییش هست
تیم NET Core. گفته در حال حاضر قرار نیست دیگه فیچر جدیدی اضافه کنن و بیشتر تمرکزشون رو روی Bugfix و Stability (پایداری) گذاشتن
ماکروسافت هم گفته نسخه های پیش نمایش 7 و 8 رو پشتیبانی رسمی (Go Live) میکنه و میتونین ازشون در Production استفاده کنید. ولی پیشنهاد میشه قبل از استفاده از اون تست های لازم رو انجام بدین
ماکروسافت تاریخ انتشار نهایی NET Core 3. رو ماه سپتامبر (ماه آینده) وعده داده ولی با توجه به اینکه هنوز RC (نسخه Release Condidate) اون منتشر نشده بعید میدونم به سپتامبر برسه و احتمالا میره واسه اکتبر (2 ماه آینده)
@IranAspMvc
آشنایی با Thread Pool
ایجاد کردن Thread جدید فرآیند پر هزینه ای است و لازم است در Kernel و استک تخصیص حافظه صورت گیرد. به دلیل این هزینه ی بالا هیچوقت نباید برای مدیریت درخواستهای مجزا Thread جدید ایجاد کرد.
در اینجا از تکنیک Thread Pool یا استخر Thread استفاده میشود. به این معنی که تعداد زیادی Thread از قبل ساخته شده و آماده ی استفاده قرار می گیرند. در عمل دو نوع Thread درون Thread Pool دات نت وجود دارند :
Worker Thread
I/O Thread
از ترد I/O برای انجامی عملیات های سخت افزاری مانند کار با شبکه و هارد دیسک استفاده میشود که I/O Bound هستند.
ایجاد Threadهای زیاد باعث کمبود حافظه میشود و کم بودن آنها برنامه را کند میکند. ایده آل این است که به تعداد هسته ها Thread داشته باشیم اما در عمل بسیاری از آنها درگیر عملیات های I/O میشوند و هسته بیکار می ماند.
تعداد Thread ها بسته به میزان درخواستها کم و زیاد میشود و برای محاسبه ی آن از الگوریتم Hill Climbing استفاده میشود که Self-Feedback است و خودش را اصلاح میکند. این الگوریتم با کم شدن Throughput تشخیص میدهد که باید Thread بیشتر اضافه شود.
ایجاد کردن Thread جدید فرآیند پر هزینه ای است و لازم است در Kernel و استک تخصیص حافظه صورت گیرد. به دلیل این هزینه ی بالا هیچوقت نباید برای مدیریت درخواستهای مجزا Thread جدید ایجاد کرد.
در اینجا از تکنیک Thread Pool یا استخر Thread استفاده میشود. به این معنی که تعداد زیادی Thread از قبل ساخته شده و آماده ی استفاده قرار می گیرند. در عمل دو نوع Thread درون Thread Pool دات نت وجود دارند :
Worker Thread
I/O Thread
از ترد I/O برای انجامی عملیات های سخت افزاری مانند کار با شبکه و هارد دیسک استفاده میشود که I/O Bound هستند.
ایجاد Threadهای زیاد باعث کمبود حافظه میشود و کم بودن آنها برنامه را کند میکند. ایده آل این است که به تعداد هسته ها Thread داشته باشیم اما در عمل بسیاری از آنها درگیر عملیات های I/O میشوند و هسته بیکار می ماند.
تعداد Thread ها بسته به میزان درخواستها کم و زیاد میشود و برای محاسبه ی آن از الگوریتم Hill Climbing استفاده میشود که Self-Feedback است و خودش را اصلاح میکند. این الگوریتم با کم شدن Throughput تشخیص میدهد که باید Thread بیشتر اضافه شود.
فرق Layer و Tier
در واقع Layer یک مفهوم نرم افزاری است و مربوط به سورس کد شما میشود. وقتی برنامه ی خود را از نظر منطقی به چند بخش تقسیم می کنید از برنامه نویسی چند لایه یا N-Layer استفاده می کنید.
منظور از Tier تقسیم بندی برنامه به صورت فیزیکی است. شما می توانید یک برنامه ی چند لایه داشته باشید اما تنها روی یک Tier آن را اجرا کنید. اگر همه ی اجزای پروژه ی شما تنها درون یک سرور قرار میگیرند برنامه ی شما یک Tier است.
هر گاه کد را به شکلی اجر کنید که بخشی از آن در ماشین دیگری اجرا شود برنامه ی N-Tier دارید.
پیاده سازی برنامه ی N-Tier به مراتب مشکلتر از N-Layer است. مثلا در یک سایت چند لایه که به صورت یک ریدفه اجرا میشود برای برقرار کردن ارتباط با دیتابیس تنها باید از مرز بین پردازش ها عبور کنید اما اگر دیتابیس را به سرور دیگری منتقل کنید باید از طریق شبکه اطلاعات را جابجا کنید که ناپایدارتر و کندتر است و لازم است برای شرایط عدم اتصال یا از کار افتادگی ماشین برنامه ریزی کنید.
برنامه ی های چند ردیفه یا N-Tier انعطاف پذیرترند ،قابلیت پاسخگویی به کاربران بیشتری دارند و راحت تر Scale می شوند.
در واقع Layer یک مفهوم نرم افزاری است و مربوط به سورس کد شما میشود. وقتی برنامه ی خود را از نظر منطقی به چند بخش تقسیم می کنید از برنامه نویسی چند لایه یا N-Layer استفاده می کنید.
منظور از Tier تقسیم بندی برنامه به صورت فیزیکی است. شما می توانید یک برنامه ی چند لایه داشته باشید اما تنها روی یک Tier آن را اجرا کنید. اگر همه ی اجزای پروژه ی شما تنها درون یک سرور قرار میگیرند برنامه ی شما یک Tier است.
هر گاه کد را به شکلی اجر کنید که بخشی از آن در ماشین دیگری اجرا شود برنامه ی N-Tier دارید.
پیاده سازی برنامه ی N-Tier به مراتب مشکلتر از N-Layer است. مثلا در یک سایت چند لایه که به صورت یک ریدفه اجرا میشود برای برقرار کردن ارتباط با دیتابیس تنها باید از مرز بین پردازش ها عبور کنید اما اگر دیتابیس را به سرور دیگری منتقل کنید باید از طریق شبکه اطلاعات را جابجا کنید که ناپایدارتر و کندتر است و لازم است برای شرایط عدم اتصال یا از کار افتادگی ماشین برنامه ریزی کنید.
برنامه ی های چند ردیفه یا N-Tier انعطاف پذیرترند ،قابلیت پاسخگویی به کاربران بیشتری دارند و راحت تر Scale می شوند.
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