DotNetZoom
2.95K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
#GoogleMap, #Leaflet, #CkEditor
استفاده از گوگل مپ در ویرایشگر متنی تحت وب CkEditor
https://goo.gl/KrD0iP

یکی از بهترین و کامل ترین پلاگین های کار با GoogleMap پلاگین Leaflet می باشد. و مزیت اون سازگاری کامل با موبایل هست
https://leafletjs.com/
این کتابخانه سورس باز بوده و در آدرس زیر دردسترس است
https://github.com/Leaflet/Leaflet
و اما همین پلاگین رو برای ویرایشگر متنی CkEditor نوشته شده و این امکان رو به شما میده که داخل ckeditor مپ جدید ای ایجاد کنین
https://ckeditor.com/addon/leaflet
نمونه:
https://www.ranelpadon.com/sites/all/libraries/ckeditor/plugins/leaflet/demo/index.html

@IranAspMvc
#Bootstrap #Foundation #Skeleton

مقایسه 3 فریمورک bootstrap, foundation, skeleton

https://responsive.vermilion.com/compare.php

@IranAspMvc
#Concurrency , #EntityFramework
چه کسی زودتر ظرف میوه را بر می دارد ؟! (همزمانی / Concurrency)
https://www.codeproject.com/KB/aspnet/6WaysLock/1a.JPG

یکی از مواردی که در پروژه های بزرگ حائز اهمیت است مبحث Concurrency یا همزمانی می باشد
فرض کنید دو نفر همزمان از یک حساب بانکی می خواهند پول برداشت کنند و موجودی 200 تومان است
هر دو کارت بانکی خود را وارد کرده و موجودی 200 تومان را مشاهده میکنند. اولی 200 تومان برداشت میکند. و دومی نیز درخواست برداشت 200 تومان از حساب را انجام میدهد
در اینجا باید شرطی گذاشت که اگر موجودی همچنان 200 تومان هست اجازه برداشت به دومی صادر شود و اگر موجودی فعلی 0 شده اجازه برداشت صادر نشود. که در غیر این صورت سیستم بانکی 200 تومان ضرر خواهد کرد.
اگر بخواهیم فنی بررسی کنیم. برنامه نویس ما، برای ویرایش حساب بانکی، علاوه بر آیدی حساب، موجودی فعلی که درزمان ویرایش وجود داشته را به سمت سرور پاس میدهد که در صورت صحت هر دو شرط عملیات آپدیت وانجام شود.
اینجاست شرط عملیات ما صرفا بر پایه آیدی نبوده و شامل پارامتر های دیگری نیز می شود.
مشابه همین مثال در ویرایش همزمان یک پست در یک وبسایت ممکن است رخ دهد
برای حل این مشکل (همزمانی) باید از روش بالا که توضیح داده شد. و یا روش دیگری که Entity Framework تعبیه کرده است به نام RowVersion استفاده کرد
در این روش یک ستون به نام RowVersion که نوع آن byte[] است به جدول شما اضافه میشود. که این فیلد به صورت افزایشی و غیر تکراری به طور خودکار توسط EF مقدار دهی شود
در واقع با هر بار اپدیت این فیلد مقدار جدیدی میگیرد. نشان میدهد که مقادیر این سطر تغییر یافته است. پس به شخص دیگری که در حال آپدیت کردن همین سطر است هشدار میدهد که شخص دیگری همزمان با شما این سطر را ویرایش کرده است. دیگر اجازه ویرایش نمیدهد. همچنین میتوان مقادیر جدید را به شخص نشان داد و یا اینکه چه کسی آن را ویرایش کرده است

آموزش :
https://goo.gl/3LvklT
https://goo.gl/qekRho

@IranAspMvc
Forwarded from Iran .Net
Forwarded from Iran .Net
تیم ASP.NET انقلابی به پا کرده اند. آخرین پلتفرم آن ها (ASP.NET Core) در تست های این تیم توانسته است تعداد 1.15 میلیون درخواست را در یک ثانیه مدیریت کرده و پاسخ دهد.
این در صورتی است که نسخه ASP.NET 4.6، بر روی همان سخت افزار تنها توانسته است 0.05 میلیون درخواست را در ثانیه پاسخ دهد.
این یعنی چیزی در حدود 2300 درصد افزایش قدرت پاسخگوییِ پلتفرم محبوب ما! 👍
#AspMvc, #CMS, #Orchard, #MvcForum, #NopCommerce

