اشتراکها
همانطور که در بالا اشاره کردید "در مثال فوق، نحوهی ترکیب دو Task را توسط Task.WhenAll .... "در برخی موارد استفاده از async باعث افزایش کارآیی نیز میشود، آیا در موردی که مثلا من در یک اکشن برای انجام کاری نیاز به 4 درخواست مجزا به دیتابیس دارم و بعد از گرفتن نتیجه این 4 درخواست میتوانم درخواست نهایی را به دیتابیس بفرستم، استفاده از async باعث افزایش کارایی نیز میشود ؟
برای تشریح بهتر من نتیجه تست خود را اضافه میکنم. من از mvc5 و EF6 database first استفاده کردم.
حالت sync :
حالت async:
در هر حالت بعد از انجام 3 درخواست ، درخواست نهایی را به سرور میفرستم (در کدهای بالا موجود نیست)
و نتیجه با جزئیات را در آخر اضافه کرده ام :
اما خلاصه میانگین روش sync 222 ms و روش async 191.75ms میباشد حدود 35.25ms تفات وجود دارد.
حال آیا تفاوت معنی دار میباشد؟ آیا کد async نوشته شده صحیح است؟ اگر صحیح نیست چه روشی صحیح میباشد؟ اگر نباید از async استفاده شود چه روشی بهتر است؟
همانطور که از کد مشخص است برای هدف authorization نوشتم، ولی اگر بخواهم به صورت async در فیلتر استفاده کنم امکانپذیر نیست ، آیا راهی وجود دارد برای استفاده از async در فیلتر سفارشی توی mvc5 ؟
برای تشریح بهتر من نتیجه تست خود را اضافه میکنم. من از mvc5 و EF6 database first استفاده کردم.
حالت sync :
var watch = Stopwatch.StartNew(); int actionId = db.CF_AccessLevel.Where(a => a.Name.ToLower().Trim() == "Edit").Select(a => a.CF_AccessLevelId).Single(); int moduleItemId = db.CF_ModuleItem.Where(m => m.Title.ToLower().Trim() == "license".ToLower().Trim()).Select(m => m.CF_ModuleItemId).Single(); int groupRoleId = db.Users.Where(u => u.UserId == 1).Select(u => u.UserRoleId).Single(); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds;
حالت async:
var watch = Stopwatch.StartNew(); var something = Task<int>.Factory.StartNew(() => db.CF_AccessLevel.Where(a => a.Name.ToLower().Trim() == "Edit").Select(a => a.CF_AccessLevelId).Single()); something.Wait(); int actionId = something.Result; var something1 = Task<int>.Factory.StartNew(() => db.CF_ModuleItem.Where(m => m.Title.ToLower().Trim() == "license".ToLower().Trim()).Select(m => m.CF_ModuleItemId).Single()); something1.Wait(); int moduleItemId = something1.Result; var something2 = Task<int>.Factory.StartNew(() => db.Users.Where(u => u.UserId == 1).Select(u => u.UserRoleId).Single()); something2.Wait(); int groupRoleId = something2.Result; watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds;
و نتیجه با جزئیات را در آخر اضافه کرده ام :
اما خلاصه میانگین روش sync 222 ms و روش async 191.75ms میباشد حدود 35.25ms تفات وجود دارد.
حال آیا تفاوت معنی دار میباشد؟ آیا کد async نوشته شده صحیح است؟ اگر صحیح نیست چه روشی صحیح میباشد؟ اگر نباید از async استفاده شود چه روشی بهتر است؟
همانطور که از کد مشخص است برای هدف authorization نوشتم، ولی اگر بخواهم به صورت async در فیلتر استفاده کنم امکانپذیر نیست ، آیا راهی وجود دارد برای استفاده از async در فیلتر سفارشی توی mvc5 ؟
202 | 221 |
179 | 226 |
198 | 208 |
197 | 219 |
188 | 245 |
195 | 207 |
193 | 217 |
187 | 220 |
171 | 212 |
227 | 215 |
177 | 312 |
187 | 222 |
191.75 | 227 |
اشتراکها
بررسی نکات مخفی در NET Core 3.
You've likely heard about the headline features in .NET Core 3.0 including Blazor, gRPC, and Windows desktop app support, but what else is there? This is a big release so come and see David Fowler and Damian Edwards from the .NET Core team showcase their favorite new features you probably haven't heard about in this demo-packed session.
نظرات مطالب
Url Routing در ASP.Net WebForms
سلام. سوال دیگه ای هم داشتم.
کاربر نتونه به فایل postshow.aspx به صورت مستقیم دسترسی داشته باشه
چطور جلوی دسترسی کاربران به آدرس اصلی فایل رو بگیریم؟
مثلا در مثال زیر :
route.MapPageRoute("PostDetail", "Post/{pi}/{pt}", "~/PostShow.aspx");
اشتراکها