کدهک
1.93K subscribers
1.3K photos
7 videos
1 file
675 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
آشنایی با BaaS

ابزار BaaS یا Backend as a service به خدماتی گفته میشود که کدهای سمت سرور را به صورت سرویس عرضه میکند.

بسیاری از اپ های موبایل یا SPA نیاز به ذخیره سازی اطلاعات در سرور مرکزی دارند. مشکل اصلی این است که باید پیاده سازی این وب سرویس یک کار تخصصی است و باید توسط برنامه نویس Back-end انجام شود.

در بسیاری از موارد وب سرویس کار زیادی انجام نمی دهد. هدف اصلی استفاده از وب سرویس ذخیره سازی اطلاعات کاربر یا تشخیص هویت آن است. اما در این میان هزینه ی تهیه ی سرور ، پیاده سازی وب سرویس و بروز نگاه داشتن آن کار مشکلی است.

در اینجا BaaS وارد میشود. این ابزار یک پنل مدیریتی در اختیار برنامه نویس Front-end یا موبایل قرار میدهد که سیستمهای تشخیص هویت و ذخیره سازی اطلاعات در آن قبلا پیاده شده است.

برنامه نویس موبایل با SDK دیتابیس خود را میسازد و یک وب سرویس آماده تحویل میگیرد بدون آنکه برای آن کدی بنویسد. همینطور امکان تغییر یا انجام تنظمیمات در دیتابیس از طریق API نیز وجود دارد.
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
آشنایی با 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 بیشتر اضافه شود.
فرق Layer و Tier

در واقع Layer یک مفهوم نرم افزاری است و مربوط به سورس کد شما میشود. وقتی برنامه ی خود را از نظر منطقی به چند بخش تقسیم می کنید از برنامه نویسی چند لایه یا N-Layer استفاده می کنید.

منظور از Tier تقسیم بندی برنامه به صورت فیزیکی است. شما می توانید یک برنامه ی چند لایه داشته باشید اما تنها روی یک Tier آن را اجرا کنید. اگر همه ی اجزای پروژه ی شما تنها درون یک سرور قرار میگیرند برنامه ی شما یک Tier است.

هر گاه کد را به شکلی اجر کنید که بخشی از آن در ماشین دیگری اجرا شود برنامه ی N-Tier دارید.

پیاده سازی برنامه ی N-Tier به مراتب مشکلتر از N-Layer است. مثلا در یک سایت چند لایه که به صورت یک ریدفه اجرا میشود برای برقرار کردن ارتباط با دیتابیس تنها باید از مرز بین پردازش ها عبور کنید اما اگر دیتابیس را به سرور دیگری منتقل کنید باید از طریق شبکه اطلاعات را جابجا کنید که ناپایدارتر و کندتر است و لازم است برای شرایط عدم اتصال یا از کار افتادگی ماشین برنامه ریزی کنید.

برنامه ی های چند ردیفه یا N-Tier انعطاف پذیرترند ،قابلیت پاسخگویی به کاربران بیشتری دارند و راحت تر Scale می شوند.
Forwarded from کدهک
ویدیو :

بارگذاری اطلاعات بیشتر با AJAX و Vue.js


https://tinyurl.com/y48pw5y6
Forwarded from کدهک
در این ویدیو نگاهی به Span در سی شارپ 7.3 می اندازیم و این قابلیت جدید که در دات نت core 2.1 به بعد قابل استفاده است را بررسی می کنیم.


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 تغییر نام داده شد که به این معنی است که کار روی نسخه ی بعدی دات نت شروع شده است.
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 جلوگیری میکند و در کوتاه مدت پرفورمنس را افزایش میدهد. اما اگر برای مدت طولانی به کار گرفته شود در حافظه حفره های خالی ایجاد میکند و ممکن است به کرش کردن یا کاهش شدید پرفورمنس منجر شود.
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
لایه های بهینه سازی

معماری در بالاترین سطح بهینه سازی قرار دارد. ساختار کلی پروژه و نحوه ی ارتباط اجزای آن باهم نقش بسیار بزرگی در پرفورمنس دارد.