سه سیستم که پیشنهاد می‌شود(نکته مهم: متن باز بودن این سه سیستم هستش):
Orchard -> وب سایت
MvcForum -> فروم
NopCommerce -> فروشگاه
جریان اختراع چرخ رو که میدونید... همون.
در زیر سه لینک مخزن قرار گرفته است:
https://github.com/OrchardCMS/Orchard
https://github.com/YodasMyDad/mvcforum
https://github.com/nopSolutions/nopCommerce/releases/

@IranAspMvc
#JsTree, #TreeView, #Plugin, #AspMvc
نمایش ساختار درختی با jsTree در Asp Mvc
https://www.jstree.com/jstree.png

یکی از بهترین پلاگین های نمایش ساختار درختی jsTree بوده (jstree.com) که قابلیت های زیر را دارا می باشد
Checkbox - ContextMenu - DragAndDrop - Search , ....

آموزش و اطلاعات بیشتر :
Use jsTree in Asp Mvc
https://goo.gl/sJP5Oz

Lazy-loading with jsTree in Asp Mvc
https://goo.gl/z1MPKc

jsTreeWrapper for Asp Mvc
https://jstreemvcwrapper.codeplex.com/

jsTree Sample using Asp Mvc
https://jstresample.codeplex.com

@IranAspMvc
#Loadding

مجموعه ای از Loading های زیبا و مدرن

https://tobiasahlin.com/spinkit/

@IranAspMvc
#AspMvc, #EntityFramework, #CodeFirst, #Project, #Sample, #Source,

سورس چندین پروژه مختلف که با Asp Mvc و EF و ... نوشته شده در زیر هست.
مرور کد هاش رو به همه پیشنهاد میدم. خیلی مفیده و میتونه بهتون ایده بده

سورس پروژه فروشگاه اینترنتی با AspMVC - EF CodeFirst
https://www.dotnettips.info/projects/details/22
https://github.com/rabbal/My-Golden-City-Shop

طراحی فریمورک برای کار با Asp.net MVC و EF به صورت NTier
https://www.dotnettips.info/projects/details/23
https://github.com/rabbal/Mvc5

سورس پروژه سیستم مدیریت سوابق آموزشی با Asp Mvc
https://www.dotnettips.info/projects/details/27
https://github.com/rabbal/Decision

سورس پروژه سامانه برگزاری مسابقات ورزشی با ASP.NET MVC و AngularJS
https://www.dotnettips.info/projects/details/26
https://github.com/MehdiSaeedifar/SportsSystem

سورس سیستم مدیریت محتوای IRIS
https://www.dotnettips.info/projects/details/13
https://github.com/MehdiSaeedifar/iriscms

سورس پروژه فروشگاه اینترنتی (الکترونیک) با معماری سه لایه
https://www.dotnettips.info/projects/details/2

@IranAspMvc
#RestSharp, #HttpApi
Simple REST and HTTP API Client for .NET
کار با Api های Http در سی شارپ

