آموزش ساخت API Gateway :
در این مقاله یاد میگیریم چطور یك دروازه برای ای پی آی ها بسازیم.
تصور كنید سه سرور داریم:
1: ای پی آی محصولات را هندل میكند
2: ای پی آی مشتریان را هدل میكن
3: سفارشات را هندل میكند
در حالت معمول باید با آدرس های متفاوت به هر سرور دسترسی پیدا كنیم مثلا:
Localhost:9000/Products/1
Localhost:9001/Customers/1
Localhost:9002/Orders/1
با استفاده از این مقاله تمامی ای پی آی ها با یك سرور در دسترس خواهند بود یعنی :
Localhost:9000/Product/1
Localhost:9000/Customer/1
Localhost:9000/Order/1
مشاهده مقاله:
http://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/
@WebDevelopmentReferences
#ApiGateway #Ocelot #ASPNet_Core #ASPNet
در این مقاله یاد میگیریم چطور یك دروازه برای ای پی آی ها بسازیم.
تصور كنید سه سرور داریم:
1: ای پی آی محصولات را هندل میكند
2: ای پی آی مشتریان را هدل میكن
3: سفارشات را هندل میكند
در حالت معمول باید با آدرس های متفاوت به هر سرور دسترسی پیدا كنیم مثلا:
Localhost:9000/Products/1
Localhost:9001/Customers/1
Localhost:9002/Orders/1
با استفاده از این مقاله تمامی ای پی آی ها با یك سرور در دسترس خواهند بود یعنی :
Localhost:9000/Product/1
Localhost:9000/Customer/1
Localhost:9000/Order/1
مشاهده مقاله:
http://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/
@WebDevelopmentReferences
#ApiGateway #Ocelot #ASPNet_Core #ASPNet
C-Sharpcorner
Building API Gateway Using Ocelot In ASP.NET Core
Ocelot is aimed at people using .NET running a micro services / service orientated architecture who need a unified point of entry into their system.
آموزش استفاده از گوگل ریكپچا در ASP.NET Core:
حتما در سایت های مختلف كپچا را دیده اید، زمان ثبت نام، ثبت نظر و یا ثبت هر فرمی.
به دو روش میتوانید از كپچا در سایت خود استفاده كنید:
1: خودتان دست به كار شده و یك تولید كنده كد كپچا بنویسید.
2: استفاده از كتابخانه های آماده.
در این مقاله یاد میگیریم چطور از كتابخانه ای كه گوگل به صورت رایگان در اختیار ما قرار داده استفاده كنیم.
مشاهده مقاله:
https://medium.com/@MoienTajik/google-recaptcha-in-asp-net-mvc-cf88b079dde
@WebDevelopmentReferences
#Google_ReCaptcha #ASPNET_Core #ASP
حتما در سایت های مختلف كپچا را دیده اید، زمان ثبت نام، ثبت نظر و یا ثبت هر فرمی.
به دو روش میتوانید از كپچا در سایت خود استفاده كنید:
1: خودتان دست به كار شده و یك تولید كنده كد كپچا بنویسید.
2: استفاده از كتابخانه های آماده.
در این مقاله یاد میگیریم چطور از كتابخانه ای كه گوگل به صورت رایگان در اختیار ما قرار داده استفاده كنیم.
مشاهده مقاله:
https://medium.com/@MoienTajik/google-recaptcha-in-asp-net-mvc-cf88b079dde
@WebDevelopmentReferences
#Google_ReCaptcha #ASPNET_Core #ASP
Medium
Google reCAPTCHA in ASP.NET MVC
reCAPTCHA is a free service that protects your website from spam and abuse.
معرفی افزونه Client-Side Library Installer:
این افزونه بر روی ویژوال استادیو نصب میشود و با استفاده از این افزونه می توانید نسخه های مختلف كتابخانه های كلاینت را با سرعت بسیار بالا نصب كنید.
استفاده از این افزونه بسیار ساده می باشد، تنها كافیست افزونه را نصب كنید و اجرا كنید حالا میتوانید از بین كتابخانه ها كتابخانه مورد نظر را یافته و نصب كنید.
طبق گفته های منتشر كننده این افزونه سریع ترین نصاب كتابخانه های سمت كاربر می باشد
می توانید انتخاب كنید چه فایل هایی از كتابخانه برای شما دانلود شود(برخلاف ن پ م و باور كه تمام محتوی را دانلود میكند)
و برتری های دیگر كه در سایت می توانید بخوانید.
#Visual_Studio #Extension
@WebDevelopmentReferences
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.Client-SideLibraryInstaller
این افزونه بر روی ویژوال استادیو نصب میشود و با استفاده از این افزونه می توانید نسخه های مختلف كتابخانه های كلاینت را با سرعت بسیار بالا نصب كنید.
استفاده از این افزونه بسیار ساده می باشد، تنها كافیست افزونه را نصب كنید و اجرا كنید حالا میتوانید از بین كتابخانه ها كتابخانه مورد نظر را یافته و نصب كنید.
طبق گفته های منتشر كننده این افزونه سریع ترین نصاب كتابخانه های سمت كاربر می باشد
می توانید انتخاب كنید چه فایل هایی از كتابخانه برای شما دانلود شود(برخلاف ن پ م و باور كه تمام محتوی را دانلود میكند)
و برتری های دیگر كه در سایت می توانید بخوانید.
#Visual_Studio #Extension
@WebDevelopmentReferences
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.Client-SideLibraryInstaller
Visualstudio
Client-Side Library Installer - Visual Studio Marketplace
Extension for Visual Studio - A simple solution to installing JavaScript and CSS libraries into any project. It uses well established global content delivery networks that hosts thousands of the most popular libraries.
Forwarded from Learning references
جست و جوی چند متغیره مثلا میخواهیم بر اساس چند متغیر جست و جو كنیم مثلا نام، قیمت، تاریخ و...
https://stackoverflow.com/questions/33153932/filter-search-using-multiple-fields-asp-net-mvc/33154580#33154580
https://stackoverflow.com/questions/33153932/filter-search-using-multiple-fields-asp-net-mvc/33154580#33154580
Stack Overflow
Filter/Search using Multiple Fields - ASP.NET MVC
I am using ASP.NET MVC with EF 6.
I have a stock page which shows all the information on stock items. Now I want to filter records too.
In picture below I have 3 options. I might filter by each o...
I have a stock page which shows all the information on stock items. Now I want to filter records too.
In picture below I have 3 options. I might filter by each o...
كتابخانه : PersianDateTime
موارد استفاده : مانند DateTime عمل میكند ولی برای كار با تاریخ های شمسی.
توضیحات در لینك موجود است.
#PersianDateTime #DateTime #CSharp #Nuget_Package
@WebDevelopmentReferences
https://github.com/Mds92/MD.PersianDateTime
موارد استفاده : مانند DateTime عمل میكند ولی برای كار با تاریخ های شمسی.
توضیحات در لینك موجود است.
#PersianDateTime #DateTime #CSharp #Nuget_Package
@WebDevelopmentReferences
https://github.com/Mds92/MD.PersianDateTime
GitHub
GitHub - Mds92/MD.PersianDateTime: A C# library to use PersianCalendar as easy as DateTime
A C# library to use PersianCalendar as easy as DateTime - Mds92/MD.PersianDateTime
Runtime Bundling and Minification in ASP.Net Core:
در لینك زیر آموزش استفاده از Smidge داده شده است.
مزایای استفاده و كار :
برای باندل. مینیفای كردن فایلهای جاوا اسكریپت و سی اس اس استفاده می شود.
این عمل در زمان اجرا انجام میشود و میتوانیم تعیین كنیم در حالت دولوپمنت باندل نشود و تنها زمان پروداكشن عملیات باندل انجام شود.
به صورت خودكار عمل ورژن بندی را نیز انجام میدهد.
#Bundle #Minification #DotNetCore
@WebDevelopmentReferences
https://dotnetthoughts.net/runtime-bundling-and-minification-in-aspnet-core-with-smidge/
در لینك زیر آموزش استفاده از Smidge داده شده است.
مزایای استفاده و كار :
برای باندل. مینیفای كردن فایلهای جاوا اسكریپت و سی اس اس استفاده می شود.
این عمل در زمان اجرا انجام میشود و میتوانیم تعیین كنیم در حالت دولوپمنت باندل نشود و تنها زمان پروداكشن عملیات باندل انجام شود.
به صورت خودكار عمل ورژن بندی را نیز انجام میدهد.
#Bundle #Minification #DotNetCore
@WebDevelopmentReferences
https://dotnetthoughts.net/runtime-bundling-and-minification-in-aspnet-core-with-smidge/
dotnetthoughts
Runtime bundling and Minification in ASP.NET Core with Smidge
This post is about enabling bundling and minification in ASP.NET Core with Smidge. Long back I wrote a post about bundling and minification in ASP.NET Core. But it was during the compile time or while publishing the app. But Smidge helps you to enable bundling…
آپلود فایل در ASPNet Core :
در این مقاله دو نوع آپلود آموزش داده شده است.
1. آپلود فایلهایی با حجم كمتر
2. آپلود فایلهای حجیم
در حالت اول فایل ابتدا به صورت موقت در حافظه سرور ذخیره میشود تا زمانی كه دستور ذخیره سازی روی دیسك داده شود كه این عمیل برای فایلهایی با حجم پایین و تعداد كم مناسب است ولی در نظر بگیرید اگر نیاز باشد حجم فایلهای آپلودی كمی بیشتر باشد و تعداد كاربرانی كه در حال آپلود هستند نیز بیشتر شود چه میزان از منابع سرور برای ذخیره سازی موقت فایلها استفاده می شود؟
برای حل این مشكل میتوانیم از تكنیك استریم كردن فایل استفاده كنیم كه در مقاله آموزش داده شده است:
@WebDevelopmentReferences
#ASP_Net_Core #Upload
https://dotnetcoretutorials.com/2017/03/12/uploading-files-asp-net-core/
در این مقاله دو نوع آپلود آموزش داده شده است.
1. آپلود فایلهایی با حجم كمتر
2. آپلود فایلهای حجیم
در حالت اول فایل ابتدا به صورت موقت در حافظه سرور ذخیره میشود تا زمانی كه دستور ذخیره سازی روی دیسك داده شود كه این عمیل برای فایلهایی با حجم پایین و تعداد كم مناسب است ولی در نظر بگیرید اگر نیاز باشد حجم فایلهای آپلودی كمی بیشتر باشد و تعداد كاربرانی كه در حال آپلود هستند نیز بیشتر شود چه میزان از منابع سرور برای ذخیره سازی موقت فایلها استفاده می شود؟
برای حل این مشكل میتوانیم از تكنیك استریم كردن فایل استفاده كنیم كه در مقاله آموزش داده شده است:
@WebDevelopmentReferences
#ASP_Net_Core #Upload
https://dotnetcoretutorials.com/2017/03/12/uploading-files-asp-net-core/
.NET Core Tutorials
Uploading Files In ASP.NET Core - .NET Core Tutorials
Uploading files in ASP.net core is largely the same as standard full framework MVC, with the large exception being how you can now stream large files. We will go over both methods of uploading a file in ASP.net core. Model Binding IFormFile (Small Files)…
حل مشكل چرخه حذف در DOTNET Core:
زمانی كه مدلها و روابط بین آنها مشخص می شود رابطه های یك به چند اگر با دقت مدیریت نشوند ممكن است خطرناك باشند، به صورت پیشفرض عمل حذف و به روز رسانی به صورت كسكید انجام می شود یعنی اگر یك والد را حذف كنید خودكار تمام فرزندهای آن نیز حذف می شوند، امری طبیعی است ولی مدیری را در نظر بگیرید كه به اشتباه یك دسته از دسته بندی های محصولات را حذف می كند!
در این گونه موارد برنامه نویس یا باید عمل كسكید را غیرفعال كنید و یا قبل از انجام عملیات حذف بررسی شود ركورد مورد نظر اگر دارای فرزند بود به كاربر هشدار داده شود و در صورت تایید حذف شود.
حالا میخواهیم حالت بدتر این موضوع را بررسی كنیم:
ممكن است اتفاق بیفتد كه سه جدول داریم به صورتی كه جدول اول با جدول دوم، جدول دوم با جدول سوم و جدول سوم با جدول اول رابطه یك به چند دارد.
حالا اگر حالت كسكسید فعال باشد اگر از یكی از جداول ركوردی حذف شود عمل حذف به صورت چرخه تمام اطلاعات هر سه جدول را حذف خواهد كرد!
وقتی روابط به این صورت باشند دات نت زمان به روز رسانی بانك اطلاعاتی (Migration) پیامی مبنی بر اینكه این روابط چرخه حذف بوجود می آورند بدهد و از به روزرسانی بانك جلوگیری كند، در حالی كه به این روابط نیاز داریم و در حین برنامه نویسی كنترل خواهیم كرد كه این چرخه هیچ وقت اتفاق نیفتد و قبل از حذف ركورد تعداد فرزندان اگر بیشتر از صفر بود ركورد حذف نشود.
ولی بازهم اجازه به روزرسانی داده نمی شود بخاطر اینكه ساختار روابط همچنان میگوید چرخه حذف داریم!
برای این كار باید در DbContext تنظیمات زیر را اعمال كنیم تا بفهمانیم عمل حذف به صورت كسكید انجام نشود و مدیریت آن به برنامه نویس داده شود(به زبان ساده تر خطرات چرخه حذف را خودم مدیریت می كنم).
میتوانیم این تنظیم را برای هر مدل انجام دهیم اما معمولا تعداد مدلها در برنامه زیاد هستند و اعمال تنظیمات برای هر مدل به صورت جدا هم زمان و هم كد بیشتری را میخواهد، قطعه كد زیر این تنظیمات را برای تمام روابط اعمال خواهد كرد:
protected override void OnModelCreating(ModelBuilder modelbuilder)
{
foreach (var relationship in modelbuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(modelbuilder);
}
@WebDevelopmentReferences
#ASP_NET_CORE #EntityFramework #ASPNet
زمانی كه مدلها و روابط بین آنها مشخص می شود رابطه های یك به چند اگر با دقت مدیریت نشوند ممكن است خطرناك باشند، به صورت پیشفرض عمل حذف و به روز رسانی به صورت كسكید انجام می شود یعنی اگر یك والد را حذف كنید خودكار تمام فرزندهای آن نیز حذف می شوند، امری طبیعی است ولی مدیری را در نظر بگیرید كه به اشتباه یك دسته از دسته بندی های محصولات را حذف می كند!
در این گونه موارد برنامه نویس یا باید عمل كسكید را غیرفعال كنید و یا قبل از انجام عملیات حذف بررسی شود ركورد مورد نظر اگر دارای فرزند بود به كاربر هشدار داده شود و در صورت تایید حذف شود.
حالا میخواهیم حالت بدتر این موضوع را بررسی كنیم:
ممكن است اتفاق بیفتد كه سه جدول داریم به صورتی كه جدول اول با جدول دوم، جدول دوم با جدول سوم و جدول سوم با جدول اول رابطه یك به چند دارد.
حالا اگر حالت كسكسید فعال باشد اگر از یكی از جداول ركوردی حذف شود عمل حذف به صورت چرخه تمام اطلاعات هر سه جدول را حذف خواهد كرد!
وقتی روابط به این صورت باشند دات نت زمان به روز رسانی بانك اطلاعاتی (Migration) پیامی مبنی بر اینكه این روابط چرخه حذف بوجود می آورند بدهد و از به روزرسانی بانك جلوگیری كند، در حالی كه به این روابط نیاز داریم و در حین برنامه نویسی كنترل خواهیم كرد كه این چرخه هیچ وقت اتفاق نیفتد و قبل از حذف ركورد تعداد فرزندان اگر بیشتر از صفر بود ركورد حذف نشود.
ولی بازهم اجازه به روزرسانی داده نمی شود بخاطر اینكه ساختار روابط همچنان میگوید چرخه حذف داریم!
برای این كار باید در DbContext تنظیمات زیر را اعمال كنیم تا بفهمانیم عمل حذف به صورت كسكید انجام نشود و مدیریت آن به برنامه نویس داده شود(به زبان ساده تر خطرات چرخه حذف را خودم مدیریت می كنم).
میتوانیم این تنظیم را برای هر مدل انجام دهیم اما معمولا تعداد مدلها در برنامه زیاد هستند و اعمال تنظیمات برای هر مدل به صورت جدا هم زمان و هم كد بیشتری را میخواهد، قطعه كد زیر این تنظیمات را برای تمام روابط اعمال خواهد كرد:
protected override void OnModelCreating(ModelBuilder modelbuilder)
{
foreach (var relationship in modelbuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(modelbuilder);
}
@WebDevelopmentReferences
#ASP_NET_CORE #EntityFramework #ASPNet