آموزش ساخت 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
برنامه نویسی و طراحی
حل مشكل چرخه حذف در DOTNET Core: زمانی كه مدلها و روابط بین آنها مشخص می شود رابطه های یك به چند اگر با دقت مدیریت نشوند ممكن است خطرناك باشند، به صورت پیشفرض عمل حذف و به روز رسانی به صورت كسكید انجام می شود یعنی اگر یك والد را حذف كنید خودكار تمام فرزندهای…
نیاز است تاكید شود كه با انجام این تنظیمات باید در تمام متدهای حذف و به روزرسانی ركورد والد، فرزندان بررسی و مدیریت شوند.
به عنوان مثال وقتی دسته ای را حذف میكنید كه دارای فرزندانی است، باید ابتدا بررسی شود اگر دارای فرزند است یا پیامی به كاربر نمایش داده شود كه هشدار میدهد در صورت حذف دسته تمام مطالب دسته نیز حذف خواهند شد و بعد از تایید توسط كاربر ابتدا فرزندان و سپس والد حذف شود و یا زحمت حذف فرزندان را به كاربر بدهید و در پیامی به كاربر هشدار دهید كه ابتدا باید مطالب دسته را حذف كند سپس به حذف دسته اقدام نماید.
به عنوان مثال وقتی دسته ای را حذف میكنید كه دارای فرزندانی است، باید ابتدا بررسی شود اگر دارای فرزند است یا پیامی به كاربر نمایش داده شود كه هشدار میدهد در صورت حذف دسته تمام مطالب دسته نیز حذف خواهند شد و بعد از تایید توسط كاربر ابتدا فرزندان و سپس والد حذف شود و یا زحمت حذف فرزندان را به كاربر بدهید و در پیامی به كاربر هشدار دهید كه ابتدا باید مطالب دسته را حذف كند سپس به حذف دسته اقدام نماید.
نام پكیج: KSBankMellat
توضیح :
اگر در پروژه دات نت كور خود نیاز به استفاده از درگاه پرداخت بانك ملت دارید حتما متوجه شده اید كه در ویژوال استادیو كد قسمتی برای اضافه كردن وب سرویس بانك ملت به پروژه ندارید!
با استفاده از این پكیج تمام متدهای وب سرویس در اختیار شما خواهد بود.
استفاده از این پكیج بسیار ساده است، تنها باید پكیج را نصب كرده و یك نمونه از كلاس PaymentGatewayClient بسازید و از متدها استفاده كنید:
var pgc = new PaymentGatewayClient();
var result = await pgc.bpPayRequestAsync(terminalId, userName, password, orderId, amout, localDate, localTime, additionalData, callBackUrl, payerId);
string[] resultArray = result.Body.@return.Split(",");
if(resultArray[0] == "0")
{ //Send user to gateway }
else
{ //Show error message }
آدرس پكیج در نوگت :
https://www.nuget.org/packages/KSBankMellat
آدرس گیت هاب:
https://github.com/A-Programmer/KSBankMellat
#ASP_Net_Core #ASPNet #Nuget_Package #BankMellat
@WebDevelopmentReferences
توضیح :
اگر در پروژه دات نت كور خود نیاز به استفاده از درگاه پرداخت بانك ملت دارید حتما متوجه شده اید كه در ویژوال استادیو كد قسمتی برای اضافه كردن وب سرویس بانك ملت به پروژه ندارید!
با استفاده از این پكیج تمام متدهای وب سرویس در اختیار شما خواهد بود.
استفاده از این پكیج بسیار ساده است، تنها باید پكیج را نصب كرده و یك نمونه از كلاس PaymentGatewayClient بسازید و از متدها استفاده كنید:
var pgc = new PaymentGatewayClient();
var result = await pgc.bpPayRequestAsync(terminalId, userName, password, orderId, amout, localDate, localTime, additionalData, callBackUrl, payerId);
string[] resultArray = result.Body.@return.Split(",");
if(resultArray[0] == "0")
{ //Send user to gateway }
else
{ //Show error message }
آدرس پكیج در نوگت :
https://www.nuget.org/packages/KSBankMellat
آدرس گیت هاب:
https://github.com/A-Programmer/KSBankMellat
#ASP_Net_Core #ASPNet #Nuget_Package #BankMellat
@WebDevelopmentReferences
GitHub
GitHub - A-Programmer/KSBankMellat: Using Bank Mellat SOAP in DotNet Core
Using Bank Mellat SOAP in DotNet Core. Contribute to A-Programmer/KSBankMellat development by creating an account on GitHub.
آموزش ساخت پكیج نیوگت:
حتما پیش آمده است كه قسمت هایی از پروژه های شما تكراری باشد و تنها از پروژه ای به پروژه دیگر كپی میكنید.
اولین راه حل كپی كردن كدها و فایلها می باشد ولی راه حل تمیز تری هم وجود دارد كه با استفاده از این راه دیگر حتی نیازی به كپی كردن هم ندارید، تنها كافیست قسمتهای تكراری را به صورت پكیج آماده كنید و هربار تنها زحمت نصب پكیج را بكشید.
در این مقاله آموزش پكیج كردن یك پروژه آموزش داده شده است:
https://garywoodfine.com/creating-nuget-package-net-core/
#ASPNet #NuGet
@WebDevelopmentReferences
حتما پیش آمده است كه قسمت هایی از پروژه های شما تكراری باشد و تنها از پروژه ای به پروژه دیگر كپی میكنید.
اولین راه حل كپی كردن كدها و فایلها می باشد ولی راه حل تمیز تری هم وجود دارد كه با استفاده از این راه دیگر حتی نیازی به كپی كردن هم ندارید، تنها كافیست قسمتهای تكراری را به صورت پكیج آماده كنید و هربار تنها زحمت نصب پكیج را بكشید.
در این مقاله آموزش پكیج كردن یك پروژه آموزش داده شده است:
https://garywoodfine.com/creating-nuget-package-net-core/
#ASPNet #NuGet
@WebDevelopmentReferences
Gary Woodfine
How to create nuget package .net core | Gary Woodfine
Tutorial on how to create a NuGet package using the .NET Core CLI, and then publish their NuGet package to the nuget.org site, including how to set up a CI/CD pipeline
آموزش ساخت یك سایت كوچك TODO با استفاده از Vue.js و ASP.NET Core:
در این آموزش با استفاده از تكنولوژی های ذكر شده یك وب سایت ساده برای ثبت، نمایش، حذف و ویرایش آیتم های TODO ساخته خواهد شد.
لینك مقاله :
https://scotch.io/tutorials/build-a-secure-to-do-app-with-vuejs-aspnet-core-and-okta
#Vue_Js #ASP_Net_Core #Okta
@WebDevelopmentReferences
در این آموزش با استفاده از تكنولوژی های ذكر شده یك وب سایت ساده برای ثبت، نمایش، حذف و ویرایش آیتم های TODO ساخته خواهد شد.
لینك مقاله :
https://scotch.io/tutorials/build-a-secure-to-do-app-with-vuejs-aspnet-core-and-okta
#Vue_Js #ASP_Net_Core #Okta
@WebDevelopmentReferences
Scotch
Build a Secure To-Do App with Vue, ASP.NET Core, and Okta
I love lists. I keep everything I need to do (too many things, usually) in a big to-do list, and the list helps keep me sane throughout the day. It’s like having a second brain! There are hundreds of to-do apps out there, but today I’ll show you how to build…
18 نكته از JQuery:
در این مقاله 18 نكته یا ترفند زیبا از JQuery گفته شده است كه بسیار پركاربرد هستند.
لینك مقاله:
http://www.prideparrot.com/blog/archive/2011/9/interesting_things_from_jquery
#JQuery #FrontEnd
@WebDevelopmentReferences
در این مقاله 18 نكته یا ترفند زیبا از JQuery گفته شده است كه بسیار پركاربرد هستند.
لینك مقاله:
http://www.prideparrot.com/blog/archive/2011/9/interesting_things_from_jquery
#JQuery #FrontEnd
@WebDevelopmentReferences
Prideparrot
Interesting things from jQuery
This post describes about some of the interesting features from jquery.
تبدیل كد خطا در درگاه پرداخت بانك ملت به متن خطا.
زمانی كه از درگاه پرداخت بانك ملت استفاده میكنید اگر نتیجه هر متد خطا باشد كدی برای شما بازگردانده می شود كه بر اساس راهنمای استفاده از وب سرویس باید متن مربوط به آن كد به كاربر نمایش داده شود كه زحمت این كار را باید برنامه نویس بكشد، برای راحتی كار تابع مورد نظر را در یك گیست گیت هاب قرار دادم تا دوستان استفاده كنند.
تنها كاری كه باید انجام دهید ساخت یك كلاس كمكی است و كپی كردن كدهای بنده بعد از انجام این كار هرجای برنامه می توانید این تابع را صدا زده و عدد خطا را به عنوان ورودی به تابع پاس بدهید و نتیجه متن خطا خواهد بود.
آدرس گیست تابع:
https://gist.github.com/A-Programmer/365a3cf716a2d0eb6ca55cc1047b8586
#BankMellat #DotNet #Helper
@WebDevelopmentReferences
زمانی كه از درگاه پرداخت بانك ملت استفاده میكنید اگر نتیجه هر متد خطا باشد كدی برای شما بازگردانده می شود كه بر اساس راهنمای استفاده از وب سرویس باید متن مربوط به آن كد به كاربر نمایش داده شود كه زحمت این كار را باید برنامه نویس بكشد، برای راحتی كار تابع مورد نظر را در یك گیست گیت هاب قرار دادم تا دوستان استفاده كنند.
تنها كاری كه باید انجام دهید ساخت یك كلاس كمكی است و كپی كردن كدهای بنده بعد از انجام این كار هرجای برنامه می توانید این تابع را صدا زده و عدد خطا را به عنوان ورودی به تابع پاس بدهید و نتیجه متن خطا خواهد بود.
آدرس گیست تابع:
https://gist.github.com/A-Programmer/365a3cf716a2d0eb6ca55cc1047b8586
#BankMellat #DotNet #Helper
@WebDevelopmentReferences
Gist
Bank Mellat Error Convertor
شروع كار با VueJs:
https://www.sitepoint.com/getting-started-with-vue-js/
#Vue_Js #Getting_Started
@WebDevelopmentReferences
https://www.sitepoint.com/getting-started-with-vue-js/
#Vue_Js #Getting_Started
@WebDevelopmentReferences
Sitepoint
Getting Started With Vue.js — SitePoint
Ashraff Hathibelagal introduces you to the basic concepts of Vue.js, explaining how to use one-way and two-way bindings, directives, filters, and events.
ارسال فرم به كنترلر اكشن در دات نت كور توسط Vue:
برای ارسال اطلاعات فرم به اكشن متد در دات نت كور توسط Vue باید از كتابخانه Axios استفاده كنیم.
اگر با جی كوئری كار كرده باشید احتمالا از ایجكس استفاده كرده اید.
یك نكته را به خاطر داشته باشید (در استفاده از axios) در پارامتر ورودی اكشن متد باید حتما از خاصیت FormBody استفاده كنید یعنی:
public IActionResult GetData([FormBody] User user)
{
return View();
}
اگر خاصیت فرم بادی قرار داره نشود اطلاعات دریافت نمی شوند!
در مطلب بعدی یك مثال ساده برای ارسال نام و نام خانوادگی به اكشن متد را توضیح خواهم داد.
#axios #DotNetCore #Vue_Js
@WebDevelopmentReferences
برای ارسال اطلاعات فرم به اكشن متد در دات نت كور توسط Vue باید از كتابخانه Axios استفاده كنیم.
اگر با جی كوئری كار كرده باشید احتمالا از ایجكس استفاده كرده اید.
یك نكته را به خاطر داشته باشید (در استفاده از axios) در پارامتر ورودی اكشن متد باید حتما از خاصیت FormBody استفاده كنید یعنی:
public IActionResult GetData([FormBody] User user)
{
return View();
}
اگر خاصیت فرم بادی قرار داره نشود اطلاعات دریافت نمی شوند!
در مطلب بعدی یك مثال ساده برای ارسال نام و نام خانوادگی به اكشن متد را توضیح خواهم داد.
#axios #DotNetCore #Vue_Js
@WebDevelopmentReferences
مثالی از ارسال اطلاعات به اكشن متد در دات نت كور توسط Vue و Axios:
در این مثال می خواهیم نام و نام خانوادگی را از كاربر دریافت كرده و به اكشن متد خاصی ارسال كنیم.
ابتدا كتابخانه های Vue و Axios را به صفحه اضافه میكنیم، همینطور فایل جی اس خودمان:
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="/app/app.js"></script>
فرم مورد نظر هم به صورت زیر خواهد بود:
<div id="app">
<input name="firstName" v-model="firstName" placeholder="First Name"/>
<br/>
<input name="lastName" v-model="lastName" placeholder="Last Name"/>
<br/>
<button v-on:click="sendToServer">Submit</button>
</div>
فایل app.js كه كدهای مورد نیاز است را به صورت زیر می نویسیم:
new Vue({
el: "#app",
data: {
firstName: "",
lastName: ""
},
methods: {
sendToServer: function () {
axios({
method: 'post',
url: '/home/index',
data: {
"firstName": this.firstName,
"lastName": this.lastName
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
}
});
دقت كنید، یك متد داریم با نام sendToServer كه وظیفه ارسال اطلاعات به سرور و دریافت پاسخ را به عهده دارد.
حالا یك ویو مدل نیاز داریم كه به صورت زیر تعریف میكنیم:
namespace VueJsToNetCore.ViewModel
{
public class User
{
public string LastName { get; set; }
public string FirstName { get; set; }
}
}
و در آخر اكشن متد مورد نظر كه وظیفه دریافت اطلاعات ارسالی و اعمال عملیات خاص روی آن را دارد به صورت زیر می باشد:
[HttpPost]
public IActionResult Index([FromBody]User user)
{
return View();
}
این اكشن در مثال ما در كنترلری با نام Home قرار دارد.
#Vue_Js #ASP_Net_Core #axios
@WebDevelopmentReferences
در این مثال می خواهیم نام و نام خانوادگی را از كاربر دریافت كرده و به اكشن متد خاصی ارسال كنیم.
ابتدا كتابخانه های Vue و Axios را به صفحه اضافه میكنیم، همینطور فایل جی اس خودمان:
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="/app/app.js"></script>
فرم مورد نظر هم به صورت زیر خواهد بود:
<div id="app">
<input name="firstName" v-model="firstName" placeholder="First Name"/>
<br/>
<input name="lastName" v-model="lastName" placeholder="Last Name"/>
<br/>
<button v-on:click="sendToServer">Submit</button>
</div>
فایل app.js كه كدهای مورد نیاز است را به صورت زیر می نویسیم:
new Vue({
el: "#app",
data: {
firstName: "",
lastName: ""
},
methods: {
sendToServer: function () {
axios({
method: 'post',
url: '/home/index',
data: {
"firstName": this.firstName,
"lastName": this.lastName
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
}
});
دقت كنید، یك متد داریم با نام sendToServer كه وظیفه ارسال اطلاعات به سرور و دریافت پاسخ را به عهده دارد.
حالا یك ویو مدل نیاز داریم كه به صورت زیر تعریف میكنیم:
namespace VueJsToNetCore.ViewModel
{
public class User
{
public string LastName { get; set; }
public string FirstName { get; set; }
}
}
و در آخر اكشن متد مورد نظر كه وظیفه دریافت اطلاعات ارسالی و اعمال عملیات خاص روی آن را دارد به صورت زیر می باشد:
[HttpPost]
public IActionResult Index([FromBody]User user)
{
return View();
}
این اكشن در مثال ما در كنترلری با نام Home قرار دارد.
#Vue_Js #ASP_Net_Core #axios
@WebDevelopmentReferences
تبدیل آدرس لوكال (localhost) به آدرس http و https به صورتی كه در اینترنت در دسترس باشد:
زمانی كه یك پروژه وب را میخواهید در اینترنت نمایش دهید(به دوستان و یا حتی تست) و یا پروژه نیاز به اجرا شدن در آدرس https دارد باید یك هاست و دامنه و گواهی نامه ssl تهیه كنید و هربار وب سایت را آپلود كنید.
با استفاده از این آموزش به راحتی می توانیم آدرس localhost:port را در حالت http و https در بستر اینترنت به صورتی كه تمام كاربران به آن دسترسی داشته باشند اجرا كنیم.
برای این كار وارد سایت www.ngrok.com می شوید
ثبت نام می كنید
از قسمت دانلود نرم افزار مربوط به سیستم عامل خودتان را دانلود میكنید
بعد از دانلود نرم افزار آن را از حالت فشرده خارج كرده و در پوشه ای(هر جای سیستم مهم نیست) ذخیره میكنید.
پروژه خود را اجرا كنید (مثلا عزیزانی كه دات نت كار میكنند در Visual Studio با فشردن کلید F5 اجرا میکنند)
با توجه به نرم افزار شما و زبان برنامه نویسی شما آدرس شما شبیه localhost:port خواهد بود که port عدد می باشد.
حالا با Command Prompt وارد آدرس پوشه ای كه ساختیم می شوید و دستور زیر را اجرا میكنید:
ngrok http [port] -host-header="localhost:[port]"
اگر مراحل را درست انجام داده باشد باید آدرس هایی شبیه به http://xxxxxx.ngrok.io و httpS://xxxxxxxx.ngrok.io را ببینید و یك سری توضیحات درباره وضعیت اپلیكیشن شما و اتصالات و...
حالا به راحتی با وارد كردن این دو آدرس می توانید
#Server #Https
@WebDevelopmentReferences
زمانی كه یك پروژه وب را میخواهید در اینترنت نمایش دهید(به دوستان و یا حتی تست) و یا پروژه نیاز به اجرا شدن در آدرس https دارد باید یك هاست و دامنه و گواهی نامه ssl تهیه كنید و هربار وب سایت را آپلود كنید.
با استفاده از این آموزش به راحتی می توانیم آدرس localhost:port را در حالت http و https در بستر اینترنت به صورتی كه تمام كاربران به آن دسترسی داشته باشند اجرا كنیم.
برای این كار وارد سایت www.ngrok.com می شوید
ثبت نام می كنید
از قسمت دانلود نرم افزار مربوط به سیستم عامل خودتان را دانلود میكنید
بعد از دانلود نرم افزار آن را از حالت فشرده خارج كرده و در پوشه ای(هر جای سیستم مهم نیست) ذخیره میكنید.
پروژه خود را اجرا كنید (مثلا عزیزانی كه دات نت كار میكنند در Visual Studio با فشردن کلید F5 اجرا میکنند)
با توجه به نرم افزار شما و زبان برنامه نویسی شما آدرس شما شبیه localhost:port خواهد بود که port عدد می باشد.
حالا با Command Prompt وارد آدرس پوشه ای كه ساختیم می شوید و دستور زیر را اجرا میكنید:
ngrok http [port] -host-header="localhost:[port]"
اگر مراحل را درست انجام داده باشد باید آدرس هایی شبیه به http://xxxxxx.ngrok.io و httpS://xxxxxxxx.ngrok.io را ببینید و یك سری توضیحات درباره وضعیت اپلیكیشن شما و اتصالات و...
حالا به راحتی با وارد كردن این دو آدرس می توانید
#Server #Https
@WebDevelopmentReferences
در استفاده از Lazy Loadig مراقب باشید!
Lazy Loading یك امكان در Entity Framework است كه به شما امكان میدهد بدون نگرانی روابط جداول اطلاعات را لود كنید.
به عنوان مثال در پروژه ای به این صورت مدلها پیاده سازی شده اند كه هر دسته بندی تعدادی مطلب دارد، هر مطلب تعدادی نظر و همینطور تعدادی برچسب دارد.
در واكشی به صورت Lazy Loadig شما نگران واكشی مطالب،نظرات و برچسبها بعد از واكشی دسته نیستید و تنها دسته را لود میكنید و به تمام روباط دسترسی دارید:
var category = db.Categories.FirstOrDefault();
var posts = category.Posts.ToList();
foreach(var post in posts)
{
var comments = post.Comments.ToList();
}
همانطور كه دیدید تنها با لود كردن یك دسته به تمام جداول زیرمجموعه آن نیز دسترسی داریم.
در نگاه اول امكان بسیار خوبی به نظر میرسد، بله در مواردی كه اطلاعات كم باشد مشكلی ایجاد نمیكند ولی تصور كنید تعداد بالایی از اطلاعات را در یك درخواست لود كنید در حالی كه تمام اطلاعات موجود در جداول یرمجموعه آن نیز قرار است لود شود در صورتی كه نیازی به آنها ندارید، مثلا هدف تنها نمایش عناوین مطالب یك دسته باشد، در این مثال نیازی به نظرات و برچسب ها نداریم!
در مقابل Lazy Loading امكان Eager Loading را داریم كه در هر كوئری تنها اطلاعات مورد نیاز را لود میكند، یعنی در مثال بالا اگر Lazy Loadig غیرفعال باشد با نوشتن كوئری زیر تنها به دسته دسترسی داریم و جداول مربوط به آن لود نمیشوند:
var category = db.Categories.FirstOrDefault();
كه اگر كد زیر را بنویسیم با خطا روبرو خواهیم شد:
var posts = category.Posts.ToList();
در اصل حالت استاندار نیز به همین صورت می باشد كه تنها اطلاعاتی كه مورد نیاز است را لود كنیم.
حال در مثال بالا وقتی Lazy Loading غیر فعال باشد اگر به مطالب هم نیاز داشته باشیم باید كوئری را به صورت زیر تغییر دهیم:
var categoriy = db.Categories.Include("Posts").FirstOrDefault();
به خاطر داشته باشید كه به صورت پیش فرض حالت Lazy Loading فعال می باشد و برای غیر فعال كردن به دو صورت زیر می توانیم عمل كنیم:
1. تنها در كوئری فعلی:
context.Configuration.LazyLoadingEnabled = false;
2. غیر فعال كردن به صورت عمومی در كلاس DbContext
Configuration.LazyLoadingEnabled = false;
بعد از انجام این عمل برای واكشی اطلاعات مرتبط باید از متد Include استفاده شود.
*** نكته : اگر از EF Core استفاده میكنید نیازی به غیرفعال كردن Lazy Loading ندارید به این دلیل كه این امكان در EF Core وجود ندارد و باید برای واكشی اطلاعات مرتبط از Eager Loading استفاده كنید.
#Lazy_Loadig #Eager_Loading #EntityFramework
@WebDevelopmentReferences
Lazy Loading یك امكان در Entity Framework است كه به شما امكان میدهد بدون نگرانی روابط جداول اطلاعات را لود كنید.
به عنوان مثال در پروژه ای به این صورت مدلها پیاده سازی شده اند كه هر دسته بندی تعدادی مطلب دارد، هر مطلب تعدادی نظر و همینطور تعدادی برچسب دارد.
در واكشی به صورت Lazy Loadig شما نگران واكشی مطالب،نظرات و برچسبها بعد از واكشی دسته نیستید و تنها دسته را لود میكنید و به تمام روباط دسترسی دارید:
var category = db.Categories.FirstOrDefault();
var posts = category.Posts.ToList();
foreach(var post in posts)
{
var comments = post.Comments.ToList();
}
همانطور كه دیدید تنها با لود كردن یك دسته به تمام جداول زیرمجموعه آن نیز دسترسی داریم.
در نگاه اول امكان بسیار خوبی به نظر میرسد، بله در مواردی كه اطلاعات كم باشد مشكلی ایجاد نمیكند ولی تصور كنید تعداد بالایی از اطلاعات را در یك درخواست لود كنید در حالی كه تمام اطلاعات موجود در جداول یرمجموعه آن نیز قرار است لود شود در صورتی كه نیازی به آنها ندارید، مثلا هدف تنها نمایش عناوین مطالب یك دسته باشد، در این مثال نیازی به نظرات و برچسب ها نداریم!
در مقابل Lazy Loading امكان Eager Loading را داریم كه در هر كوئری تنها اطلاعات مورد نیاز را لود میكند، یعنی در مثال بالا اگر Lazy Loadig غیرفعال باشد با نوشتن كوئری زیر تنها به دسته دسترسی داریم و جداول مربوط به آن لود نمیشوند:
var category = db.Categories.FirstOrDefault();
كه اگر كد زیر را بنویسیم با خطا روبرو خواهیم شد:
var posts = category.Posts.ToList();
در اصل حالت استاندار نیز به همین صورت می باشد كه تنها اطلاعاتی كه مورد نیاز است را لود كنیم.
حال در مثال بالا وقتی Lazy Loading غیر فعال باشد اگر به مطالب هم نیاز داشته باشیم باید كوئری را به صورت زیر تغییر دهیم:
var categoriy = db.Categories.Include("Posts").FirstOrDefault();
به خاطر داشته باشید كه به صورت پیش فرض حالت Lazy Loading فعال می باشد و برای غیر فعال كردن به دو صورت زیر می توانیم عمل كنیم:
1. تنها در كوئری فعلی:
context.Configuration.LazyLoadingEnabled = false;
2. غیر فعال كردن به صورت عمومی در كلاس DbContext
Configuration.LazyLoadingEnabled = false;
بعد از انجام این عمل برای واكشی اطلاعات مرتبط باید از متد Include استفاده شود.
*** نكته : اگر از EF Core استفاده میكنید نیازی به غیرفعال كردن Lazy Loading ندارید به این دلیل كه این امكان در EF Core وجود ندارد و باید برای واكشی اطلاعات مرتبط از Eager Loading استفاده كنید.
#Lazy_Loadig #Eager_Loading #EntityFramework
@WebDevelopmentReferences
✍️ فریم ورك ASP.NET Core سریع است؟
🖋 همانطور که می دانید NodeJS نزدیک ترین رقیب ASP.NET بوده که اگر منصفانه نتایج بررسی ها را ببینیم NodeJS همیشه جلوتر بوده و همین امر باعث مهاجرت خیلی ها به سمت Node شده بود.
اما با معرفی ASP.NET Core این رتبه بندی تغییر کرده به طوری که ASP.NET Core با فاصله بسیار زادی از رقیب خود یعنی NodeJs جلو زده است.
برای اطمینان می توانید نتیجه مقایس ها را جست و جو کنید.
برای مقایسه ابتدا باید شراط برای شرکت کننده ها یک سان باشد، می دانیم که سرعت وب سایت به شرایط مختلفی مثل سرور، سخت افزار سرور، سیستم عامل، تعداد درخواست ها، نوع درخواست ها و حتی سرعت اینترنت کاربر بازدید کننده بستگی دارد، برای منصفانه بودن مقایسه باید شایط عمومی یکسان درنظر گرفته شود.
متغیرهای ما در این مقایسه NodeJs و ASP.NET Core هستند.
در زمینه مقایسه، سایت Techempower نتایج قابل قبولی را ارئه میدهد که از نظر برنامه نویسیان مورد تایید است البته هنوز گستره کامل مقایسه را انجام نمیدهد اما تا همینجای کار هم کفایت می کند.
ساده ترین حالت مقایسه حالت نمایش یک نوشته معمولی Hello World است، می دانیم که اگر یک سیستم در نمایش نوشته ساده کند باشد قطعا در حالت های سخت تر هم کند خواهد بود.
عداد درخواست های پاسخ داده شده از 50 هزار در ثانیه
(در ASP MVC قدیم) به 1.15 میلیون (در ASP Core ) رسید. یعنی عملکرد ASP Core در مقایسه با ASP 4.6 حدود 23 برابر بهتر شده بود.
🎖🎖 آخرین آمار رسمی Techempower در روز ولنتاین منتشر شد و برای ASP Core 2 رکورد 2.216 میلیون را ثبت کرده است.
برای اثبات ادعا می توانید نتیجه مقایسات را در وب سایت Techempower مشاهده کنید.
راه بهتر و تست شده در محیط واقعی را هم می توانید داشته باشید :
📃 سال گذشته شرکت Raygun اعلام کرد با مهاجرت از Nodejs به ASP Core بازدهی سایتهایش بدون هیچ تغییر سخت افزاری به میزارن 2000 درصد بهبود پیدا کرده است. این یعنی 20 برابر شدن ظرفیت سرورها بدون هزینه اضافی!
متن کامل این ادعا را در بلگ خود ریگان مطالعه برمایید :
https://raygun.com/blog/increased-throughput-net-core/
#Benchmark #ASP_NET_Core #NodeJS
http://t.me/WebDevelopmentReferences
🖋 همانطور که می دانید NodeJS نزدیک ترین رقیب ASP.NET بوده که اگر منصفانه نتایج بررسی ها را ببینیم NodeJS همیشه جلوتر بوده و همین امر باعث مهاجرت خیلی ها به سمت Node شده بود.
اما با معرفی ASP.NET Core این رتبه بندی تغییر کرده به طوری که ASP.NET Core با فاصله بسیار زادی از رقیب خود یعنی NodeJs جلو زده است.
برای اطمینان می توانید نتیجه مقایس ها را جست و جو کنید.
برای مقایسه ابتدا باید شراط برای شرکت کننده ها یک سان باشد، می دانیم که سرعت وب سایت به شرایط مختلفی مثل سرور، سخت افزار سرور، سیستم عامل، تعداد درخواست ها، نوع درخواست ها و حتی سرعت اینترنت کاربر بازدید کننده بستگی دارد، برای منصفانه بودن مقایسه باید شایط عمومی یکسان درنظر گرفته شود.
متغیرهای ما در این مقایسه NodeJs و ASP.NET Core هستند.
در زمینه مقایسه، سایت Techempower نتایج قابل قبولی را ارئه میدهد که از نظر برنامه نویسیان مورد تایید است البته هنوز گستره کامل مقایسه را انجام نمیدهد اما تا همینجای کار هم کفایت می کند.
ساده ترین حالت مقایسه حالت نمایش یک نوشته معمولی Hello World است، می دانیم که اگر یک سیستم در نمایش نوشته ساده کند باشد قطعا در حالت های سخت تر هم کند خواهد بود.
عداد درخواست های پاسخ داده شده از 50 هزار در ثانیه
(در ASP MVC قدیم) به 1.15 میلیون (در ASP Core ) رسید. یعنی عملکرد ASP Core در مقایسه با ASP 4.6 حدود 23 برابر بهتر شده بود.
🎖🎖 آخرین آمار رسمی Techempower در روز ولنتاین منتشر شد و برای ASP Core 2 رکورد 2.216 میلیون را ثبت کرده است.
برای اثبات ادعا می توانید نتیجه مقایسات را در وب سایت Techempower مشاهده کنید.
راه بهتر و تست شده در محیط واقعی را هم می توانید داشته باشید :
📃 سال گذشته شرکت Raygun اعلام کرد با مهاجرت از Nodejs به ASP Core بازدهی سایتهایش بدون هیچ تغییر سخت افزاری به میزارن 2000 درصد بهبود پیدا کرده است. این یعنی 20 برابر شدن ظرفیت سرورها بدون هزینه اضافی!
متن کامل این ادعا را در بلگ خود ریگان مطالعه برمایید :
https://raygun.com/blog/increased-throughput-net-core/
#Benchmark #ASP_NET_Core #NodeJS
http://t.me/WebDevelopmentReferences
Raygun Blog
.Net core or node js? [We increased throughput by 2,000%]
We'll walk you through how by changing node.js to .Net Core we went from 1,000 requests per second per node to 20,000 requests per second. Check it out now