Forwarded from سفر کهکشان با ابوراجا :)
بعضی نیازهای روزمره برنامه نویسی در همه زبان ها همیشه مورد نیاز هستند. مهم ترین اینها توابع و کتابخانه های کار با اعداد و زبان و تبدیل های مختلف اونهاست.
حالا آقای علی ترکی عزیز به همراه چندنفر دیگر یک کتابخانه با کیفیت برای js نوشتند که تقریبا همه این نیازهای روزمره را پوشش میدهد.
نمونه مواردی که این کتابخانه پوشش میدهد:
• تبدیل اعداد به حروف و برعکس (مثلا:تبدیل ۳۰۰ به سی صد و برعکس).
• حذف و اضافه کردن کاما به اعداد.
• تبدیل اعداد فارسی به انگلیسی و عربی و عربی به انگلیسی و فارسی.
• تایید و اعتبارسنجی کد ملی.
• دریافت نام استان و شهرستان با کد ملی.
• تایید و اعتبارسنجی شماره عابر بانک.
• دریافت نام بانک توسط شماره عابر بانک.
• تایید و اعتبارسنجی متن فارسی ( به عنوان مثال: درصورتی که متن وارد شده فارسی باشد true برمیگرداند )
• تمیز کردن متن فارسی از حروف عربی و unicode ها.
تمامی مثال ها و اطلاعات تکمیلی رو میتونید توی صفحه گیت هاب پروژه مشاهده کنید.
https://github.com/persian-tools/persian-tools
@abooraja_ir
حالا آقای علی ترکی عزیز به همراه چندنفر دیگر یک کتابخانه با کیفیت برای js نوشتند که تقریبا همه این نیازهای روزمره را پوشش میدهد.
نمونه مواردی که این کتابخانه پوشش میدهد:
• تبدیل اعداد به حروف و برعکس (مثلا:تبدیل ۳۰۰ به سی صد و برعکس).
• حذف و اضافه کردن کاما به اعداد.
• تبدیل اعداد فارسی به انگلیسی و عربی و عربی به انگلیسی و فارسی.
• تایید و اعتبارسنجی کد ملی.
• دریافت نام استان و شهرستان با کد ملی.
• تایید و اعتبارسنجی شماره عابر بانک.
• دریافت نام بانک توسط شماره عابر بانک.
• تایید و اعتبارسنجی متن فارسی ( به عنوان مثال: درصورتی که متن وارد شده فارسی باشد true برمیگرداند )
• تمیز کردن متن فارسی از حروف عربی و unicode ها.
تمامی مثال ها و اطلاعات تکمیلی رو میتونید توی صفحه گیت هاب پروژه مشاهده کنید.
https://github.com/persian-tools/persian-tools
@abooraja_ir
✅ وب اسمبلی (WebAssembly) چیه؟ و چرا آینده Web هست؟!
وب اسمبلی (یا WASM مخفف WebAssembly) یک زبان low-level (سطح پایین) با فرمت Binary (دو-دویی) هست که توسط مرورگر اجرا میشه
🔸در اینجا چندتا نکته مهم وجود داره:
1️⃣ اول اینکه یه زبان سطح-پایین هست و با پرفرمنسی نزدیک به Native اجرا میشه (اصلا یکی از اهداف اصلی ایجاد WASM اجرا سریع تر کدها توی مروگر بود)
2️⃣ برخلاف js به جای اینکه فرمت متنی داشته باشه، فرمت باینری (دو-دویی) داره که باعث میشه کد حجم کمتری داشته باشه در نتیجه این به معنی بارگزاری سریع تر نیز هست
در واقع وقتی کدی قراره human-readable باشه حجم بیشتری میگیره تا اینکه باینری باشه. مشابه این اتفاق برای سریالایز کردن به json در مقایسه با binary formatter هایی مانند protobuf و message-pack هم اتفاق میافته. ضمن اینکه کدی که به صورت باینری باشه امکان فشرده سازی بیشتر و بهینه تری داره
3️⃣ علاوه بر حالت باینری، یه حالت متنی (به صورت S-expression) هم داره که human-readable هست و قابلیت دیباگ و خوانایی خوبی داره
این فرمت در قالب فایل های با پسوند wat. یا wast. ذخیره میشه که میتونین نمونه کدش رو اینجا ببینین (البته در گذشته این دو معادل هم بودند ولی جدیدا بیشتر wat. برای اینکار استفاده میشه)
4️⃣ گرچه در ابتدا WASM برای اجرا توی مروگر طراحی شده بود ولی بعد ها توی پلتفرم های دیگه هم مورد استقبال قرار گرفت و یه سری Runtime هایی (مانند wasmer و wasmtime) براش نوشته شد که این امکان رو میده که برنامه های WASM رو توی Desktop و IoT و Server و... اجرا بشن
5️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emnoscripten و binaryen) ارائه داده تا زبان های low-level ایی همچون C و ++C و Rust بتونن کدشون رو به WASM کامپایل کنن
زبان های دیگه هم از جمله #C و Java و Python و Go به این سمت حرکت کردن و امکان اجرای کد هاشون رو توی مرورگر فراهم کردند
به عنوان مثال Blazor امکان اجرا کد های #C رو در مرورگر فراهم میکنه
مزیت این روش اینه که شما به زبون های دلخواه خودتون میتونین کدی بنویسین که توی مرورگر اجرا بشه. یعنی اصلا نیاز نیس زبان WASM رو بلد باشین.
🔹حالا سوال مهم اینه که این زبان جای JavaScript رو میگیره؟
جواب: نه، اصلا نمیتونه. WASM اومده که مکمل JS باشه و ضعف های اون رو برطرف کنه
زبان JS تو پلتفرم های زیادی استفاده میشه و جامعه بسیار بزرگی داره پس نه WASM نه هیچ زبان دیگه ای نمی تونه اون رو کنار بزنه (حداقل به این زودی ها نه)
در واقع تنها مزیت منحصر به فرد JS سمت Front این بود که تنها پادشاه سمت مرورگر بود. ولی الان که امکان اجرای زبان های دیگه سمت مرورگر فراهم شده عملا راه برای ظهور پادشاه های دیگری هم فراهم شده
یکی از کارهای دیگری که در این زمینه انجام شده AssemblyScript هست که در واقع یک کامپایلر TypeScript به WASM هست که سینتکس کدش کاملا TS نیست ولی شبیه اونه و نهایتا کد های شما رو به WASM کامپایل میکنه
🔸در آخر نکته مهم اینه که که بدونین این تکنولوژی محکوم به اینه که آینده وب باشه!
یعنی حتی اگه این زبان از خودش هیچ آورده ای هم نداشته باشه بازم مسیر توسعه وب در آینده به سمت اون هدایت میشه (توسط دست های پشت پرده :دی) .
چرا؟ چون توسط بنیاد W3C (کنسرسیوم جهانی وب) به عنوان یه استاندارد شناخته شده و نیز شرکتای غولی همچون Google و Microsoft و Mozilla و Apple و Intel و Red Hat و... روش سرمایه گذاری کردن
میگن اگه میخوای پیش گوی خوبی باشی، آینده رو پیش بینی نکن، اون رو بساز. و این ها در واقع کسانی هستند که مسیر توسعه وب رو پیش بینی نمیکنند بلکه اون رو خودشون میسازند
🔰اگه میخواین بیشتر در مورد WebAssembly بدونین این مقاله خوبیه
_______________
@DotNetZoom
وب اسمبلی (یا WASM مخفف WebAssembly) یک زبان low-level (سطح پایین) با فرمت Binary (دو-دویی) هست که توسط مرورگر اجرا میشه
🔸در اینجا چندتا نکته مهم وجود داره:
1️⃣ اول اینکه یه زبان سطح-پایین هست و با پرفرمنسی نزدیک به Native اجرا میشه (اصلا یکی از اهداف اصلی ایجاد WASM اجرا سریع تر کدها توی مروگر بود)
2️⃣ برخلاف js به جای اینکه فرمت متنی داشته باشه، فرمت باینری (دو-دویی) داره که باعث میشه کد حجم کمتری داشته باشه در نتیجه این به معنی بارگزاری سریع تر نیز هست
در واقع وقتی کدی قراره human-readable باشه حجم بیشتری میگیره تا اینکه باینری باشه. مشابه این اتفاق برای سریالایز کردن به json در مقایسه با binary formatter هایی مانند protobuf و message-pack هم اتفاق میافته. ضمن اینکه کدی که به صورت باینری باشه امکان فشرده سازی بیشتر و بهینه تری داره
3️⃣ علاوه بر حالت باینری، یه حالت متنی (به صورت S-expression) هم داره که human-readable هست و قابلیت دیباگ و خوانایی خوبی داره
این فرمت در قالب فایل های با پسوند wat. یا wast. ذخیره میشه که میتونین نمونه کدش رو اینجا ببینین (البته در گذشته این دو معادل هم بودند ولی جدیدا بیشتر wat. برای اینکار استفاده میشه)
4️⃣ گرچه در ابتدا WASM برای اجرا توی مروگر طراحی شده بود ولی بعد ها توی پلتفرم های دیگه هم مورد استقبال قرار گرفت و یه سری Runtime هایی (مانند wasmer و wasmtime) براش نوشته شد که این امکان رو میده که برنامه های WASM رو توی Desktop و IoT و Server و... اجرا بشن
5️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emnoscripten و binaryen) ارائه داده تا زبان های low-level ایی همچون C و ++C و Rust بتونن کدشون رو به WASM کامپایل کنن
زبان های دیگه هم از جمله #C و Java و Python و Go به این سمت حرکت کردن و امکان اجرای کد هاشون رو توی مرورگر فراهم کردند
به عنوان مثال Blazor امکان اجرا کد های #C رو در مرورگر فراهم میکنه
مزیت این روش اینه که شما به زبون های دلخواه خودتون میتونین کدی بنویسین که توی مرورگر اجرا بشه. یعنی اصلا نیاز نیس زبان WASM رو بلد باشین.
🔹حالا سوال مهم اینه که این زبان جای JavaScript رو میگیره؟
جواب: نه، اصلا نمیتونه. WASM اومده که مکمل JS باشه و ضعف های اون رو برطرف کنه
زبان JS تو پلتفرم های زیادی استفاده میشه و جامعه بسیار بزرگی داره پس نه WASM نه هیچ زبان دیگه ای نمی تونه اون رو کنار بزنه (حداقل به این زودی ها نه)
در واقع تنها مزیت منحصر به فرد JS سمت Front این بود که تنها پادشاه سمت مرورگر بود. ولی الان که امکان اجرای زبان های دیگه سمت مرورگر فراهم شده عملا راه برای ظهور پادشاه های دیگری هم فراهم شده
یکی از کارهای دیگری که در این زمینه انجام شده AssemblyScript هست که در واقع یک کامپایلر TypeScript به WASM هست که سینتکس کدش کاملا TS نیست ولی شبیه اونه و نهایتا کد های شما رو به WASM کامپایل میکنه
🔸در آخر نکته مهم اینه که که بدونین این تکنولوژی محکوم به اینه که آینده وب باشه!
یعنی حتی اگه این زبان از خودش هیچ آورده ای هم نداشته باشه بازم مسیر توسعه وب در آینده به سمت اون هدایت میشه (توسط دست های پشت پرده :دی) .
چرا؟ چون توسط بنیاد W3C (کنسرسیوم جهانی وب) به عنوان یه استاندارد شناخته شده و نیز شرکتای غولی همچون Google و Microsoft و Mozilla و Apple و Intel و Red Hat و... روش سرمایه گذاری کردن
میگن اگه میخوای پیش گوی خوبی باشی، آینده رو پیش بینی نکن، اون رو بساز. و این ها در واقع کسانی هستند که مسیر توسعه وب رو پیش بینی نمیکنند بلکه اون رو خودشون میسازند
🔰اگه میخواین بیشتر در مورد WebAssembly بدونین این مقاله خوبیه
_______________
@DotNetZoom
❇️ یه وایت بورد آنلاین خیلی خوب واسه کار های تیمی
🔸خیلی وقتا موقع کار تیمی لازم میشه با هم تیمی تون تعامل داشته باشین، روی وایت برد برای هم توضیح بدین، شکل رسم کنین و یا استیکی نوت بچسبونین
حالا که خیلی از برنامه نویسا به صورت ریموت کار میکنن وجود یه وایت بورد آنلاین خیلی میتونه کاربردی باشه
🔹سایت miro یه وایت برد آنلاین خیلی باحال و کاربردی هست که توش میتونین فلوچارت رسم کنین، با ماژیک شکل رسم کنین، Stiky Note بچسبونین و افراد مختلفی به اون متصل بشن و به صورت Real-time با هم دیگه تعامل کنن (البته پولیه ولی نسخه رایگانش تا محدودیت 3 تا بورد رو به شما میده)
🔰چند نمونه از کاربرد هاش برای تیم ها میتونه اینها باشه:
✔️ ترسیم فلوچارت و فرایند های بین فرم ها
✔️ ترسیم نیازمندی های پروژه
✔️ برنامه ریزی های گروهی
✔️ طوفان فکری و ایده پردازی جمعی
✔️ برگزاری رویداد های Event Storming جهت فهم بهتر دامنه
✔️ و...
https://miro.com/
__________________
@DotNetZoom
🔸خیلی وقتا موقع کار تیمی لازم میشه با هم تیمی تون تعامل داشته باشین، روی وایت برد برای هم توضیح بدین، شکل رسم کنین و یا استیکی نوت بچسبونین
حالا که خیلی از برنامه نویسا به صورت ریموت کار میکنن وجود یه وایت بورد آنلاین خیلی میتونه کاربردی باشه
🔹سایت miro یه وایت برد آنلاین خیلی باحال و کاربردی هست که توش میتونین فلوچارت رسم کنین، با ماژیک شکل رسم کنین، Stiky Note بچسبونین و افراد مختلفی به اون متصل بشن و به صورت Real-time با هم دیگه تعامل کنن (البته پولیه ولی نسخه رایگانش تا محدودیت 3 تا بورد رو به شما میده)
🔰چند نمونه از کاربرد هاش برای تیم ها میتونه اینها باشه:
✔️ ترسیم فلوچارت و فرایند های بین فرم ها
✔️ ترسیم نیازمندی های پروژه
✔️ برنامه ریزی های گروهی
✔️ طوفان فکری و ایده پردازی جمعی
✔️ برگزاری رویداد های Event Storming جهت فهم بهتر دامنه
✔️ و...
https://miro.com/
__________________
@DotNetZoom
❇️ یک پروژه FullStack سورس باز SPA با Angular 11 و Asp.Net Core 5.0
💎 تکنولوژی ها و امکانات :
✔️ASP.NET Core 3.1
✔️Entity Framework Core 3.1
✔️Sql Server and Sqlite supporte
✔️Identity Server 4
✔️Angular 8
✔️Secure - CSP Headers
✔️SignalR
✔️SASS
✔️Angular Best practices
✔️Clean Architecture
✔️PWA support
✔️SSR (Server side rendering)
✔️Fast Unit Testing with Jest.
✔️E2E testing with Protractor.
✔️Compodoc for Angular documentation
✔️Swagger as Api explorer
🔰مخزن گیتهاب
https://github.com/asadsahi/AspNetCoreSpa
_________________
@DotNetZoom
💎 تکنولوژی ها و امکانات :
✔️ASP.NET Core 3.1
✔️Entity Framework Core 3.1
✔️Sql Server and Sqlite supporte
✔️Identity Server 4
✔️Angular 8
✔️Secure - CSP Headers
✔️SignalR
✔️SASS
✔️Angular Best practices
✔️Clean Architecture
✔️PWA support
✔️SSR (Server side rendering)
✔️Fast Unit Testing with Jest.
✔️E2E testing with Protractor.
✔️Compodoc for Angular documentation
✔️Swagger as Api explorer
🔰مخزن گیتهاب
https://github.com/asadsahi/AspNetCoreSpa
_________________
@DotNetZoom
GitHub
GitHub - fullstackproltd/AspNetCoreSpa: Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo:
Asp.Net 7.0 & Angular 15 SPA Fullstack application with plenty of examples. Live demo: - GitHub - fullstackproltd/AspNetCoreSpa: Asp.Net 7.0 & Angular 15 SPA Fullstack application ...
❇️ ترجمه گروهی کتاب کدتمیز Clean Code
https://github.com/Noah1001000/clean-code-persian
____________________
@DotNetZoom
https://github.com/Noah1001000/clean-code-persian
____________________
@DotNetZoom
Forwarded from کدهک
آشنایی با Mini-Profiler
با استفاده از miniprofiler می توانید مدت زمانی که برای اجرای هر عملیات طول میکشد بدست آورید و پرفورمنس بخش های مختلف وبسایت خود را بررسی کنید .
https://youtu.be/83Vqz1lb3V4
با استفاده از miniprofiler می توانید مدت زمانی که برای اجرای هر عملیات طول میکشد بدست آورید و پرفورمنس بخش های مختلف وبسایت خود را بررسی کنید .
https://youtu.be/83Vqz1lb3V4
✅ سایت ساز Ghost : یک CMS ساده و سبک Nodejs ایی مناسب برای وبلاگ شخصی
اگه قصد راه اندازی یه بلاگ شخصی ساده و راحت دارین، سایت ساز Ghost شاید بهترین گزینه برای شما باشه
✔️ کلی تم زیبا و متنوع داره
✔️ کلی افزونه کاربردی داره
✔️ خیلی خوش دست و راحته
✔️ بسیار سبکه و میتونه از دیتابیس SQLite استفاده کنه
✔️ قابل سفارشی سازی هست و رایگانه
🔸مشاهده Demo و Showcase ها
🔹مشاهده مستندات و آموزش ها
🔰ریپازیتوری گیتهاب پروژ + طریقه استفاده
https://github.com/TryGhost/Ghost
___________________
@DotNetZoom
اگه قصد راه اندازی یه بلاگ شخصی ساده و راحت دارین، سایت ساز Ghost شاید بهترین گزینه برای شما باشه
✔️ کلی تم زیبا و متنوع داره
✔️ کلی افزونه کاربردی داره
✔️ خیلی خوش دست و راحته
✔️ بسیار سبکه و میتونه از دیتابیس SQLite استفاده کنه
✔️ قابل سفارشی سازی هست و رایگانه
🔸مشاهده Demo و Showcase ها
🔹مشاهده مستندات و آموزش ها
🔰ریپازیتوری گیتهاب پروژ + طریقه استفاده
https://github.com/TryGhost/Ghost
___________________
@DotNetZoom
✅ بررسی عملی CQRS - بخش اول: مقدمه ای بر CQRS
حتما راجب CQRS شنیده اید. در لغت CQRS مخفف Command and Qhery Responsibility Segregation می باشد که در اون سعی میکنیم مدل های خواندن و نوشتن و همچنین مسیر خواندن و نوشتن داده را از یکدیگر جدا کنیم. CQRS مزایای زیادی رو به همراه داره از جمله اینکه با جدا شدن مدل Read و Write میتونیم جداگانه روی هر کدوم optimization انجام بدیم و پرفرمنس مربوط به هر بخش رو جداگانه بهبود بدیم.
در این مقاله چند قسمتی به بررسی عملی CQRS می پردازیم و به تکنیک های ویژه پیاده سازی اون به وسیله الگوی Mediator و کتابخانه MediatR میپردازیم، و سعی میکنیم با جداسازی مدل های Read و Write و همچین دیتابیس های مربوط به هر بخش، یک سولوشن تمیز رو ارائه بدیم
#بابک_طارمی
🔰لینک مقاله:
https://vrgl.ir/01pUA
____________________
@DotNetZoom
حتما راجب CQRS شنیده اید. در لغت CQRS مخفف Command and Qhery Responsibility Segregation می باشد که در اون سعی میکنیم مدل های خواندن و نوشتن و همچنین مسیر خواندن و نوشتن داده را از یکدیگر جدا کنیم. CQRS مزایای زیادی رو به همراه داره از جمله اینکه با جدا شدن مدل Read و Write میتونیم جداگانه روی هر کدوم optimization انجام بدیم و پرفرمنس مربوط به هر بخش رو جداگانه بهبود بدیم.
در این مقاله چند قسمتی به بررسی عملی CQRS می پردازیم و به تکنیک های ویژه پیاده سازی اون به وسیله الگوی Mediator و کتابخانه MediatR میپردازیم، و سعی میکنیم با جداسازی مدل های Read و Write و همچین دیتابیس های مربوط به هر بخش، یک سولوشن تمیز رو ارائه بدیم
#بابک_طارمی
🔰لینک مقاله:
https://vrgl.ir/01pUA
____________________
@DotNetZoom
ویرگول
بررسی عملی CQRS- بخش اول: مقدمه ای بر CQRS
در این مقاله چند قسمتی، قرار است به صورت عمیق به بررسی CQRS بپردازیم و تکنیک های لازم برای پیاده سازی یک پروژه به صورت CQRS را بررسی کنیم
✅ افزونه Enhanced GitHub برای گیتهاب باز ها
این افزونه امکانات خوبی رو به گیتهاب شما اضافه میکنه
1- نمایش حجم ریپازیتوری
2- نمایش حجم هر فایل
3- امکان دانلود تک فایل دلخواه از ریپازیتوری
🔸لینک دانلود
https://chrome.google.com/webstore/detail/enhanced-github/anlikcnbgdeidpacdbdljnabclhahhmd
🔹مخزن گیتهاب و اموزش استفاده
https://github.com/softvar/github-plus
____________________
@DotNetZoom
این افزونه امکانات خوبی رو به گیتهاب شما اضافه میکنه
1- نمایش حجم ریپازیتوری
2- نمایش حجم هر فایل
3- امکان دانلود تک فایل دلخواه از ریپازیتوری
🔸لینک دانلود
https://chrome.google.com/webstore/detail/enhanced-github/anlikcnbgdeidpacdbdljnabclhahhmd
🔹مخزن گیتهاب و اموزش استفاده
https://github.com/softvar/github-plus
____________________
@DotNetZoom
✅ آموزش gRPC در ASP.NET Core - قسمت اول
جی آر پی سی (gRPC) یک فریمورک رایگان، پر سرعت، قدرتمند و متن بازِ RPC است که توسط Google توسعه داده شده.
توسط این فریمورک میتوان API هایی از نوع RPC ساخت. مکانیزم RPC این امکان رو به ما میده که API هایی توسط یک برنامه Server به بیرون ارائه بشه و Client ها بتونن اون ها رو فراخوانی کنن.
فریمورک gRPC برای تبادل دیتا بین کلاینت و سرور از Protocol Buffer (یا به اختصار protobuf) استفاده میکنه که یک کتابخونه Serializer به صورت باینری هست که بسیار سریع هست
و به خاطر مزایایی که gRPC داره، استفاده از اون برای تعامل بین Microservice ها خیلی مورد استقبال قرار گرفته
🔰از مزایای gRPC میشه به موارد زیر اشاره کرد
1️⃣ سریع تر از RESTful هست
2️⃣ بدلیل فشرده سازی ایی که توسط protobuf انجام میشه حجم دیتای کمتری رد و بدل میشه و درنتیجه سریعتر از JSON هست
3️⃣ از HTTP2 استفاده میکنه که نسبت به نسخه های قبلی HTTP سریعتر و امن تر هست
4️⃣ از 3 روش Streaming پشتیبانی میکنه: از کلاینت به سرور، از سرور به کلاینت، و نیز Streaming دو طرفه
5️⃣ ساختار contract-first داره و توی همه زبان ها میشه ازش استفاده کرد
در این مقاله میخواهیم یک آشنایی اجمالی با gRPC داشته باشیم و یک پروژه خیلی ساده رو با اون در ASP.NET Core پیاده سازی کنیم
#آرمین_شعیبی_نژاد
https://vrgl.ir/U1mV1
________________
@DotNetZoom
جی آر پی سی (gRPC) یک فریمورک رایگان، پر سرعت، قدرتمند و متن بازِ RPC است که توسط Google توسعه داده شده.
توسط این فریمورک میتوان API هایی از نوع RPC ساخت. مکانیزم RPC این امکان رو به ما میده که API هایی توسط یک برنامه Server به بیرون ارائه بشه و Client ها بتونن اون ها رو فراخوانی کنن.
فریمورک gRPC برای تبادل دیتا بین کلاینت و سرور از Protocol Buffer (یا به اختصار protobuf) استفاده میکنه که یک کتابخونه Serializer به صورت باینری هست که بسیار سریع هست
و به خاطر مزایایی که gRPC داره، استفاده از اون برای تعامل بین Microservice ها خیلی مورد استقبال قرار گرفته
🔰از مزایای gRPC میشه به موارد زیر اشاره کرد
1️⃣ سریع تر از RESTful هست
2️⃣ بدلیل فشرده سازی ایی که توسط protobuf انجام میشه حجم دیتای کمتری رد و بدل میشه و درنتیجه سریعتر از JSON هست
3️⃣ از HTTP2 استفاده میکنه که نسبت به نسخه های قبلی HTTP سریعتر و امن تر هست
4️⃣ از 3 روش Streaming پشتیبانی میکنه: از کلاینت به سرور، از سرور به کلاینت، و نیز Streaming دو طرفه
5️⃣ ساختار contract-first داره و توی همه زبان ها میشه ازش استفاده کرد
در این مقاله میخواهیم یک آشنایی اجمالی با gRPC داشته باشیم و یک پروژه خیلی ساده رو با اون در ASP.NET Core پیاده سازی کنیم
#آرمین_شعیبی_نژاد
https://vrgl.ir/U1mV1
________________
@DotNetZoom
ویرگول
آموزش gRPC در ASP.NET Core - قسمت اول
در این مقاله با gRPC به صورت اجمالی آشنا می شویم و یک gRPC سرویس خیلی ساده همراه با ASP.NET Core میسازیم.
This media is not supported in your browser
VIEW IN TELEGRAM
❇️ کدنویسی سریع تر و راحت تر در Visual Studio با این ترفند
🔶 توسط این قابلیت چیزایی که namespace شون رو using نکردین هم براتون توی IntelliSense میاره و زمانی که تایپ تون کامل بشه خودش namespace اش رو هم using میکنه. اینطوری دیگه لازم نیس نگران این باشین که فلان class یا extension method توی کدوم namespace بود (چیزی شبیه Resharper)
🔷 این قابلیت از قبل به Visual Studio 2019 اضافه شده ولی هنوز به صورت Experimental (آزمایشی) هست و به صورت پیشفرض فعال نیست
🔰 واسه فعال کردنش باید برین توی منوی Tools سپس گزینه Options رو انتخاب کنین و از قسمت زیر (یا سرچ کردن متن IntelliSense توی سرچ باکس)
▶️ TextEditor > C# > IntelliSense
و گزینه زیر رو "تیک کامل" بزنین.
✅ Show items for unimported namespaces (experimental)
___________________
@DotNetZoom
🔶 توسط این قابلیت چیزایی که namespace شون رو using نکردین هم براتون توی IntelliSense میاره و زمانی که تایپ تون کامل بشه خودش namespace اش رو هم using میکنه. اینطوری دیگه لازم نیس نگران این باشین که فلان class یا extension method توی کدوم namespace بود (چیزی شبیه Resharper)
🔷 این قابلیت از قبل به Visual Studio 2019 اضافه شده ولی هنوز به صورت Experimental (آزمایشی) هست و به صورت پیشفرض فعال نیست
🔰 واسه فعال کردنش باید برین توی منوی Tools سپس گزینه Options رو انتخاب کنین و از قسمت زیر (یا سرچ کردن متن IntelliSense توی سرچ باکس)
▶️ TextEditor > C# > IntelliSense
و گزینه زیر رو "تیک کامل" بزنین.
✅ Show items for unimported namespaces (experimental)
___________________
@DotNetZoom
❇️ افزونه Refined GitHub مخصوص Github باز های حرفه ای
اینقدر قابلیت های کاربردی و مفیدی که به گیتهاب شما اضافه میکنه زیادهههه، که نمیشه اصلا لیست کرد!
کافیه یه سر به لیست features هاش توی ریپازیتوریش بزنین
فقط به درد گیتهاب باز های حرفه ای میخوره نه اونایی که فقط از گیتهاب دانلود و clone و یا حتی pull, commit و push بلدن!
خیلی خیلی به درد کسایی میخوره که issue میزنن، fork میکنن، branch میسازن، pull request میزنن، comment میزارن و توی discussion ها فعال هستند.
🔸لینک دانلود افزونه مخصوص Chrome
https://chrome.google.com/webstore/detail/refined-github/hlepfoohegkhhmjieoechaddaejaokhf
🔹مخزن گیتهاب و اموزش استفاده
https://github.com/sindresorhus/refined-github
__________________
@DotNetZoom
اینقدر قابلیت های کاربردی و مفیدی که به گیتهاب شما اضافه میکنه زیادهههه، که نمیشه اصلا لیست کرد!
کافیه یه سر به لیست features هاش توی ریپازیتوریش بزنین
فقط به درد گیتهاب باز های حرفه ای میخوره نه اونایی که فقط از گیتهاب دانلود و clone و یا حتی pull, commit و push بلدن!
خیلی خیلی به درد کسایی میخوره که issue میزنن، fork میکنن، branch میسازن، pull request میزنن، comment میزارن و توی discussion ها فعال هستند.
🔸لینک دانلود افزونه مخصوص Chrome
https://chrome.google.com/webstore/detail/refined-github/hlepfoohegkhhmjieoechaddaejaokhf
🔹مخزن گیتهاب و اموزش استفاده
https://github.com/sindresorhus/refined-github
__________________
@DotNetZoom
✅ افزایش Performance با شرط گذاری روی Include ها در EF Core
میشه گفت مهم ترین و رایج ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروری هست؛ از واکشی فیلد های اضافی و غیر لازم گرفته تا استفاده بی رویه از Include به هنگام بارگزاری روابط و...
در این مقاله روش های مختلف شرط گزاری روی Include ها و بهینه سازی اونها رو بررسی میکنیم. همچنین روش های مختلف رو از نظر سرعت و میزانی memory allocation (تخصیص حافظه) مقایسه میکنیم
🔰لینک مقاله
https://vrgl.ir/JFkK4
______________
@DotNetZoom
میشه گفت مهم ترین و رایج ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروری هست؛ از واکشی فیلد های اضافی و غیر لازم گرفته تا استفاده بی رویه از Include به هنگام بارگزاری روابط و...
در این مقاله روش های مختلف شرط گزاری روی Include ها و بهینه سازی اونها رو بررسی میکنیم. همچنین روش های مختلف رو از نظر سرعت و میزانی memory allocation (تخصیص حافظه) مقایسه میکنیم
🔰لینک مقاله
https://vrgl.ir/JFkK4
______________
@DotNetZoom
ویرگول
شرط گذاری روی Include ها در EF Core
متداول ترین دلیل کاهش پرفرمنس توی پروژه ها، واکشی دیتای اضافی و کوئری های غیر ضروریه؛ اینو به تجربه توی اکثر پروژه هایی که بررسی کردم دیدم
✅ دان شدن سایت dotnettips.info و راه حل ها
متاسفانه چند روزیه سایت dotnettips.info بالا نمیاد و ظاهرا مشکل DNS پیدا کرده و دامین اش معلق شده
امیدواریم که زودتر این مشکل برطرف بشه ولی تا اون زمان 2 راه حل وجود داره
🔰بروزرسانی:
سایت فعلا از طریق آدرس زیر هم در دسترس هست
https://www.dntips.ir/
🔸راه اول و پیشنهادی : میتونین آرشیو کامل سایت رو از لینک زیر دانلود و مشاهده کنین
https://mega.nz/#F!eXgQlaLJ!Ky-mPPDvJkT9rlCaM2EJ-A
🔹راه بعدی که صرفا مختص به این سایت هم نیست و شما هر سایت دیگه ای که دان شده باشه رو میتونین مشاهده کنین اینه که از سایت web.archive.org استفاده کنین. این سایت یه Crawler (ربات خزنده) هست که سایت ها رو در زمان های مختلف بهشون سر میزنه و ازشون یه کپی Snapshot میگیره. بدین صورت امکانش هست که هر سایتی رو به صورت آفلاین مشاهده کنین (در این حالت ممکنه بعضی از عملکرد های سایت کار نکنه. همچنین این ربات گاها به سایت ها سر میزنه پس احتمال خیلی زیاد مطالب بروز نباشن)
مثلا این ادرس آخرین Snapshot سایت dotnettips.info هست
https://web.archive.org/web/20201121183655/https://dotnettips.info/
________________
@DotNetZoom
متاسفانه چند روزیه سایت dotnettips.info بالا نمیاد و ظاهرا مشکل DNS پیدا کرده و دامین اش معلق شده
امیدواریم که زودتر این مشکل برطرف بشه ولی تا اون زمان 2 راه حل وجود داره
🔰بروزرسانی:
سایت فعلا از طریق آدرس زیر هم در دسترس هست
https://www.dntips.ir/
🔸راه اول و پیشنهادی : میتونین آرشیو کامل سایت رو از لینک زیر دانلود و مشاهده کنین
https://mega.nz/#F!eXgQlaLJ!Ky-mPPDvJkT9rlCaM2EJ-A
🔹راه بعدی که صرفا مختص به این سایت هم نیست و شما هر سایت دیگه ای که دان شده باشه رو میتونین مشاهده کنین اینه که از سایت web.archive.org استفاده کنین. این سایت یه Crawler (ربات خزنده) هست که سایت ها رو در زمان های مختلف بهشون سر میزنه و ازشون یه کپی Snapshot میگیره. بدین صورت امکانش هست که هر سایتی رو به صورت آفلاین مشاهده کنین (در این حالت ممکنه بعضی از عملکرد های سایت کار نکنه. همچنین این ربات گاها به سایت ها سر میزنه پس احتمال خیلی زیاد مطالب بروز نباشن)
مثلا این ادرس آخرین Snapshot سایت dotnettips.info هست
https://web.archive.org/web/20201121183655/https://dotnettips.info/
________________
@DotNetZoom
mega.nz
MEGA provides free cloud storage with convenient and powerful always-on privacy. Claim your free 20GB now
✅ بررسی عملی CQRS- بخش دوم: بررسی الگوی Mediator با استفاده از کتابخانه MediatR
در بخش قبل به طور اجمالی با CQRS آشنا شدیم و اشاره کردیم که الگوی Mediator ، سولوشن تمیز تری را ارائه میدهد و باعث ایجاد Loose Coupling میشود.
یکی از ابزار های موجود در دات نت برای ایجاد الگوی Mediator ، کتابخانه MediatR ساخته جیمی بوگارد است. کار با این کتابخانه بسیار سرراست و راحت است و ویژگی های بسیار خوبی برای Request Pipelining و همچنین الگوی Pub/Sub را به همراه خود دارد
در این مقاله به بررسی کامل این کتابخانه محبوب، ویژگی های آن و پیاده سازی تکنیک هایی مانند Logging ، Unit of Work و... به وسیله این کتاب خانه میپردازیم
#بابک_طارمی
https://vrgl.ir/0a7QA
______________
@DotNetZoom
در بخش قبل به طور اجمالی با CQRS آشنا شدیم و اشاره کردیم که الگوی Mediator ، سولوشن تمیز تری را ارائه میدهد و باعث ایجاد Loose Coupling میشود.
یکی از ابزار های موجود در دات نت برای ایجاد الگوی Mediator ، کتابخانه MediatR ساخته جیمی بوگارد است. کار با این کتابخانه بسیار سرراست و راحت است و ویژگی های بسیار خوبی برای Request Pipelining و همچنین الگوی Pub/Sub را به همراه خود دارد
در این مقاله به بررسی کامل این کتابخانه محبوب، ویژگی های آن و پیاده سازی تکنیک هایی مانند Logging ، Unit of Work و... به وسیله این کتاب خانه میپردازیم
#بابک_طارمی
https://vrgl.ir/0a7QA
______________
@DotNetZoom
ویرگول
بررسی عملی CQRS- بخش دوم: بررسی الگوی Mediator با استفاده از کتابخانه MediatR
در این بخش به یکی از ملزومات پیاده سازی CQRS یعنی الگوی Mediator و کتابخانه MediatR می پردازیم
✅ کتابخانه DbContext مخصوص MongoDb (مشابه Entity Framework)
اگه قبلا با EF یا EF Core کار کردین و الان میخواین از MongoDb استفاده کنین یکی از راحت ترین گزینه ها کتابخانه MongoFramework هست
این کتابخونه یک رابط کاربری (Interface) مشابه Entity Framework رو در اختیارتون میذاره یعنی یه کلاس DbContext و یه سری متد مشابه EF در اختیارتون میذاره تا بتونین تجربه مشابهی رو باهاش داشته باشین، متنها با MongoDb
🔰مثلا :
✔️ امکان داشتن DbContext و DbSet ها
✔️ وجود متد SaveChange و ترانزکشنال بودن اون
✔️ امکان استفاده از Attribute ها روی entity ها و property هاتون و مپ کردن اونها به دیتابیس mongo
✔️ امکان ایندکس گذاری توسط Attibute ها
✔️ وجود قابلیت Change Tracker مشابه EF
✔️ قابلیت partial update (بروزرسانی فقط فیلد های تغییر پیدا کرده)
🔰نکته:
🔸دقت داشته باشین که این کتابخونه یک پروایدر مخصوص EF Core نیست و روی اون قابل نصب کردن باشه؛ کلا یه کتابخونه جداست که فقط مشابه اون عمل میکنه
🔹هرچند که این کتابخونه سعی کرده خودشو خیلی شبیه به EF Core کنه و امکانات اون رو تو خوش فراهم کنه ولی به دلیل تفاوت ساختار Sql و NoSql این کار به صورت 100% ایی قابل انجام نیست. پس این کتابخونه هم یه سری از امکانات EF Core (مخصوصا تو سطح پیشرفته، بسیاری از امکاناتش) رو نداره
🔸این کتابخونه برای کار های ساده و مبتدی خوبه (مثلا برای کسانی که میخوان mongo بلد نیستن ولی میخوان یه استفاده حداقلی و البته راحت ازش داشته باشین خوبه)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ قطعا پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/TurnerSoftware/MongoFramework
__________________
@DotNetZoom
اگه قبلا با EF یا EF Core کار کردین و الان میخواین از MongoDb استفاده کنین یکی از راحت ترین گزینه ها کتابخانه MongoFramework هست
این کتابخونه یک رابط کاربری (Interface) مشابه Entity Framework رو در اختیارتون میذاره یعنی یه کلاس DbContext و یه سری متد مشابه EF در اختیارتون میذاره تا بتونین تجربه مشابهی رو باهاش داشته باشین، متنها با MongoDb
🔰مثلا :
✔️ امکان داشتن DbContext و DbSet ها
✔️ وجود متد SaveChange و ترانزکشنال بودن اون
✔️ امکان استفاده از Attribute ها روی entity ها و property هاتون و مپ کردن اونها به دیتابیس mongo
✔️ امکان ایندکس گذاری توسط Attibute ها
✔️ وجود قابلیت Change Tracker مشابه EF
✔️ قابلیت partial update (بروزرسانی فقط فیلد های تغییر پیدا کرده)
🔰نکته:
🔸دقت داشته باشین که این کتابخونه یک پروایدر مخصوص EF Core نیست و روی اون قابل نصب کردن باشه؛ کلا یه کتابخونه جداست که فقط مشابه اون عمل میکنه
🔹هرچند که این کتابخونه سعی کرده خودشو خیلی شبیه به EF Core کنه و امکانات اون رو تو خوش فراهم کنه ولی به دلیل تفاوت ساختار Sql و NoSql این کار به صورت 100% ایی قابل انجام نیست. پس این کتابخونه هم یه سری از امکانات EF Core (مخصوصا تو سطح پیشرفته، بسیاری از امکاناتش) رو نداره
🔸این کتابخونه برای کار های ساده و مبتدی خوبه (مثلا برای کسانی که میخوان mongo بلد نیستن ولی میخوان یه استفاده حداقلی و البته راحت ازش داشته باشین خوبه)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ قطعا پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/TurnerSoftware/MongoFramework
__________________
@DotNetZoom
www.nuget.org
MongoFramework 0.26.1
An "Entity Framework"-like interface for the MongoDB C# Driver
#سری_معرفی_وسایت_های_برتر
✅ معرفی 10 سایت برتر (سری پنجم)
در مورد #C و NET Core. و ASP.NET Core
🔸توی این سری پست ها هربار 10 وبسایت برتر که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم
اینا منابعی هستند که معمولا خودم دنبالشون میکنم
1️⃣ https://enterprisecraftsmanship.com/
2️⃣ https://blog.ploeh.dk/
3️⃣ https://www.kamilgrzybek.com/
4️⃣ https://daveabrock.com/
5️⃣ https://thomaslevesque.com/
6️⃣ https://blog.miguelbernard.com/
7️⃣ https://josef.codes/
8️⃣ https://procodeguide.com/
9️⃣ https://www.thereformedprogrammer.net/
🔟 https://dotnetthoughts.net/
_________________
@DotNetZoom
✅ معرفی 10 سایت برتر (سری پنجم)
در مورد #C و NET Core. و ASP.NET Core
🔸توی این سری پست ها هربار 10 وبسایت برتر که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم
اینا منابعی هستند که معمولا خودم دنبالشون میکنم
1️⃣ https://enterprisecraftsmanship.com/
2️⃣ https://blog.ploeh.dk/
3️⃣ https://www.kamilgrzybek.com/
4️⃣ https://daveabrock.com/
5️⃣ https://thomaslevesque.com/
6️⃣ https://blog.miguelbernard.com/
7️⃣ https://josef.codes/
8️⃣ https://procodeguide.com/
9️⃣ https://www.thereformedprogrammer.net/
🔟 https://dotnetthoughts.net/
_________________
@DotNetZoom
✅معرفی کتابخانه MongoDbGenericRepository
قبلا کتابخونه MongoFramework رو معرفی کردیم که یه رابط کاربری شبیه Entity Framework رو برای کار با MongoDb در اختیارمون میذاشت
اون کتابخونه ضمن مزایا و راحتیش، یه سری معایب هم داره چرا که با دید EF طراحی شده و برای استفاده های پیشرفته تر و کاملتر از MongoDb دستمون رو بسته نگه میداره
کتابخانه MongoDbGenericRepository یک wrapper روی درایور سی شارپ MongoDb هست و سعی کرده یه پیاده سازی از Repository ارائه بده.
این کتابخونه نسبت به قبلی، توی سفارشی سازی و استفاده بیشتر و پیشرفته تر از امکانات mongo دستمون رو باز تر میگذاره که طبیعتا نیازمند این هست که دانش بیشتر هم از مونگو داشته باشین
🔰نکته:
🔸این کتابخونه برای کار های متوسط انتخاب خوبیه (مثلا برای کسانی که تا حدودی mongo بلدن و میخوان راحت تر ازش استفاده کنن)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ خیلی پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/alexandre-spieser/mongodb-generic-repository
______________
@DotNetZoom
قبلا کتابخونه MongoFramework رو معرفی کردیم که یه رابط کاربری شبیه Entity Framework رو برای کار با MongoDb در اختیارمون میذاشت
اون کتابخونه ضمن مزایا و راحتیش، یه سری معایب هم داره چرا که با دید EF طراحی شده و برای استفاده های پیشرفته تر و کاملتر از MongoDb دستمون رو بسته نگه میداره
کتابخانه MongoDbGenericRepository یک wrapper روی درایور سی شارپ MongoDb هست و سعی کرده یه پیاده سازی از Repository ارائه بده.
این کتابخونه نسبت به قبلی، توی سفارشی سازی و استفاده بیشتر و پیشرفته تر از امکانات mongo دستمون رو باز تر میگذاره که طبیعتا نیازمند این هست که دانش بیشتر هم از مونگو داشته باشین
🔰نکته:
🔸این کتابخونه برای کار های متوسط انتخاب خوبیه (مثلا برای کسانی که تا حدودی mongo بلدن و میخوان راحت تر ازش استفاده کنن)
🔹ولی برای کار ها پیشرفته و پروژه های بزرگ خیلی پیشنهاد نمیکنم. در اون سطح بهترین روش استفاده از خود درایور سی شارپ mongodb هست.
🔰ریپازیتوری گیتهاب پروژ به همراه آموزش:
https://github.com/alexandre-spieser/mongodb-generic-repository
______________
@DotNetZoom
GitHub
GitHub - alexandre-spieser/mongodb-generic-repository: An example of generic repository implementation using the MongoDB C# Sharp…
An example of generic repository implementation using the MongoDB C# Sharp 2.0 driver (async) - alexandre-spieser/mongodb-generic-repository
❇️ نواقص درایور سی شارپ MongoDb
درایور سی شارپ MongoDb یه سری نواقص داره و هنوز به بلوغ کافی نرسیده، مخصوصا توی parser دستورات Linq اش به کوئری های mongo خیلی جای کار داره
پس اگه از MongoDb تو پروژه های خودتون استفاده میکنین یا میخواین بکنین حواستون باشه
تو این ریپازیتوری چند تا باگ خیلی ساده و بدیهی ازش رو مثال زدم
https://github.com/mjebrahimi/MongoDb.Bugs
🔰به عنوان مثال:
1️⃣ شما نمیتونین روی کالشن ها از شرط Contains() == false استفاده کنین
2️⃣ شما نمیتونین از شرط ("text")Contains روی یه فیلد متنی درون یه Embedded Document استفاده کنین
3️⃣ شما نمیتونین از دستور ()ToList روی Embedded Documents ها استفاده کنین
4️⃣ شما نمیتونین از متد ProjectTo کتابخانه AutoMapper برای مپ کردن Embedded Document ها استفاده کنین
🔰نکته:
🔸اینها هیچکدوم محدودیت های خود MongoDb نیستند بلکه نواقص کتابخانه درایور سی شارپ اون هست. درواقع Parser ایی که قراره Expression Tree حاصل از دستورات Linq رو به کوئری های mongo ترجمه کنه ضعف داره
🔹این باگ ها رو قبلا گزارش کردم و همگی تائید شدند و قرار هست در آینده برطرفش کنن ولی فعلا زمانش مشخص نیس. طبق صحبت هایی که داشتیم ظاهرا میخوان درایورش رو بازنویسی کنن و توی اون نسخه تمامی این مشکلات برطرف خواهد شد
🔸جهت رفع بعضی از این مشکل ها مادامی که این باگ ها برطرف بشه میتونین از کوئری نویسی دستی به جای linq استفاده کنین
🔹خود mongodb به لحاظ کوئری نویسی بسیار قدرتمند هست و خیلی کار ها رو میشه باهاش کرد که با linq اصلا امکان پذیر نیست (در واقع اصلا متد معادلش توی linq وجود نداره) پس پیشنهاد میکنم برای کوئری های پیچیده حتما به صورت دستی کوئری بنویسین؛ اینطوری میتونین کوئری های های بهینه تر و قدرتمند تری رو ایجاد کنین
____________________
@DotNetZoom
درایور سی شارپ MongoDb یه سری نواقص داره و هنوز به بلوغ کافی نرسیده، مخصوصا توی parser دستورات Linq اش به کوئری های mongo خیلی جای کار داره
پس اگه از MongoDb تو پروژه های خودتون استفاده میکنین یا میخواین بکنین حواستون باشه
تو این ریپازیتوری چند تا باگ خیلی ساده و بدیهی ازش رو مثال زدم
https://github.com/mjebrahimi/MongoDb.Bugs
🔰به عنوان مثال:
1️⃣ شما نمیتونین روی کالشن ها از شرط Contains() == false استفاده کنین
2️⃣ شما نمیتونین از شرط ("text")Contains روی یه فیلد متنی درون یه Embedded Document استفاده کنین
3️⃣ شما نمیتونین از دستور ()ToList روی Embedded Documents ها استفاده کنین
4️⃣ شما نمیتونین از متد ProjectTo کتابخانه AutoMapper برای مپ کردن Embedded Document ها استفاده کنین
🔰نکته:
🔸اینها هیچکدوم محدودیت های خود MongoDb نیستند بلکه نواقص کتابخانه درایور سی شارپ اون هست. درواقع Parser ایی که قراره Expression Tree حاصل از دستورات Linq رو به کوئری های mongo ترجمه کنه ضعف داره
🔹این باگ ها رو قبلا گزارش کردم و همگی تائید شدند و قرار هست در آینده برطرفش کنن ولی فعلا زمانش مشخص نیس. طبق صحبت هایی که داشتیم ظاهرا میخوان درایورش رو بازنویسی کنن و توی اون نسخه تمامی این مشکلات برطرف خواهد شد
🔸جهت رفع بعضی از این مشکل ها مادامی که این باگ ها برطرف بشه میتونین از کوئری نویسی دستی به جای linq استفاده کنین
🔹خود mongodb به لحاظ کوئری نویسی بسیار قدرتمند هست و خیلی کار ها رو میشه باهاش کرد که با linq اصلا امکان پذیر نیست (در واقع اصلا متد معادلش توی linq وجود نداره) پس پیشنهاد میکنم برای کوئری های پیچیده حتما به صورت دستی کوئری بنویسین؛ اینطوری میتونین کوئری های های بهینه تر و قدرتمند تری رو ایجاد کنین
____________________
@DotNetZoom
GitHub
GitHub - mjebrahimi/MongoDb.Bugs: This repo reproduce some bugs of MongoDB C# Driver.
This repo reproduce some bugs of MongoDB C# Driver. - GitHub - mjebrahimi/MongoDb.Bugs: This repo reproduce some bugs of MongoDB C# Driver.
Forwarded from کدهک
آموزش DDD
در این دوره کتابخانه ی MediatR از مقدماتی تا پیشرفته آموزش داده میشود . درباره نحوه پیاده کردن Value Object و Entity و Domain Events و Aggregates ها صحبت می کنیم در ادامه به موضوع اعتبار سنجی، گزارش خطا، ذخیره سازی اطلاعات در دیتابیس های اسنادی و مفاهیمی چون Domain Events و Event Sourcing می پردازیم.
کد تخفیف 25 درصد : ddd
https://codehaks.com/go/ddd
در این دوره کتابخانه ی MediatR از مقدماتی تا پیشرفته آموزش داده میشود . درباره نحوه پیاده کردن Value Object و Entity و Domain Events و Aggregates ها صحبت می کنیم در ادامه به موضوع اعتبار سنجی، گزارش خطا، ذخیره سازی اطلاعات در دیتابیس های اسنادی و مفاهیمی چون Domain Events و Event Sourcing می پردازیم.
کد تخفیف 25 درصد : ddd
https://codehaks.com/go/ddd