PDA

View Full Version : حرفه ای: کارایی و قدرت asp.net mvc و ORM ها در پروژه های بزرگ



mtahmasebi
سه شنبه 16 تیر 1394, 10:26 صبح
سلام دوستان

میزان کارایی asp.net mvc در پروژه های بسیار بزرگ (نظیر یک اتوماسیون بزرگ با هزاران کاربر ) به چه میزان است؟
یه کسی می گفت به دلیل بعضی مشکلات از جمله نگهداری اطلاعات در حافظه رم در پروژه های بزرگ، mvc و ORM ها کارایی مناسبی ندارند..

منظر نظر دوستان حرفه ای و با تجربه هستم...


با تشکر..

r4hgozar
سه شنبه 16 تیر 1394, 16:01 عصر
سلام.
من تجربه پروژه خیلی بزرگ رو ندارم اما اگه شما درست برنامه نویسی لایه ای رو انجام بدی و اگه از theard ها استفاده کنی و async رو درست در برنامه نویسی استفاده کنی می دونم می تونی به شدت میزان مصرف رم و cpu رو کاهش بدی.
از طرف دیگه هم از sql 2014 که انتشار داده شده و مباحثی که توش مطرح شده میشه به شدت درج و واکشی اطلاهات رو سرعت داد.
موفق باشید

mtahmasebi
سه شنبه 16 تیر 1394, 16:19 عصر
قطعا ORM به خاطر اینکه یک واسط است کارایی اون نسبت به کار مستقیم پایین تره. از طرفی قرار گیری دیتاهای پایگاه داده در حافظه هم در زمان وجود حجم بالای دیتابیس باعث افت کارایی خواهد شد.
این موارد قطعی هستند. اما من می خواستم دوستان در این باره بحث کنند تا ابعاد این مسئله روشن تر بشه و ببینیم آیا راهی برای جلوگیری از این مسائل یا کاهش آن ها وجود داره.


با سپاس از دوستان گرامی..

hakim22
سه شنبه 16 تیر 1394, 17:27 عصر
روشهای زیادی برای مدیریت داده ها وجود داره

در پروژه های وب که شما با داده هایی کار میکنید که مستقیما بانک اطلاعاتی در ارتباط نیستند (رفت و برگشتی هستند) باید این اصل رو در مدیریت دیتا در نظر بگیرید و اطلاعات رو در سرور بدون دلیل بارگذاری نکنید.

در این پروژه ها استفاده از لایه ی Repository یک ضرورت هست. اما از اون مهمتر استفاده از الگوی UnitOfWork در مدیریت این Repository هاست.

یکی از چیزهایی که خیلی میتونه مفید باشه استفاده از تکنیک Bounded Context هست. یعنی شما بجای اینکه همه ی جداول بانک اطلاعاتی را درون یک Context قرار بدید برای جداولی که با هم در ارتباط نزدیکتری هستند یک Context اختصاصی بسازید و موقع استفاده فقط از اون Context استفاده کنید.

وقتی نوبت به کار با ORM ها میرسه مدیریت ارتباطها در بانک اطلاعاتی خیلی مهم میشه ، بهترین جدول جدولی است که هیچ ارتباطی با جداول دیگه نداره و اگر داره خوبه که با Lazy Loading و در زمان نیاز ازش استفاده بشه.