نمایش نتایج 1 تا 13 از 13

نام تاپیک: مدیریت درخواست های زیاد به برنامه در Entity Framework

  1. #1
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    مدیریت درخواست های زیاد به برنامه در Entity Framework

    سلام دوستان
    من در صفحات view برنامه ام، برای مدیریت دسترسی به اجزای مختلف صفحه از Razor استفاده کردم و امکان دسترسی به اونها رو بر اساس جدولی در دیتابیس چک میکنم.
    مشکل اینجاست که اگر همزمان تعداد زیادی صفحه (مثلا 10 صفحه) با هم باز بشن برنامه کلا به خطا می خوره و با خطاهای Connection state is open یا Connection state is connecting روبرو میشم.
    طبیعتا این تعداد صفحه زیاد نیست و برنامه باید بتونه این حجم درخواست رو مدیریت کنه اما نمی دونم چطوری باید این کار رو انجام بدم.
    اصل مشکل هم در تابعی هست که همین دسترسی ها رو در چندتا جدول DB که یکی از جداول اونها تقریبا 2000 ردیف داده داره، داره چک میکنه.
    داده ها هم به کمک LINQ در حال فراخوانی هستند. میشه منو راهنمایی کنید چطور جلوی این کندی و بروز خطا رو بگیرم؟

  2. #2
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    دوستان کسی هست که بتونه راهنمایی کنه؟

  3. #3
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    من هم سیستم مشابهی (کنترل دسترسی بر اساس پرمیشن های ثبت شده در دیتابیس) در پروژه هام پیاده سازی کرده ام.

    برای بررسی پرمیشن های کار نیاز نیست هر بار به دیتابیس مراجعه کنید. من هنگامی که کاربر لاگین میکنه و یا به عنوان یک کاربر لاگین شده به سایت وارد میشه در متد Session_Start در Global.asax دسترسی های کاربر رو تبدیل به یک لیست می کنم و داخل Session قرار میدم. هر بار نیاز به بررسی دسترسی است روی اون لیست کوئری میزنم. این طوری سرعت کار خیلی بالا میره.

  4. #4
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    نقل قول نوشته شده توسط مهدی کرامتی مشاهده تاپیک
    من هم سیستم مشابهی (کنترل دسترسی بر اساس پرمیشن های ثبت شده در دیتابیس) در پروژه هام پیاده سازی کرده ام.

    برای بررسی پرمیشن های کار نیاز نیست هر بار به دیتابیس مراجعه کنید. من هنگامی که کاربر لاگین میکنه و یا به عنوان یک کاربر لاگین شده به سایت وارد میشه در متد Session_Start در Global.asax دسترسی های کاربر رو تبدیل به یک لیست می کنم و داخل Session قرار میدم. هر بار نیاز به بررسی دسترسی است روی اون لیست کوئری میزنم. این طوری سرعت کار خیلی بالا میره.
    خیلی ممنون از راهنمایی ارزشمندتون، فقط یه نکته، این موضوع از لحاظ امنیتی مساله ساز نیست؟ چون بحث امنیت در این سامانه مون خیلی مهمه و قرار تست امنیتی بشه. در چنین حالتی امکان جعل سشن برای کاربر دیگه ای وجود نداره؟

  5. #5
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    برای انجام جعل سشن، فرد مهاجم میبایست از یکی از امکانات زیر برخوردار باشد:
    1. به سیستم کاربر صاحب سشن دسترسی داشته باشد.
    2. به روتر شبکه دسترسی ادمین داشته باشد.
    3. از طریق Script Injection در سایت شما بتواند کوکی ها و دیگر شناسه های مدیریت کننده سشن را بخواند و در سرور/سایت خودش Save کند.

    برخورداری از مورد 1 و 2 کار راحتی نیست.

    و اما برای مقابله با Script Injection (معروف به XSS Attack):
    اگر شما در جاهایی که مقادیری را از کاربران سایت در Input ها دریافت می کنید (منوط به اینکه با استفاده از صفتی مانند AllowHtml اجازه وارد کردن کد Html/Javascript را در آن Input داده باشید) با استفاده از امکانی مانند HtmlSanitizer ورودی را از کدهای آلوده تصفیه کنید هیچ گاه مشکل Script Injection را در سایت تان نخواهید داشت.

  6. #6
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    واقعا ازتون ممنونم که با حوصله و دقیق جوابم رو دادید.

    من از روشی که گفته بودید هم استفاده کردم و لیست دسترسی های کاربر رو به صفحات مختلف در داخل یک لیست در داخل سشن نگهداری کردم و بعد در بخش های مربوطه از این لیست استفاده کردم. اما همچنان وقتی که چند درخواست همزمان به سمت سرور ارسال میشه برنامه قفل می کنه و تمام صفحات با کمی تاخیر به خطا می خورند. امکان استفاده از رویکرد غیرهمزمان (Async) هم متاسفانه وجود نداشت (چون به خروجی این متدها برای ادامه کار نیاز هست). به نظرم مشکل باید از جای دیگه ای باشه چون این خیلی طبیعی هست که همزمان تعداد زیادی درخواست برای باز کردن صفحه به سرور ارسال بشه.
    یه نکته هم در مورد نحوه انجام تست بگم که شاید به اون ایراد وارد باشه، من و چند کاربر دیگه همزمان از روی سیستم های مختلف یک صفحه مشخص رو در چندین تب باز می کنیم تا اینطوری تا حدی تست فشار رو روی سامانه انجام بدیم، آیا رویکرد تست مون اشتباه هست که نتیجه ی درستی نمی گیریم؟

  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    سروری که در موردش صحبت می کنید یک وب سرور هست که از جایی تهیه کرده اید و یا یک سرور در شبکه محلی؟

  8. #8
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    بله یک سرور اختصاصی مربوط به شهرداری هست که ما در قالب یک VPS به اون دسترسی داریم. الان با ورود دو یا سه کاربر خیلی این احتمال وجود داره که خیلی زود با خطا مواجه بشیم. در حال حاضر با ورود دو یا سه کاربر دائما با خطای Connection state is open و connection state is connectiong و یا خطاهای مشابه اون که به کانکشن دیتابیس مربوط هست مواجه میشیم.

  9. #9
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    1- کانکشن به دیتابیس رو خودتون دستی باز یا بسته می کنید؟

    2- آیا از آبجکت DbContect متغیر استاتیک ساخته اید و از آن استفاده می کنید؟

  10. #10
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    نقل قول نوشته شده توسط مهدی کرامتی مشاهده تاپیک
    1- کانکشن به دیتابیس رو خودتون دستی باز یا بسته می کنید؟
    نه کانکشن ها رو به صورت دستی باز و بسته نمی کنیم.

    نقل قول نوشته شده توسط مهدی کرامتی مشاهده تاپیک
    2- آیا از آبجکت DbContect متغیر استاتیک ساخته اید و از آن استفاده می کنید؟
    بله. از db در ابتدای هر کلاس یا کنترلر یک شی ساخته شده و از اون استفاده میشه

  11. #11
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    ممکنه ورژنی از SQL Server که روی سرور شما نصبه نگارش پایین (مثلا Developer Edition) است و تعداد کانکشن های زیادی رو پشتیبانی نمی کنه.

    همچنین، می توانید به صورت دستی کانکشن ها رو قبل از Query باز و بسته کنید:
    context.Database.Connection.Open();
    ...
    ...
    context.Database.Connection.Close();

  12. #12
    کاربر جدید
    تاریخ عضویت
    فروردین 1394
    محل زندگی
    مشهد
    پست
    18

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    نقل قول نوشته شده توسط مهدی کرامتی مشاهده تاپیک
    ممکنه ورژنی از SQL Server که روی سرور شما نصبه نگارش پایین (مثلا Developer Edition) است و تعداد کانکشن های زیادی رو پشتیبانی نمی کنه.
    نسخه ی روی سرور Enterprise هست و از اون جهت مشکلی نیست.

    نقل قول نوشته شده توسط مهدی کرامتی مشاهده تاپیک
    همچنین، می توانید به صورت دستی کانکشن ها رو قبل از Query باز و بسته کنید:
    context.Database.Connection.Open();
    ...
    ...
    context.Database.Connection.Close();
    ممنون این رو هم امتحان میکنم.
    مشکل با سوالی که از من پرسیدید حل شد. برای توابعی که در صفحاتم تعداد دفعات زیادی فراخوانی می شدند با استفاده از using یک Context جدید ساختم. هم سرعت بارگذاری صفحات خیلی خوب شد و هم تعداد خطاهای وابسته به این موضوع به صفر رسید. امیدوارم که راه درستی رو برای تست تحمل بار انتخاب کرده باشم.

    از راهنمایی و حوصله ی شما در پاسخگویی تون خیلی متشکرم

  13. #13
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مدیریت درخواست های زیاد به برنامه در Entity Framework

    خوشحالم که مشکلت حل شد

تاپیک های مشابه

  1. تفاوت entity framework ، linq to entity و Entity Framework Code First
    نوشته شده توسط negar.rafie در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: دوشنبه 24 آذر 1393, 10:43 صبح
  2. سوال: آپلود سایت بر روی هاست(MVC+Entity Framework+SQL 2008)
    نوشته شده توسط حامد_رشنو در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 05 فروردین 1393, 21:12 عصر
  3. پیدا کردن زیر گروه ها با entity framework
    نوشته شده توسط na3er-faraji در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 0
    آخرین پست: یک شنبه 08 بهمن 1391, 19:55 عصر
  4. انتقال سایت نوشته شده با entity framework به هاست
    نوشته شده توسط ali_behshahr در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 19 آذر 1391, 20:09 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •