Forwarded from کدهک
با استفاده از تگ هلپر Cache می توانید محتوای صفحات وب را در حافظه کش ذخیره کنید.
https://codehaks.com/go/xrt
https://codehaks.com/go/xrt
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ پیادهسازی Logging حرفه ای در ASP .NET Core توسط Serilog و ElasticSearch و Kibana
معمولا در معماری میکروسرویس ها، مانیتور کردن و ثبت لاگ های هر میکرو سرویس یک چالش بزرگ محسوب میشه. اینکه ممکنه هر میکروسرویس لاگ مربوط به خودش رو نتونه ثبت کنه و یا خطای مربوط به یک ریکوئست چند میکروسرویس دخیلش باشن و نشه سورس خطا رو پیدا کرد. و در صورت ثبت لاگ ها، چگونه بتونیم از اون ها گزارش بگیریم و یا در صورت نیاز نمودار و چارت براشون درست کنیم.
نوشتن چنین سیستمی چالش های خاص خودش رو داره و موارد بسیار زیادی هست که باید براشون درنظر گرفت مثل ثبت لاگ ها و index کردن اون ها،فیلتر کردن لاگ ها بر حسب سطح یا زمان، قابلیت جستجو بین رکورد های مختلف و همچنین ردیابی یک لاگ که ممکنه چند میکروسرویس در ایجاد اون دخیل باشن
خوشبختانه برای اینکار ابزار های بسیار خوبی وجود داره که کار ما رو به عنوان برنامه نویس بسیار آسون میکنه
یکی از این ابزارهاElasticSearch هست که کار رو برای پیاده سازی Centerlized Logging بسیار آسون میکنه چون در کنار اون میشه از Kibana هم به عنوان داشبورد استفاده کرد که برای فیلتر کردن لاگ ها و همچنین Formatting مناسب لاگ ها ابزار های خیلی خوبی رو در اختیارمون میذاره.
همچنین Trace کردن لاگ ها با استفاده از یک TraceId کاستوم بسیار ساده تر میشه که خود Asp Net Core Logger این امکانات رو به صورت پیش فرض در اختیارمون قرار میده.
در این مقاله به بررسی و پیاده سازی چنین سیستمی در Asp Net Core میپردازیم. همچنین با نصب و تنظیمات ElasticSearch و Kibana در محیط ويندوز و داکر آشنا میشیم
🔰لینک مقاله:
https://vrgl.ir/pcnWp
#بابک_طارمی
________________
@DotNetZoom
معمولا در معماری میکروسرویس ها، مانیتور کردن و ثبت لاگ های هر میکرو سرویس یک چالش بزرگ محسوب میشه. اینکه ممکنه هر میکروسرویس لاگ مربوط به خودش رو نتونه ثبت کنه و یا خطای مربوط به یک ریکوئست چند میکروسرویس دخیلش باشن و نشه سورس خطا رو پیدا کرد. و در صورت ثبت لاگ ها، چگونه بتونیم از اون ها گزارش بگیریم و یا در صورت نیاز نمودار و چارت براشون درست کنیم.
نوشتن چنین سیستمی چالش های خاص خودش رو داره و موارد بسیار زیادی هست که باید براشون درنظر گرفت مثل ثبت لاگ ها و index کردن اون ها،فیلتر کردن لاگ ها بر حسب سطح یا زمان، قابلیت جستجو بین رکورد های مختلف و همچنین ردیابی یک لاگ که ممکنه چند میکروسرویس در ایجاد اون دخیل باشن
خوشبختانه برای اینکار ابزار های بسیار خوبی وجود داره که کار ما رو به عنوان برنامه نویس بسیار آسون میکنه
یکی از این ابزارهاElasticSearch هست که کار رو برای پیاده سازی Centerlized Logging بسیار آسون میکنه چون در کنار اون میشه از Kibana هم به عنوان داشبورد استفاده کرد که برای فیلتر کردن لاگ ها و همچنین Formatting مناسب لاگ ها ابزار های خیلی خوبی رو در اختیارمون میذاره.
همچنین Trace کردن لاگ ها با استفاده از یک TraceId کاستوم بسیار ساده تر میشه که خود Asp Net Core Logger این امکانات رو به صورت پیش فرض در اختیارمون قرار میده.
در این مقاله به بررسی و پیاده سازی چنین سیستمی در Asp Net Core میپردازیم. همچنین با نصب و تنظیمات ElasticSearch و Kibana در محیط ويندوز و داکر آشنا میشیم
🔰لینک مقاله:
https://vrgl.ir/pcnWp
#بابک_طارمی
________________
@DotNetZoom
Forwarded from اِسکیلی Skilly
Forwarded from اِسکیلی Skilly
Forwarded from کدهک
در این ویدیو با استفاده از Cancelation Token اجرای عملیات را در سمت سرور متوقف می کنیم و سپس مکانیزم TimeOut را درون یک حلقه پیاده می کنیم.
https://tinyurl.com/y6srku6x
https://tinyurl.com/y6srku6x
آشنایی با GUID
مقدار GUID یک عدد 128 است که به صورت 32 کاراکتر در مبنای 16 نمایش داده میشود و شامل 4 خط تیره است. نسخه ها و ویرایش مختلفی از آن ارائه شده که در عدد ساخته شده درج میشود.
از GUID یا Globally Unique Identifier برای ایجاد کلید اصلی جداول دیتابیس استفاده میشود.
شانس تکراری بودن مقدار GUID صفر نیست اما مقدار تصادفی که ایجاد میشود آنقدر بزرگ است که شانس تکراری شدن آن حتی بعد از تولید هزاران میلیارد رکورد باز هم نزدیک به صفر است.
در دهه 80 میلادی از GUID در سیستم عامل Apollo ناسا استفاده میشد. بعد در سیستم عامل ویندوز و شبکه (آدرس MAC) مورد استفاده قرار گرفت.
مزیت اصلی GUID این است که بدون مراجعه به دیتابیس و بررسی سایر رکوردها می توان یک کلید غیر تکراری ایجاد کرد. این مسئله در معماری میکروسرویس و دیتابیس های توزیع شده کاربرد زیادی دارد.
دیتابیس SQL Server و فریم ورک دات نت مستقیما از این نوع داده پشتیبانی میکنند.
مقدار GUID یک عدد 128 است که به صورت 32 کاراکتر در مبنای 16 نمایش داده میشود و شامل 4 خط تیره است. نسخه ها و ویرایش مختلفی از آن ارائه شده که در عدد ساخته شده درج میشود.
از GUID یا Globally Unique Identifier برای ایجاد کلید اصلی جداول دیتابیس استفاده میشود.
شانس تکراری بودن مقدار GUID صفر نیست اما مقدار تصادفی که ایجاد میشود آنقدر بزرگ است که شانس تکراری شدن آن حتی بعد از تولید هزاران میلیارد رکورد باز هم نزدیک به صفر است.
در دهه 80 میلادی از GUID در سیستم عامل Apollo ناسا استفاده میشد. بعد در سیستم عامل ویندوز و شبکه (آدرس MAC) مورد استفاده قرار گرفت.
مزیت اصلی GUID این است که بدون مراجعه به دیتابیس و بررسی سایر رکوردها می توان یک کلید غیر تکراری ایجاد کرد. این مسئله در معماری میکروسرویس و دیتابیس های توزیع شده کاربرد زیادی دارد.
دیتابیس SQL Server و فریم ورک دات نت مستقیما از این نوع داده پشتیبانی میکنند.
Forwarded from اِسکیلی Skilly
🔈 امنیت در برنامه نویسی وب: بخش چهارم، آشنایی با انواع روش های رمزنگاری/رمزگشایی، Hash ، و Encoding:
لینک ویدئو در اینستاگرام
#رمزنگاری
#رمزگشایی
#امنیت
#داده
#برنامه_نویس
#برنامه_نویسی
#encryption
#decryption
#data
#security
#software
#development
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
لینک ویدئو در اینستاگرام
#رمزنگاری
#رمزگشایی
#امنیت
#داده
#برنامه_نویس
#برنامه_نویسی
#encryption
#decryption
#data
#security
#software
#development
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
✅ وب اسمبلی (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️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emscripten و 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️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emscripten و 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
گیتهاب برمیگردد
طبق اعلام رسمی مدیر عامل گیتهاب به زودی تحریم های آمریکا روی این سرویس برای ایرانی ها برداشته میشود.
گیتهاب از یک سال و نیم پیش بعضی از سرویسهای خود را به روی ایرانی ها بست و دلیل آن را پیروی از قوانین ایالات متحده اعلام کرد. این موضوع البته با اعتراض گسترده ایرانی ها و دیگر کاربران گیتهاب روبرو شد.
طبق گفته مدیر عامل گیتهاب از همان زمان این شرکت مذاکرات خود را با دولت آمریکا آغاز کرده و حالا موفق شده مجوزهای لازم برای برگردادن سرویس های مسدود را دریافت کند.
به نظر میرسد روند فعال سازی در طی روزهای آینده اجرایی شود و دوباره می توانید ریپوزیتوری های خصوصی در گیتهاب داشته باشید یا از خدمات پولی آن استفاده کنید.
این مجوزها فقط دسترسی کاربران ایرانی را ممکن میکند و کاربران سایر کشورها مثل سوریه و کره شمالی شامل آن نمیشوند.
مایکروسافت باز هم نشان داد تصمیمش برای حمایت از توسعه دهندگان نرم افزار جدی است و اولین شرکتی است که با انجام کار حقوقی زمانبر و پر هزینه موفق شد مشکل تحریم ها را حل کند. امید است سایر غولهای نرم افزار با الگو برداری از مایکروسافت در جهت دنیای بدون تبعیض گام بردارند.
طبق اعلام رسمی مدیر عامل گیتهاب به زودی تحریم های آمریکا روی این سرویس برای ایرانی ها برداشته میشود.
گیتهاب از یک سال و نیم پیش بعضی از سرویسهای خود را به روی ایرانی ها بست و دلیل آن را پیروی از قوانین ایالات متحده اعلام کرد. این موضوع البته با اعتراض گسترده ایرانی ها و دیگر کاربران گیتهاب روبرو شد.
طبق گفته مدیر عامل گیتهاب از همان زمان این شرکت مذاکرات خود را با دولت آمریکا آغاز کرده و حالا موفق شده مجوزهای لازم برای برگردادن سرویس های مسدود را دریافت کند.
به نظر میرسد روند فعال سازی در طی روزهای آینده اجرایی شود و دوباره می توانید ریپوزیتوری های خصوصی در گیتهاب داشته باشید یا از خدمات پولی آن استفاده کنید.
این مجوزها فقط دسترسی کاربران ایرانی را ممکن میکند و کاربران سایر کشورها مثل سوریه و کره شمالی شامل آن نمیشوند.
مایکروسافت باز هم نشان داد تصمیمش برای حمایت از توسعه دهندگان نرم افزار جدی است و اولین شرکتی است که با انجام کار حقوقی زمانبر و پر هزینه موفق شد مشکل تحریم ها را حل کند. امید است سایر غولهای نرم افزار با الگو برداری از مایکروسافت در جهت دنیای بدون تبعیض گام بردارند.
Forwarded from اِسکیلی Skilly
🔈 خاطرات و تجربیات: ارائه کارهای خیلی خاص و خلاقانه به کارفرما
لینک ویدئو در اینستاگرام
#تجریبات
#خاطرات
#برنامه_نویس
#برنامه_نویسی
#خلاقیت
#ارائه
#روابط
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
لینک ویدئو در اینستاگرام
#تجریبات
#خاطرات
#برنامه_نویس
#برنامه_نویسی
#خلاقیت
#ارائه
#روابط
#مهدی_کرامتی
@barnamenevis_org
@barnamenevis_net
https://barnamenevis.net
آشنایی با Mini-Profiler
با استفاده از miniprofiler می توانید مدت زمانی که برای اجرای هر عملیات طول میکشد بدست آورید و پرفورمنس بخش های مختلف وبسایت خود را بررسی کنید .
https://youtu.be/83Vqz1lb3V4
با استفاده از miniprofiler می توانید مدت زمانی که برای اجرای هر عملیات طول میکشد بدست آورید و پرفورمنس بخش های مختلف وبسایت خود را بررسی کنید .
https://youtu.be/83Vqz1lb3V4
Forwarded from اِسکیلی Skilly
🔈 نکات مهم در نوشتن رزومه
اگر در حال نوشتن رزومه برای معرفی خود با کارفرمایان هستید حتما این ویدئو را ببینید.
#رزومه
#resume
#cv
#مبتدی
#نکات
#مهم
#ضروری
#برنامه_نویس
#برنامه_نویسی
#مهدی_کرامتی
@barnamenevis_net
@barnamenevis_org
اگر در حال نوشتن رزومه برای معرفی خود با کارفرمایان هستید حتما این ویدئو را ببینید.
#رزومه
#resume
#cv
#مبتدی
#نکات
#مهم
#ضروری
#برنامه_نویس
#برنامه_نویسی
#مهدی_کرامتی
@barnamenevis_net
@barnamenevis_org
Forwarded from کدهک
در زبان سی شارپ کامپایلر Roslyn وظیفه ی Parse کردن و اعلام خطاهای Syntax را به عده دارد. در ادامه بهینه سازی انجام میدهد و کد میانی یا Intermediate Language را تولید می کند. این همان فایل dll یا exe برنامه ی شماست.
سپس در هنگام اجرا بسته به اینکه از چه پردازنده ای استفاده می کنید Just In Time Compiler دات نت که به RyuJIT معروف است شروع به کار میکند و در لحظه اجرای برنامه کد ماشین را تولید می کند.
استفاده از JIT کمک می کند برنامه به سخت افزار وابستگی مستقیم نداشته باشد و مجبور نباشیم برای هر سیستم عامل و سخت افزار جدا فایل جداگانه ای تولید کنیم.
در بعضی برنامه ها برای بالا بردن پرفورمنس از دستورات برداری استفاده میشود. چنانچه پردازنده از این دستورات پشتیبانی نکند برنامه خیلی کندتر از حالت بدون بردار اجرا میشود.
یکی از مشکلاتی که RyuJIT حل میکند بهینه سازی SIMD است. این ابزار می تواند بر اساس قابلیت های پردازنده کدهای برداری را به کدهای معمولی تبدیل کند تا حداکثر پرفورمنس بدست آید.
سپس در هنگام اجرا بسته به اینکه از چه پردازنده ای استفاده می کنید Just In Time Compiler دات نت که به RyuJIT معروف است شروع به کار میکند و در لحظه اجرای برنامه کد ماشین را تولید می کند.
استفاده از JIT کمک می کند برنامه به سخت افزار وابستگی مستقیم نداشته باشد و مجبور نباشیم برای هر سیستم عامل و سخت افزار جدا فایل جداگانه ای تولید کنیم.
در بعضی برنامه ها برای بالا بردن پرفورمنس از دستورات برداری استفاده میشود. چنانچه پردازنده از این دستورات پشتیبانی نکند برنامه خیلی کندتر از حالت بدون بردار اجرا میشود.
یکی از مشکلاتی که RyuJIT حل میکند بهینه سازی SIMD است. این ابزار می تواند بر اساس قابلیت های پردازنده کدهای برداری را به کدهای معمولی تبدیل کند تا حداکثر پرفورمنس بدست آید.
Forwarded from 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 را بررسی کنیم
Forwarded from اِسکیلی Skilly
🔈 چطوری یک برنامه نویس معروف بشویم، بخصوص در عرصه بین المللی
لینک ویدئو در اینستاگرام
#برنامه_نویس
#برنامه_نویسی
#معروف
#بین_المللی
#software
#developer
#international
#popular
@barnamenevis_net
@barnamenevis_org
https://barnamenevis.net
لینک ویدئو در اینستاگرام
#برنامه_نویس
#برنامه_نویسی
#معروف
#بین_المللی
#software
#developer
#international
#popular
@barnamenevis_net
@barnamenevis_org
https://barnamenevis.net
Forwarded from کدهک
ایجاد Service Extension در ASP NET Core
در فریم ورک ASP NET Core وابستگی ها از طریق Extension Method اضافه می شوند. مواردی مثل AddRazorPages یا AddDbContext در حقیق متدهای افزوده ای هستند که در پس زمینه سرویس تزریق می کنند. در این پست به بررسی نحوه ی پیاده سازی یک Service Extension برای دیتابیس LiteDb می پردازیم.
https://codehaks.com/go/jfm
در فریم ورک ASP NET Core وابستگی ها از طریق Extension Method اضافه می شوند. مواردی مثل AddRazorPages یا AddDbContext در حقیق متدهای افزوده ای هستند که در پس زمینه سرویس تزریق می کنند. در این پست به بررسی نحوه ی پیاده سازی یک Service Extension برای دیتابیس LiteDb می پردازیم.
https://codehaks.com/go/jfm