خیلی وقتا میخوایم توی دات نت از Api سرویس های دیگه که به صورت Rest و تحت Http هستند استفاده کنیم.
مثلا Request هایی با متد (Get, Post, Delete, Put, Head, ...) به سرور ارسال کنیم و مثلا Response اون که به صورت Json هست رو بخونیم و ...
در حالت عادی باید از کلاس WebClient یا WebRequest , WebResponse استفاده کنیم که کد نویسی اون کمی سخت و دارای محدودیت هایی هست
پروژه RestSharp در سایت (https://restsharp.org/) که به صورت سورس باز در آدرس زیر قابل دسترسی است همین کار رو ساده کرده و براحتی می تونین از Api های Rest و Http توی دات نت استفاده کنین
https://github.com/restsharp/RestSharp

آموزش:
Part1
https://goo.gl/scOzSq
Part2
https://goo.gl/uvqilO

@IranAspMvc
کانال دانستنی های دات نت
https://telegram.me/IranDotNet
#EntityFramework, #EFCore, #First_level_cache

می دانیم در EF، هر entity پس از لود شدن، در کش سطح اول خود ذخیره میشود و از آن موقع به بعد، هر زمانیکه EF یک کوئری جهت بازگرداندن آن اِنتیتی اجرا کند، همیشه اِنتیتی ذخیره شده در کش واکشی میشود و EF هیچ تلاشی برای فهمیدن اینکه آیا آن داده ی کش شده با مقدار واقعیِ اجرایِ آن کوئری برابر است یا خیر نمیکند. به عبارت دیگر، اگر شما از طریق فرآیند دیگری دیتابیس را به روز کرده باشید، EF متوجه این قضیه نخواهد شد و این باعث ایجاد ناهماهنگی و مشکل خواهد شد.
اما در چنین سناریوهایی راه حل چیست؟
راه حل این است که در مواقعی که میدانیم داده ی مورد نظر از طریق فرآیند دیگری نیز قابل تغییر است و میخواهیم اِنتیتی کش شده را از دیتابیس لود کنیم، باید ابتدا آن را از طریق Detach کردن از کش سطح اول پاک کنیم و پس از آن با استفاده از متد Reload و به صورت صریح آن را دوباره لود نماییم.
MyEntity e = ...;
ctx.Entry(e).State = EntityState.Detached;

ctx.Entry(e).Reload();

قابل ذکر است که در EF Core متد Reload وجود ندارد و باید به طریق دیگری این مشکل رفع گردد.

منبع :
https://weblogs.asp.net/ricardoperes/entity-framework-pitfalls-entity-refresh
Forwarded from طراحی و توسعه وب
توجه ❗️

زیاد هستند افرادی که با EF کار میکنند ! ولی فقط کار میکنند ؛ نه از پشت صحنه خبر دارند نه از کارایی کوئری های نازی که مینویسند که در نهایت این دوستان باعث میشوند که DBA های عزیز ، از Developer هایی که با EF کار میکنند به خوبی یاد کنند 😄

مسیر راه مربوط به کار با ORM مشهور Entity Framework :

https://www.dotnettips.info/learningpaths/details/2

همین الان شروع کنید 😊
#Entity_Framework #ORM #LearningPaths

@Webly
#Bootstrap, #Popover, #Plugin

نمایش Ajax ای یک Partial View در Popover بوت استرپ 3

https://goo.gl/vPS6qo

#IranAspMvc
#SEO

یک سایت خوب برای آنالیز سایت شما از لحاظ SEO

https://seolisa.ir/

@IranAspMvc
#EntityFramework #Performance #SpeedUp
راه های افزایش سرعت و پرفرمنس Entity Framework
—------------------------------
این باعث میشه که ChangeTracker غیر فعال بشه و برای مواقع Select نمایشی به درد میخوره.
db.Configuration.AutoDetectChangesEnabled = false;
—------------------------------
این درستور هم اخر کوئری هاتون میتونین بنویسید. کار همین بالایی رو انجام میده
db.Users.Select(p => p).AsNoTracking();
—------------------------------
این درستور Validation اعتبارسنجی توکار EF رو غیر فعال میکنه. زمانی از این استفاده کنین که از صحت اطلاعاتتون مطمئن هستید.
db.Configuration.ValidateOnSaveEnabled = false;
—------------------------------
استفاه از Skip و Take جهت صفحه بندی هم باید حواستون باشه
—------------------------------
دونستن فرق بین IQueryable و IEnumerable و اینکه چگونه ازشون استفاده کنیم هم خیلی مهمه (نکته : تمامی فیلتر های where رو قبل از .ToList انجام بدید)
https://www.dotnettips.info/Post/473
—------------------------------
فقط فیلد هایی که نیاز دارین رو توی Select بیارین نه همه فیلد ها
db.Users.Select(p => new { p.Id, p.Username, p.Fullname });
—------------------------------
از چندین dbContext استفاده نکنیم. از الگوی One Context Per Request استفاده کنیم.
—------------------------------
استفاده به جا از Eager loading و Lazy loading هم خیلی مهمه
https://www.dotnettips.info/post/840
—------------------------------
در تراکنش های بالا هر از چندگاهی Context مون رو Dispose کنیم و یا Context جدید ایجاد کنیم. به دلیل ذخیره شدن تمام تراکنش ها در حافظه در تراکنش های بالا با مشکل کمبود حافظه و کندی سرعت مواجه میشوید
—------------------------------
برای افزودن تعداد رکور بالا به صورت همزمان بهتره از BulkInsert استفاده کنین
چندین پلاگین برای اینکار وجود داره. از جمله :
EntityFramework.BulkInsert
EntityFramework.Extended
EntityFramework.Utilities
که بهترین اون ها EntityFramework.BulkInsert هست
https://goo.gl/hXxLvI
—------------------------------

منابع :
https://goo.gl/QW2CBW
https://goo.gl/1ACSwA
https://goo.gl/15ArJO

@IranAspMvc