در ادامه الگوریتمهای برنامه حضور دارند. بیشترین باگها و مشکلات پرفورمنس در این لایه خود را نشان میدهند. از آنجایی که این بخش مستقیم توسط برنامه نوشته میشود تغییر دادن آن کم هزینه تر است. اولین جایی است که باید بررسی شود.

در لایه ی بعدی فریم ورک دات نت قرار دارد. نسخه های مختلف فریم ورک از نظر کارایی با هم فرق می کنند و مایکروسافت همیشه در حال توسعه و بهبود آن است. در NET Core بخش بزرگی از کتابخانه های قدیمی باز نویسی شده است و اضافه شدن قابلیت های جدیدی مثل Ref Return و Span کمک کرده تا کارایی آن افزایش چشمگیری پیدا کند.

کد نوشته شده در نهایت با استفاده از JIT و CLR اجرا میشود. CLR شامل ابزاری مثل Garbage Collector است و با کمک زبانهایی مثل C و Assembly مدیریت حافظه و فرآیند اجرای برنامه را به عهده دارد. هرچند این لایه آخرین مرحله ی بهینه سازی است اما ابزار زیادی برای تغییر و Customize کردن رفتار آن وجود دارد تا نهایت بهرهبرداری از سیستم ممکن شود .
Forwarded from کدهک
در این ویدیو با استفاده از پیش نمایش NET Core 3.0 یک برنامه ی ویندوز فرم ایجاد می کنیم سپس درباره ی مزایای استفاده از دات نت کور در محیط WinForm صحبت می کنیم.

https://goo.gl/KwBG58
نگاهی به آمار Spotify

اسپاتیفای پلتفرم استریم صدا است که در سال 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 معرفی میشود.
آشنایی با gRPC

در ASP NET Core 3.0 یک قالب اختصاصی برای پروژه ی gRPC در نظر گرفته شده است. همین موضوع نشان از اهمیت و کاربرد زیاد تکنولوژی gRPC در دنیای امروز دارد.

در gRPC کلاینت می تواند متدی را در سرور اجرا کند درست مانند اینکه متد درون خودش قرار دارد.

تکنولوژی RPC قدیمی است و سالهاست مورد استفاده قرار میگیرد. گوگل با استاندارد سازی و بهینه کردن روش انتقال اطلاعات تکنولوژی gRPC را پیاده کرد و بعدا به صورت متن باز در اختیار سایر برنامه نویسها قرار داد.

متدهایی که در سرور قابل صدا زدن هستند از طریق Protobuf که یک فایل با پسوند proto است در اختیار کلاینت قرار میگیرند. ساختار پیامهای ارسالی و دریافتی از طریق این فایل مشخص میشود و بدون آن امکان خواندن محتوا بین کلاینت و سرور وجود ندارد. بر خلاف JSON در Protocol Buffer ساختار پیام ارسال نمیشود و فقط شامل خود داده است تا کمترین حجم پهنای باند مصرف شود.

گوگل برای زبانهای برنامه نویسی مختلف ابزاری فراهم کرده که کدهای مورد نیاز برای ارتباط بین کلاینت و سرور را می سازد.

از gRPC در میکروسرویسها بسیار استفاده میشود.
دوره آموزش کار با Collection ها در سی شارپ و ASP NET Core

پخش در یوتوب :

https://kutt.it/rJvT82
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
👩‍💻👨‍💻 روز #برنامه‌نویس مبارک

💢 روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) و مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) به عنوان روز برنامه‌نویسان نام گرفته ‌است. عدد ۲۵۶ (۲ به توان ۸) بزرگترین توان عدد ۲ کوچکتر از، ۳۶۵ که تعداد روزهای یک سال است، می‌باشد.

@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 از دات نت این روش تغییر خواهد کرد و روشهای بهتری جایگزن آن میشود که هنوز در دست بررسی است.
در حالت server-side کدهایی که برای کنترل UI نوشته شده درون سرور اجرا میشوند. وقتی کاربر روی یک دکمه کلید می کند رویداد آن از طریق SignalR به سرور ارسال میشود. در سرور اطلاعات پردازش شده و تغییراتی که باید در HTML اعمال شود به کلاینت برگردانده میشود.

از مزایای استفاده از 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
آموزش مقدماتی SignalR در ASP NET Core

در 8 ویدیو به مدت 30 دقیقه

https://tinyurl.com/cdhk-signalr