#سری_معرفی_وسایت_های_برتر
✅ معرفی 10 سایت های برتر (سری سوم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://fullstackmark.com/
2️⃣ https://www.syncfusion.com/blogs/
3️⃣ https://weblog.west-wind.com/
4️⃣ https://www.blog.jamesmichaelhickey.com/
5️⃣ https://logcorner.com/
6️⃣ https://cmatskas.com/
7️⃣ http://www.tugberkugurlu.com/
8️⃣ https://dotnetcoretutorials.com/
9️⃣ https://damienbod.com/
🔟 https://chrissainty.com/
_________________
@DotNetZoom
✅ معرفی 10 سایت های برتر (سری سوم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://fullstackmark.com/
2️⃣ https://www.syncfusion.com/blogs/
3️⃣ https://weblog.west-wind.com/
4️⃣ https://www.blog.jamesmichaelhickey.com/
5️⃣ https://logcorner.com/
6️⃣ https://cmatskas.com/
7️⃣ http://www.tugberkugurlu.com/
8️⃣ https://dotnetcoretutorials.com/
9️⃣ https://damienbod.com/
🔟 https://chrissainty.com/
_________________
@DotNetZoom
Fullstackmark
FullStack Mark - curiosity-driven development
Fullstack software development applying best practices and craftmanship.
Forwarded from کدهک
آموزش آپلود کردن فایل در ASP NET Core
در این ویدیو تمامی مراحل آپلود کردن فایل در ASP NET Core آموزش داده میشود. فایل با IFormFile از مرورگر کاربر دریافت میشود و در فولدر سرور کپی میشود. در ادامه با محدود کردن دسترسی به فایل آشنا میشوید.
https://codehaks.com/go/eoz
در این ویدیو تمامی مراحل آپلود کردن فایل در ASP NET Core آموزش داده میشود. فایل با IFormFile از مرورگر کاربر دریافت میشود و در فولدر سرور کپی میشود. در ادامه با محدود کردن دسترسی به فایل آشنا میشوید.
https://codehaks.com/go/eoz
✅ کتابخانه اعتبارسنجی FoolProof برای ASP.NET Core
خیلی وقتا لازم میشه یه سری اعتبارسنجی روی مقادیر ورودی کاربر داشته باشیم. مثلا مقدارش کمتر یا بیشتر از فلان مقدار نباشه و ... تو این شرایط معمولا خودمون میایم و یه Attribute Validation سفارشی ایجاد میکنیم (که تازه اعتبار سنجی سمت کلاینت با jQuery رو هم نداره و فقط سمت سرور چک میشه) ولی الان میخوام یه کتابخونه رو معرفی کنیم که کارتون رو خیلی راحت میکنه.
🔸کتابخانه FoolProof.Core تعداد زیادی Attribute برای اعتبار سنجی مقادیر کاربر داره که همگی علاوه بر Server-side از Client-side Validation هم پشتیبانی میکنن. نسخه قدیمی آن (foolproof) برای ASPNET MVC سابق است.
(آموزش استفاده از آن در سایت dotnettips) ولی این نسخه از ASPNET Core پیشتیبانی میکنه
🔹لیست Attribute های پشتیبانی شده:
✔️ Is
✔️ EqualTo
✔️ NotEqualTo
✔️ GreaterThan
✔️ LessThan
✔️ GreaterThanOrEqualTo
✔️ LessThanOrEqualTo
✔️ Improved required validators:
✔️ RequiredIf
✔️ RequiredIfNot
✔️ RequiredIfTrue
✔️ RequiredIfFalse
✔️ RequiredIfEmpty
✔️ RequiredIfNotEmpty
✔️ RequiredIfRegExMatch
✔️ RequiredIfNotRegExMatch
✔️ In
✔️ NotIn
🔰لینک پکیچ Nuget و مخزن گیتهاب
https://www.nuget.org/packages/FoolProof.Core/
https://github.com/rpgkaiser/FoolProof.Core
#FoolProof #Validation #اعتبارسنجی
__________________
@DotNetZoom
خیلی وقتا لازم میشه یه سری اعتبارسنجی روی مقادیر ورودی کاربر داشته باشیم. مثلا مقدارش کمتر یا بیشتر از فلان مقدار نباشه و ... تو این شرایط معمولا خودمون میایم و یه Attribute Validation سفارشی ایجاد میکنیم (که تازه اعتبار سنجی سمت کلاینت با jQuery رو هم نداره و فقط سمت سرور چک میشه) ولی الان میخوام یه کتابخونه رو معرفی کنیم که کارتون رو خیلی راحت میکنه.
🔸کتابخانه FoolProof.Core تعداد زیادی Attribute برای اعتبار سنجی مقادیر کاربر داره که همگی علاوه بر Server-side از Client-side Validation هم پشتیبانی میکنن. نسخه قدیمی آن (foolproof) برای ASPNET MVC سابق است.
(آموزش استفاده از آن در سایت dotnettips) ولی این نسخه از ASPNET Core پیشتیبانی میکنه
🔹لیست Attribute های پشتیبانی شده:
✔️ Is
✔️ EqualTo
✔️ NotEqualTo
✔️ GreaterThan
✔️ LessThan
✔️ GreaterThanOrEqualTo
✔️ LessThanOrEqualTo
✔️ Improved required validators:
✔️ RequiredIf
✔️ RequiredIfNot
✔️ RequiredIfTrue
✔️ RequiredIfFalse
✔️ RequiredIfEmpty
✔️ RequiredIfNotEmpty
✔️ RequiredIfRegExMatch
✔️ RequiredIfNotRegExMatch
✔️ In
✔️ NotIn
🔰لینک پکیچ Nuget و مخزن گیتهاب
https://www.nuget.org/packages/FoolProof.Core/
https://github.com/rpgkaiser/FoolProof.Core
#FoolProof #Validation #اعتبارسنجی
__________________
@DotNetZoom
www.nuget.org
FoolProof.Core 1.2.1
Migration to asp.net core of the "MVC Foolproof Validation" library.
❇️ نمونه معماری پیاده سازی شده با ASP.NET Core و Angular و DDD
Architecture with .NET Core 3.1, ASP.NET Core 3.1, Entity Framework Core 3.1, C#, Angular 9.1, Clean Code, SOLID, DDD, Code Analysis, Docker and more.
🔸Technologies
✔️ .NET Core 3.1
✔️ ASP.NET Core 3.1
✔️ Entity Framework Core 3.1
✔️ C# 8.0
✔️ Angular 9.1
✔️ Typenoscript
✔️ JWT
✔️ FluentValidation
✔️ Scrutor
✔️ Serilog
✔️ Docker
✔️ Azure DevOps
✔️ ...
🔹Practices
✔️ Clean Code
✔️ SOLID Principles
✔️ DDD (Domain-Driven Design)
✔️ Unit of Work Pattern
✔️ Repository Pattern
✔️ ...
https://github.com/rafaelfgx/Architecture
________________
@DotNetZoom
Architecture with .NET Core 3.1, ASP.NET Core 3.1, Entity Framework Core 3.1, C#, Angular 9.1, Clean Code, SOLID, DDD, Code Analysis, Docker and more.
🔸Technologies
✔️ .NET Core 3.1
✔️ ASP.NET Core 3.1
✔️ Entity Framework Core 3.1
✔️ C# 8.0
✔️ Angular 9.1
✔️ Typenoscript
✔️ JWT
✔️ FluentValidation
✔️ Scrutor
✔️ Serilog
✔️ Docker
✔️ Azure DevOps
✔️ ...
🔹Practices
✔️ Clean Code
✔️ SOLID Principles
✔️ DDD (Domain-Driven Design)
✔️ Unit of Work Pattern
✔️ Repository Pattern
✔️ ...
https://github.com/rafaelfgx/Architecture
________________
@DotNetZoom
GitHub
GitHub - rafaelfgx/Architecture: .NET, Angular, Clean Architecture, Clean Code, SOLID Principles, KISS Principle, DRY Principle…
.NET, Angular, Clean Architecture, Clean Code, SOLID Principles, KISS Principle, DRY Principle, Fail Fast Principle, Common Closure Principle, Common Reuse Principle, Acyclic Dependencies Principle...
✅ معرفی Design Pattern ها به همراه مثال در زبان های مختلف
یکی از بهترین سایت هایی که میشه به عنوان مرجع برای #DesignPattern ها بهش نگاه کرد سایت زیر هست.
این سایت خیلی روون و ساده الگو های برنامه نویسی رو توضیح داده، براشون مثال زده و توی زبان های مختلفی از جمله #C و JavaScript و Java و Python و ... پیاده سازیشون کرده
1️⃣ https://refactoring.guru/design-patterns/catalog
2️⃣ https://www.dofactory.com/net/design-patterns
🔰2تا ریپوی زیر هم پیاده سازی ایی از این دیزاین پترن ها در سی شارپ هست
1️⃣ https://github.com/exceptionnotfound/DesignPatterns
2️⃣ https://github.com/HamidMosalla/CSharpDesignPatterns
_____________________
@DotNetZoom
یکی از بهترین سایت هایی که میشه به عنوان مرجع برای #DesignPattern ها بهش نگاه کرد سایت زیر هست.
این سایت خیلی روون و ساده الگو های برنامه نویسی رو توضیح داده، براشون مثال زده و توی زبان های مختلفی از جمله #C و JavaScript و Java و Python و ... پیاده سازیشون کرده
1️⃣ https://refactoring.guru/design-patterns/catalog
2️⃣ https://www.dofactory.com/net/design-patterns
🔰2تا ریپوی زیر هم پیاده سازی ایی از این دیزاین پترن ها در سی شارپ هست
1️⃣ https://github.com/exceptionnotfound/DesignPatterns
2️⃣ https://github.com/HamidMosalla/CSharpDesignPatterns
_____________________
@DotNetZoom
Forwarded from کدهک
آشنایی با Docker
داکر ابزاری برای توزیع و اجرای نرم افزار است که مشکل سازگاری با سیستم عامل های مختلف را حل میکند. این ابزار امروزه همه جا مورد استفاده قرار میگیرد و خوب است به عنوان توسعه دهنده ی نرم افزار درباره آن بیشتر بدانید. در این ویدیو به معرفی داکر می پردازیم و در ادامه از Docker در یک پروژه ASP NET Core استفاده می کنیم.
https://cutt.ly/ortrfXx
داکر ابزاری برای توزیع و اجرای نرم افزار است که مشکل سازگاری با سیستم عامل های مختلف را حل میکند. این ابزار امروزه همه جا مورد استفاده قرار میگیرد و خوب است به عنوان توسعه دهنده ی نرم افزار درباره آن بیشتر بدانید. در این ویدیو به معرفی داکر می پردازیم و در ادامه از Docker در یک پروژه ASP NET Core استفاده می کنیم.
https://cutt.ly/ortrfXx
Forwarded from کدهک
آشنایی با Docker - قسمت دوم
در این ویدیو با استفاده از Docker دیتابیس Redis رو نصب و اجرا می کنیم
سپس از پروژه ASP NET Core یک Image داکر تهیه می کنیم.
https://tinyurl.com/cdhk-docker2
در این ویدیو با استفاده از Docker دیتابیس Redis رو نصب و اجرا می کنیم
سپس از پروژه ASP NET Core یک Image داکر تهیه می کنیم.
https://tinyurl.com/cdhk-docker2
❇️ ابزار های کاربردی برای یک Web Developer
#جعبه_ابزار
این ریپازیتوری، بهترین ابزار های کاربردی ایی که معمولا یه برنامه نویس وب لازمش میشه رو به همراه دسته بندی های زیر لیست کرده.
🔹Image Compressor
🔸Javanoscript Minifer
🔹CSS Minifier
🔸JavaScript Beautifier
🔹Unminify HTML, CSS and JS
🔸Unminify/Formating JSON - Check/Validating JSON
🔹Browse JSON in TreeView
🔸Regex (Regular Expression) Tester and Highlighting
🔹Unicode Converter
🔸Url Decoder/Encoder
🔹Converter Toolbox
🔸Hash Text and File
🔹Web Developer Toolbox
🔸Check Domain and Whois
🔹IP to Location
🔸Website Traffic Statistics
🔹SEO Checker
🔸Rank Checker
🔹Analytics & Tracking
🔸Speed Checker and Performance Optimization
🔹Webiste Monitoring / Uptime Checker
🔸Text Compare / Difference Checker
🔹Port Checker
🔸DNS Checker
🔹DNS Lookup
🔸SSL/TLS Checker
🔹Security Checker
🔰آدرس ریپازیتوری گیتهاب
https://github.com/mjebrahimi/Awesome-Tools-For-WebDevelopers
____________________
@DotNetZoom
#جعبه_ابزار
این ریپازیتوری، بهترین ابزار های کاربردی ایی که معمولا یه برنامه نویس وب لازمش میشه رو به همراه دسته بندی های زیر لیست کرده.
🔹Image Compressor
🔸Javanoscript Minifer
🔹CSS Minifier
🔸JavaScript Beautifier
🔹Unminify HTML, CSS and JS
🔸Unminify/Formating JSON - Check/Validating JSON
🔹Browse JSON in TreeView
🔸Regex (Regular Expression) Tester and Highlighting
🔹Unicode Converter
🔸Url Decoder/Encoder
🔹Converter Toolbox
🔸Hash Text and File
🔹Web Developer Toolbox
🔸Check Domain and Whois
🔹IP to Location
🔸Website Traffic Statistics
🔹SEO Checker
🔸Rank Checker
🔹Analytics & Tracking
🔸Speed Checker and Performance Optimization
🔹Webiste Monitoring / Uptime Checker
🔸Text Compare / Difference Checker
🔹Port Checker
🔸DNS Checker
🔹DNS Lookup
🔸SSL/TLS Checker
🔹Security Checker
🔰آدرس ریپازیتوری گیتهاب
https://github.com/mjebrahimi/Awesome-Tools-For-WebDevelopers
____________________
@DotNetZoom
GitHub
GitHub - mjebrahimi/Awesome-Tools-For-WebDevelopers: Awesome Tools For Web Developers
Awesome Tools For Web Developers. Contribute to mjebrahimi/Awesome-Tools-For-WebDevelopers development by creating an account on GitHub.
#سری_معرفی_وسایت_های_برتر
✅ معرفی 10 سایت های برتر (سری چهارم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://www.dotnetcurry.com/
2️⃣ https://referbruv.com/blog/
3️⃣ https://codingsight.com/
4️⃣ https://www.danylkoweb.com/
5️⃣ https://buildplease.com/
6️⃣ http://www.binaryintellect.net/
7️⃣ https://ranjeet.dev/
8️⃣ https://dontcodetired.com/blog
9️⃣ https://gunnarpeipman.com/
🔟 https://codeopinion.com/
_________________
@DotNetZoom
✅ معرفی 10 سایت های برتر (سری چهارم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://www.dotnetcurry.com/
2️⃣ https://referbruv.com/blog/
3️⃣ https://codingsight.com/
4️⃣ https://www.danylkoweb.com/
5️⃣ https://buildplease.com/
6️⃣ http://www.binaryintellect.net/
7️⃣ https://ranjeet.dev/
8️⃣ https://dontcodetired.com/blog
9️⃣ https://gunnarpeipman.com/
🔟 https://codeopinion.com/
_________________
@DotNetZoom
Dotnetcurry
DotNetCurry.com: Learn C# .NET, ASP.NET Core MVC, Azure, DevOps, React, Vue, Angular, JavaScript | Tutorials for Beginners and…
DotNetCurry.com covers technical articles on Microsoft.NET, ASP.NET, ASP.NET MVC, jQuery, JavaScript, Visual Studio, SharePoint C#, .NET Interview Questions, and related Microsoft technologies
✅ اپ رستوران با ASP.NET Core و معماری Microservices
✔️ EF Core
✔️ Microservices
✔️ Architecture
✔️ Xamarin Forms
✔️ Identity Server
✔️ Angular
✔️ React
✔️ Docker
🔰https://github.com/chayxana/Restaurant-App
_______________
@DotNetZoom
Restaurant App is a sample open source e-Commerce application for ordering foods, powered by polyglot microservices architecture and cross-platform development using
✔️ ASPNET Core✔️ EF Core
✔️ Microservices
✔️ Architecture
✔️ Xamarin Forms
✔️ Identity Server
✔️ Angular
✔️ React
✔️ Docker
🔰https://github.com/chayxana/Restaurant-App
_______________
@DotNetZoom
GitHub
GitHub - chayxana/Restaurant-App: Restaurant App 🍔 is a sample open-source e-Commerce 🛒 application for ordering foods, powered…
Restaurant App 🍔 is a sample open-source e-Commerce 🛒 application for ordering foods, powered by polyglot microservices architecture and cross-platform development including mobile and web - ch...
✅ مدیریت دیتابیس های SQLite با SQLiteStudio
برنامه SQLiteStudio یکی از بهترین و محبوب ترین برنامه های مدیریت دیتابیس های SQLite هست که به صورت رایگان و Cross-Platform وجود داره.
https://github.com/pawelsalawa/sqlitestudio
🔸برنامه محبوب دیگر SQLiteBrowser نام داره که این هم رایگان و Cross-Platform هست
https://sqlitebrowser.org/
https://github.com/sqlitebrowser/sqlitebrowser
🔹اگرم خیلی کم سروکارتون به SQLite میافته و صرفا یه ابزار آنلاین خوب واسه کار باهاش نیاز دارین سایت SQLiteOnline بهترینشه
https://sqliteonline.com/
__________________
@DotNetZoom
برنامه SQLiteStudio یکی از بهترین و محبوب ترین برنامه های مدیریت دیتابیس های SQLite هست که به صورت رایگان و Cross-Platform وجود داره.
https://github.com/pawelsalawa/sqlitestudio
🔸برنامه محبوب دیگر SQLiteBrowser نام داره که این هم رایگان و Cross-Platform هست
https://sqlitebrowser.org/
https://github.com/sqlitebrowser/sqlitebrowser
🔹اگرم خیلی کم سروکارتون به SQLite میافته و صرفا یه ابزار آنلاین خوب واسه کار باهاش نیاز دارین سایت SQLiteOnline بهترینشه
https://sqliteonline.com/
__________________
@DotNetZoom
❇️ کج فهمی های yield در سی شارپ❗️
کلمه کلیدی yield معمولا به اشتباه توی برنامه نویسای سی شارپ جا افتاده
اکثرا فکر میکنن که صرفا یه سینتکس راحت تر به جای پر کردن یه List و return کردن اون هست در صورتی که اصل ماجرا چیز دیگس!
🔸شاید تعجب کنین از شنیدن اینکه متدی که داخلش از yield return استفاده شده باشه مادامی که به دستورات اجرا کننده مانند foreach یا ToList یا FirstOrDefault و... نرسه، بدنه اش اجرا نمیشه (مشابه IQuerable) زمانی هم که اجرا میشه فقط به تعداد لازم گردش میکنه.
تصویر زیر پست رو ببینین تا کامل متوجه بشین
🔹در واقع قابلیت yield return به شما امکان به تعویق انداختن (deferred execution) کد های Iteration رو میده تا به جای اینکه Iteration در لحظه فراخوانی متد و به تعداد کامل انجام بشه در "زمان لازم" و به "تعداد لازم" گردش انجام بشه.
این کار باعث میشه Memory Allocation کمتری داشته باشین چرا که تعداد کمتری Iteration انجام میشه و زمانش هم به تعویق میافته.
🔰جهت مطالعه بیشتر لینک های زیر رو دنبال کنین
https://www.dotnettips.info/post/984
https://www.dotnettips.info/post/985
https://www.kenneth-truyers.net/2016/05/12/yield-return-in-c/
https://docs.microsoft.com/en-us/dotnet/csharp/iterators
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield
_______________
@DotNetZoom
کلمه کلیدی yield معمولا به اشتباه توی برنامه نویسای سی شارپ جا افتاده
اکثرا فکر میکنن که صرفا یه سینتکس راحت تر به جای پر کردن یه List و return کردن اون هست در صورتی که اصل ماجرا چیز دیگس!
🔸شاید تعجب کنین از شنیدن اینکه متدی که داخلش از yield return استفاده شده باشه مادامی که به دستورات اجرا کننده مانند foreach یا ToList یا FirstOrDefault و... نرسه، بدنه اش اجرا نمیشه (مشابه IQuerable) زمانی هم که اجرا میشه فقط به تعداد لازم گردش میکنه.
تصویر زیر پست رو ببینین تا کامل متوجه بشین
🔹در واقع قابلیت yield return به شما امکان به تعویق انداختن (deferred execution) کد های Iteration رو میده تا به جای اینکه Iteration در لحظه فراخوانی متد و به تعداد کامل انجام بشه در "زمان لازم" و به "تعداد لازم" گردش انجام بشه.
این کار باعث میشه Memory Allocation کمتری داشته باشین چرا که تعداد کمتری Iteration انجام میشه و زمانش هم به تعویق میافته.
🔰جهت مطالعه بیشتر لینک های زیر رو دنبال کنین
https://www.dotnettips.info/post/984
https://www.dotnettips.info/post/985
https://www.kenneth-truyers.net/2016/05/12/yield-return-in-c/
https://docs.microsoft.com/en-us/dotnet/csharp/iterators
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield
_______________
@DotNetZoom
Telegram
Attach Files
Forwarded from کدهک
آشنایی با قابلیت های Blazor
در این ویدیو یک اپ CRUD پیاده شده با Blazor در حالت Server-side را بررسی می کنیم.
https://youtu.be/Px9WedDTjQg
در این ویدیو یک اپ CRUD پیاده شده با Blazor در حالت Server-side را بررسی می کنیم.
https://youtu.be/Px9WedDTjQg
❇️ نمونه پروژه ASP.NET Core با معماری Clean Architecture
ASP.NET Core 3.1 samples with
✔️ Angular 9.0 sample
✔️ React 16.13 sample
✔️ Vue 2.6 sample
✔️ Clean Architecture
✔️ Domain-Driven Design
✔️ CQRS
✔️ Event Sourcing
✔️ SOLID
✔️ Asp.Net Core Identity
✔️ Identity Server 4 Admin UI
✔️ Entity Framework Core
✔️ Blazor
✔️ Selenium E2E Testing
✔️ SignalR Notification
✔️ Hangfire Tasks Scheduling
✔️ Health Checks
✔️ Security Headers, ...
🔰https://github.com/phongnguyend/Practical.CleanArchitecture
_______
@DotNetZoom
ASP.NET Core 3.1 samples with
✔️ Angular 9.0 sample
✔️ React 16.13 sample
✔️ Vue 2.6 sample
✔️ Clean Architecture
✔️ Domain-Driven Design
✔️ CQRS
✔️ Event Sourcing
✔️ SOLID
✔️ Asp.Net Core Identity
✔️ Identity Server 4 Admin UI
✔️ Entity Framework Core
✔️ Blazor
✔️ Selenium E2E Testing
✔️ SignalR Notification
✔️ Hangfire Tasks Scheduling
✔️ Health Checks
✔️ Security Headers, ...
🔰https://github.com/phongnguyend/Practical.CleanArchitecture
_______
@DotNetZoom
GitHub
GitHub - phongnguyend/Practical.CleanArchitecture: Full-stack .Net 10 Clean Architecture (Microservices, Modular Monolith, Monolith)…
Full-stack .Net 10 Clean Architecture (Microservices, Modular Monolith, Monolith), Blazor, Angular 20, React 19, Vue 3.5, BFF with YARP, NextJs 16, Domain-Driven Design, CQRS, SOLID, Asp.Net Core I...
#Interface #Pattern #DI
❇️از اینترفیس ها بیش از حد استفاده نکنید!
یکی از نشانه های برنامه نویسانِ بزرگ و حرفه ای، استفاده ی به جا، مناسب و به دور از اغراق، از مفاهیم و الگوهای برنامه نویسی است. هدف همه ی ما، داشتن کدی تمیز و خوانا، با قابلیت نگهداری بالا و امکانِ استفاده ی مجدد است .
خوشبختانه اینترفیس ها (Interface)، تحققِ بسیاری از این موارد را برایمان ممکن کرده اند. مخصوصا وقتی صحبت از تزریق وابستگی ها (Dependency Injection) و یا انجام آزمون های واحد (Unit Testing) به میان می آید، بدون کوچکترین تعلل به سراغ تعریف اینترفیس به ازای تک تک کلاس ها می رویم. اما آیا واقعا در تمامی موارد و سناریوها نیاز به تعریف این اینترفیس ها داریم؟!
اگر شما هم از آن دسته از برنامه نویسانی هستید، که عادت به تعریف اینترفیس ها و پیچیده کردنِ روال، بدون در نظر گرفتن و ارزیابیِ شرایطِ موجود را دارید، مطالعه ی مقاله ی زیر شاید موجب تجدید نظر در این دیدگاه شود:
http://blog.hovland.xyz/2017-04-22-stop-overusing-interfaces/
_______
@DotNetZoom
❇️از اینترفیس ها بیش از حد استفاده نکنید!
یکی از نشانه های برنامه نویسانِ بزرگ و حرفه ای، استفاده ی به جا، مناسب و به دور از اغراق، از مفاهیم و الگوهای برنامه نویسی است. هدف همه ی ما، داشتن کدی تمیز و خوانا، با قابلیت نگهداری بالا و امکانِ استفاده ی مجدد است .
خوشبختانه اینترفیس ها (Interface)، تحققِ بسیاری از این موارد را برایمان ممکن کرده اند. مخصوصا وقتی صحبت از تزریق وابستگی ها (Dependency Injection) و یا انجام آزمون های واحد (Unit Testing) به میان می آید، بدون کوچکترین تعلل به سراغ تعریف اینترفیس به ازای تک تک کلاس ها می رویم. اما آیا واقعا در تمامی موارد و سناریوها نیاز به تعریف این اینترفیس ها داریم؟!
اگر شما هم از آن دسته از برنامه نویسانی هستید، که عادت به تعریف اینترفیس ها و پیچیده کردنِ روال، بدون در نظر گرفتن و ارزیابیِ شرایطِ موجود را دارید، مطالعه ی مقاله ی زیر شاید موجب تجدید نظر در این دیدگاه شود:
http://blog.hovland.xyz/2017-04-22-stop-overusing-interfaces/
_______
@DotNetZoom
blog.hovland.xyz
Stop overusing interfaces
Dependency Injection using concrete classes
Forwarded from 🛑 Iranian🇮🇷Experts 🛑 (𝓓𝓪𝓻𝓲𝓾𝓼𝓱 𝓣𝓪𝓼𝓭𝓲𝓰𝓱𝓲)
🛑 مژده مژده مژده 🛑
با عرض سلام و احترام خدمت یکایک شما دوستان خوب و همراهان عزیز
با عنایت به شرایط سخت اقتصادی، تحریمهای ظالمانه و حضور مهمان ناخواندهای به نام ویروس کرونا و غیره، شاید بد نباشد که هر یک از ما، قدم کوچکی برای یاری رساندن به هموطنان عزیزمان برداریم. از این رو اینجانب تصمیم گرفتم که دو مجموعه از فیلمهای آموزشی خود را به نامهای Angular و Vue.js، به صورت کاملا رایگان در اختیار شما بزرگواران قرار دهم.
امیدوارم که این دو مجموعه که هر کدام به ترتیب، حاصل ۵ و ۳ سال مطالعه و تدریس و کار عملی میباشد، برای شما عزیزان مفید بوده و از آنها نهایت استفاده و بهره را ببرید.
ارادتمند شما
داریوش تصدیقی
@Dariush_Tasdighi
نشانی گروه آموزشی Vue.js
@DTX_LEARNING_VUE
https://news.1rj.ru/str/DTX_LEARNING_VUE
نشانی گروه آموزشی Angular
@DTX_LEARNING_ANGULAR
https://news.1rj.ru/str/DTX_LEARNING_ANGULAR
نشانی وبلاگ
https://virgool.io/@dariush-tasdighi
نشانی گروه اصلی
@IranianExperts
بنی آدم اعضای یکدیگرند
که در آفرینش ز یک گوهرند
چو عضوی به درد آورد روزگار
دگر عضوها را نماند قرار
تو کز محنت دیگران بی غمی
نشاید که نامت نهند آدمی
🌺🌺🙏🙏👍👍🌸🌸
با عرض سلام و احترام خدمت یکایک شما دوستان خوب و همراهان عزیز
با عنایت به شرایط سخت اقتصادی، تحریمهای ظالمانه و حضور مهمان ناخواندهای به نام ویروس کرونا و غیره، شاید بد نباشد که هر یک از ما، قدم کوچکی برای یاری رساندن به هموطنان عزیزمان برداریم. از این رو اینجانب تصمیم گرفتم که دو مجموعه از فیلمهای آموزشی خود را به نامهای Angular و Vue.js، به صورت کاملا رایگان در اختیار شما بزرگواران قرار دهم.
امیدوارم که این دو مجموعه که هر کدام به ترتیب، حاصل ۵ و ۳ سال مطالعه و تدریس و کار عملی میباشد، برای شما عزیزان مفید بوده و از آنها نهایت استفاده و بهره را ببرید.
ارادتمند شما
داریوش تصدیقی
@Dariush_Tasdighi
نشانی گروه آموزشی Vue.js
@DTX_LEARNING_VUE
https://news.1rj.ru/str/DTX_LEARNING_VUE
نشانی گروه آموزشی Angular
@DTX_LEARNING_ANGULAR
https://news.1rj.ru/str/DTX_LEARNING_ANGULAR
نشانی وبلاگ
https://virgool.io/@dariush-tasdighi
نشانی گروه اصلی
@IranianExperts
بنی آدم اعضای یکدیگرند
که در آفرینش ز یک گوهرند
چو عضوی به درد آورد روزگار
دگر عضوها را نماند قرار
تو کز محنت دیگران بی غمی
نشاید که نامت نهند آدمی
🌺🌺🙏🙏👍👍🌸🌸
Telegram
DTX_LEARNING_VUE
Learning VUE.JS 2.x
#SqlServer, #Storage
❇ذخیرهسازی فایل در دیتابیس
با چه روشی انجام شود؟
varbinary?
file table?
...
حجم اطلاعات زیاد هستش
روش بهینه برای ذخیرهسازی چه روشی ست؟
برای نگهداری دادهای LOB یعنی CLOB ها و BLOB ها روشهای مختلفی وجود داره.
تعریف BLOB: مخفف Binary Large Object هست مانند Image
تعریف CLOB: مخفف Character Large Obeject هست مانند Text
اولین روش این هستش که ما مستقیماً داده رو در خود SQL در قالب یک فیلد از نوع VarBinary- XML-Nvarchar(MAX) و... ذخیره کنیم. اولین قوت این روش این هستش که کنترل مواردی مانند امنیت، جستجو، پشتیبانی Backup، عملیات مربوط به تراکنش و لغو آن و ... بر عهده خود SQL میباشد
اما نقاط ضعف این روش:
افزایش حجم LOGT - محدودیت حجم ۲ گیگابایت - وجود Fragmentation - استفاده زیاد از Buffer pool و Ram سیستم و ...
یکی از روشهای رایج دیگر نگهداری فایل، خارج از دیتابیس میباشد. که معمولاً اصل فایل (مثلاً تصویر) رو در یک پوشه خاص ذخیره میکنند و آدرس اون رو در یک فیلد از نوع Varchar یا Nvarchat نگهداری میکنند. در این روش کاهش Fragmentation - عدم استفاده از Buffer Pool - افزایش حجم ذخیرهسازی به اندازه دیسک و ... جزو مزیتها میباشد
نقاط ضعف این روش:
در این روش SQL هیچ کنترلی روی این فایل نداره. مثلاً در زمان بک آپ گیری از دیتابیس، از این پوشه بک آپی گرفته نمی شه و کنترل مواردی مانند امنیت و تراکنشها بر عهده SQL نمیباشد. به دلیل درگیری بین SQL و NTFS، دارای کد نویسی پیچیده میباشد و ....
و
اما یکی از روشهای بسیار مناسب Filestream میباشد که از نسخه 2008 ارائه شد و مزیتهای دو روش اشاره شده دارا میباشد. راهاندازی FileStream نیازمند تنظیمات سطح سرور و سطح Instance میباشد.
در ادامه به یک سؤال مهم جواب میدهیم:
چه زمانی برای ذخیرهسازی اطلاعات از Filestream استفاده کنیم؟؟
پاسخ:
در تئوری گفته شده است که برای دادههای با حجم بیش از یک مگابایت اما در عمل برای دادههای با حجم بیش از ۲۵۶KB و برای دادههای با حجم کمتر از ۲۵۶KB نوع Nvarchar (MAX) مناسبتر میباشد.
و اما ساختار دیگری که میتوان از آن برای نگهداری فایلها استفاده کرد File Table میباشد که از نسخه ۲۰۱۲ معرفی شد. در واقع متوان به این صورت گفت که File Table از همکاری بین File Stream و نوع دادهای Hierachy ایجاد شده است. در واقع با ایجاد FileTable ارتباط بین SQL, Ntfs رو برقرار کردهایم. به این معنا که با حذف فایل از SQL، اطلاعات این فایل از NTFS نیز حذف میشود و با تغییر محل فایل در SQL، این تغییر مکان در NTFS نیز اعمال میشود.
محسن بندامیر
@Mohsen_Bandamir
کانال تخصصی SqlServer
@SQLSERVER_professional
✅ آشنایی با قابلیت FileStream اس کیوال سرور
http://www.dotnettips.info/post/331/
http://www.dotnettips.info/post/332/
http://www.dotnettips.info/post/333/
___
@DotNetZoom
❇ذخیرهسازی فایل در دیتابیس
با چه روشی انجام شود؟
varbinary?
file table?
...
حجم اطلاعات زیاد هستش
روش بهینه برای ذخیرهسازی چه روشی ست؟
برای نگهداری دادهای LOB یعنی CLOB ها و BLOB ها روشهای مختلفی وجود داره.
تعریف BLOB: مخفف Binary Large Object هست مانند Image
تعریف CLOB: مخفف Character Large Obeject هست مانند Text
اولین روش این هستش که ما مستقیماً داده رو در خود SQL در قالب یک فیلد از نوع VarBinary- XML-Nvarchar(MAX) و... ذخیره کنیم. اولین قوت این روش این هستش که کنترل مواردی مانند امنیت، جستجو، پشتیبانی Backup، عملیات مربوط به تراکنش و لغو آن و ... بر عهده خود SQL میباشد
اما نقاط ضعف این روش:
افزایش حجم LOGT - محدودیت حجم ۲ گیگابایت - وجود Fragmentation - استفاده زیاد از Buffer pool و Ram سیستم و ...
یکی از روشهای رایج دیگر نگهداری فایل، خارج از دیتابیس میباشد. که معمولاً اصل فایل (مثلاً تصویر) رو در یک پوشه خاص ذخیره میکنند و آدرس اون رو در یک فیلد از نوع Varchar یا Nvarchat نگهداری میکنند. در این روش کاهش Fragmentation - عدم استفاده از Buffer Pool - افزایش حجم ذخیرهسازی به اندازه دیسک و ... جزو مزیتها میباشد
نقاط ضعف این روش:
در این روش SQL هیچ کنترلی روی این فایل نداره. مثلاً در زمان بک آپ گیری از دیتابیس، از این پوشه بک آپی گرفته نمی شه و کنترل مواردی مانند امنیت و تراکنشها بر عهده SQL نمیباشد. به دلیل درگیری بین SQL و NTFS، دارای کد نویسی پیچیده میباشد و ....
و
اما یکی از روشهای بسیار مناسب Filestream میباشد که از نسخه 2008 ارائه شد و مزیتهای دو روش اشاره شده دارا میباشد. راهاندازی FileStream نیازمند تنظیمات سطح سرور و سطح Instance میباشد.
در ادامه به یک سؤال مهم جواب میدهیم:
چه زمانی برای ذخیرهسازی اطلاعات از Filestream استفاده کنیم؟؟
پاسخ:
در تئوری گفته شده است که برای دادههای با حجم بیش از یک مگابایت اما در عمل برای دادههای با حجم بیش از ۲۵۶KB و برای دادههای با حجم کمتر از ۲۵۶KB نوع Nvarchar (MAX) مناسبتر میباشد.
و اما ساختار دیگری که میتوان از آن برای نگهداری فایلها استفاده کرد File Table میباشد که از نسخه ۲۰۱۲ معرفی شد. در واقع متوان به این صورت گفت که File Table از همکاری بین File Stream و نوع دادهای Hierachy ایجاد شده است. در واقع با ایجاد FileTable ارتباط بین SQL, Ntfs رو برقرار کردهایم. به این معنا که با حذف فایل از SQL، اطلاعات این فایل از NTFS نیز حذف میشود و با تغییر محل فایل در SQL، این تغییر مکان در NTFS نیز اعمال میشود.
محسن بندامیر
@Mohsen_Bandamir
کانال تخصصی SqlServer
@SQLSERVER_professional
✅ آشنایی با قابلیت FileStream اس کیوال سرور
http://www.dotnettips.info/post/331/
http://www.dotnettips.info/post/332/
http://www.dotnettips.info/post/333/
___
@DotNetZoom
.NET Tips
آشنایی با قابلیت FileStream اس کیوال سرور 2008 - قسمت اول
مطلبی چندی قبل در مورد "ذخیره سازی فایلها در دیتابیس یا استفاده از فایل سیستم متداول؟" منتشر گردید، جهت برشمردن فواید ذخیره سازی فایلها در دیتابیس (+). اما معایب این نوع ذخیره سازی بررسی نشدند:الف) اختصاص یافتن قسمتی از بافر SQL Server به این امر.ب) با…
#Project, #AspMvc
https://goo.gl/0x3lZk
#پروژه بدست آوردن آمار بازدید وب سایت در ASP.NET MVC
امکانات پروژه:
- افراد آنلاین
- بازدید امروز
- بازدید کل از زمان راه اندازی پروژه
- بازدید یونیک
- درصد استفاده از مرورگرها
- درصد استفاده از سیستم عامل ها
دمو :
http://ws.csspro.ir/
مخزن :
https://github.com/saeed-m/WebSiteStatistics
اطلاعات بیشتر:
https://www.dotnettips.info/projects/details/30
____________________
@DotNetZoom
https://goo.gl/0x3lZk
#پروژه بدست آوردن آمار بازدید وب سایت در ASP.NET MVC
امکانات پروژه:
- افراد آنلاین
- بازدید امروز
- بازدید کل از زمان راه اندازی پروژه
- بازدید یونیک
- درصد استفاده از مرورگرها
- درصد استفاده از سیستم عامل ها
دمو :
http://ws.csspro.ir/
مخزن :
https://github.com/saeed-m/WebSiteStatistics
اطلاعات بیشتر:
https://www.dotnettips.info/projects/details/30
____________________
@DotNetZoom
#Technical_Debt #Software_Engineering #معرفی_سایت
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت http://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
http://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
_______
@DotNetZoom
❇بدهی فنی (Technical Debt) چیست؟
بدهی فنی یکی از موارد کلیدی در موفقیت تجاری نرمافزارهای توسعهدادهشده است. این اصطلاح توسط وارد کانیگهام در سال ۱۹۹۲ ابداع شد. او چنین چیزی گفت: «انتشار اولین کد مثل بدهکار شدن است. کمی بدهی، سرعت توسعه را بهبود میبخشد؛ به شرطی که در اولین فرصت با بازنویسی کد، تسویه شود... خطر زمانی رخ میدهد که تسویه نشود. هر دقیقه که صرف کد نامطلوب شود به عنوان بهره تلقی میشود. تمامی یک سازمان مهندسی میتواند تحت بار بدهی این کد نامستحکم، به حالت توقف کشانده شود.»
🔸تشبیه بدهی فنی ارتباط نزدیکی با بدهی مالی دارد و مربوط به انتشار سریع یک چیز و در نتیجه بدهکار شدن است. بعداً باید این بدهی را با بهبود کیفیت، تسویه کنید و اگر این کار را نکنید مجبور به پرداخت نرخ بهره هستید چون بهرهوری شما کاهش پیدا میکند و توسعهتان کند میشود.
🔹دلایل بدهی فنی:
- فشار زمانی
- استفاده از یک فناوری جدید برای نخستین بار بدون درک درست از آن
- طراحی اشتباه به دلیل نداشتن شناخت صحیح از نیازمندی های حوزه ی کسب وکار
- پوسیدگی نرمافزار
🔸اما بدهی فنی همیشه بد نیست. در واقع بدهی فنی یک راهبرد است. چون میتوانیم با بدهکار شدن به سرعت به هدف کسب و کار برسیم. بهتر است چیزی را سریع بنویسید و به کاربر برسانید و ببینید که آیا برای کسی مفید است؟ اگر برای کسی مفید است آن وقت است که بدهی فنی را پرداخت میکنیم. اگر کد بینقصی برای عملکردی که نمیدانیم مفید است یا نه بنویسیم هدر دادن زمان است.
🔹این ها بخشی از صحبت های سوِن یوهان و ابرهارد ولف در مورد بدهی فنی از مجموعه پادکست های صوتی سایت SE Radio است که توسط سایت http://se-topics.ir/ به خوبی ترجمه و در اختیار توسعه دهندگان فارسی زبان قرار داده شده است.
این سایت از جمله سایت های خوب فارسی در حوزه ی مهندسی نرم افزار است و به تهیه ترجمه از پادکستهای صوتی و تصویری از افراد خبره در این حوزه می پردازد. همچنین در صورت تمایل می توانید به جمع مترجمان این سایت بپیوندید و در ترجمه ی پادکست ها با این سایت همکاری داشته باشید تا مقاله تان با ذکر نام خودتان بر روی سایت قرار گیرد.
🔰متن کامل مقاله:
http://se-topics.ir/topicview?id=54
🔰مطالعه ی بیشتر در مورد بدهی فنی:
https://www.infoq.com/articles/managing-technical-debt
_______
@DotNetZoom
InfoQ
Managing Technical Debt
Technical Debt is widely regarded as a bad thing that should be paid back as soon as possible, however it can be a strategy that helps balance short-term wins and long-term productivity. The article describes different ways that a project could pay back Technical…
❇روش های Audit!
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- http://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
@DotNetZoom
https://bit.ly/2RrXDJe
ثبت وقایع کاربران یا لاگ تاریچه عملیاتی که هر کاربر در سیستم انجام داده (مثلا چه شخصی چه زمانی چه چیزی رو insert کرده یا update کرده یا delete) بعضا در نرم افزار های بزرگ جز موارد مهم به حساب میاد
🔸روش های مختلفی واسه این کار وجود داره
1- مدیریت این کار از طریق تریگر روی دیتابیس
2- استفاده از روش های Interception
3- استفاده از ActionFilter توی MVC
4- سفارشی سازی متد SaveChanges در EF و استفاده از ChangeTracker
و...
در اینجا لیست گلچین شده ای از منابع مورد نیاز برای روش های 3 و 4 رو داریم
کتابخانه های اماده ای برای اینکار وجود داره :
1- https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework
2- http://entityframework-plus.net/audit
3- https://github.com/bilal-fazlani/tracker-enabled-dbcontext
اگه هم نیازتون رو برطرف نکرد میتونین خودتون پیاده سازی کنین که خیلی راحته (پیشنهاد میکنم حتما کدش رو بررسی کنید)
https://bit.ly/2Sxyv0T
اگه هم مثل روش بالا (لاگ تاریخچه تغییرات) مد نظرتون نیست و فقط لاگ تغییرات اخرین کاربر روی یک Entity با فیلد های InsertDate, UpdateDate, DeleteDate و... کفایت میکنه میتونین از کتابخونه زیر استفاده کنین
https://bit.ly/2RtGTRI
و باز هم اگر نیازتون رو برطرف نکرد، پیاده سازیش خیلی راحته
https://bit.ly/2CJOymE
یه روش دیگه هم از لاگ گیری فعالیت های کاربران توی Mvc هست که توسط ActionFilter بعد از هر اکشن ثبت میکنه کدوم کاربر با کدوم IP کدوم صفحه رو در چه زمانی درخواست کرده
1- https://bit.ly/1PyYOKi
2- https://bit.ly/1Sh3s4N
البته این موارد مربوط به EF6 و MVC5 هستند ولی مفهومشون توی EF Core / Asp Core یکیه و با انجام تغییرات نه چندان زیاد میتونین توی Core هم ازش استفاده کنین
___
@DotNetZoom
Forwarded from کدهک
کش کردن دیتا کمک می کند دفعات کمتری به دیتابیس مراجعه کنید و از فشار مازاد به سرور و دیتابیس می کاهد. داده های زیادی هستند که به صورت مداوم آپدیت نمی شوند و می توانید آنها را موقت کش کنید تا سریعتر به کلاینت نمایش داده شود. در این ویدیو نحوه کار با In Memory Caching در ASP NET Core آموزش داده میشود.
https://codehaks.com/go/csh
https://codehaks.com/go/csh