-
شنبه 20 خرداد 1396, 10:04 صبح
#7
کاربر دائمی
نقل قول: LINQ to SQL یا .... جهت استفاده از دیتابیس و مشکلات هر یک
ببین دوست عزیز .. شما باید با توجه به نیازتون تکنولوژی ارتباط با پایگاه داده رو انتخاب کنید .
ما تکنولوژی های مختلفی برای ارتباط با پایگاه داده تو دات نت داریم :
Linq , EF , ADO , NHibernate و ...
لینک برای خودش دنیایی داره که به سه دسته Linq To Sql , Linq To Object , Linq To XML تقسیم میشه ... !
همونطوری که میدونیم استفاده از EF و Linq تفاوت چندانی با هم نداره .. مهم تبدیل کدهای شما چه از Linq Expressionچه از Lambda Expression به کدهای sql هستش که هرکدوم EF یا Linq در مواردی کوئری های بهینه تری نسبت به همدیگه تولید میکنن و نمیشه گفت کدوم بهتره چون عملکرد جفتشون خوب و قابل قبول هستش ولی در مواردی نسبت به همدیگه برتری دارن ... .
مزیت ORM های Linq و EF این هستش که سرعت توسعه شما رو بالا میبره به علاوه شما وقتی EF Code First کار میکنید دیگه عملا درگیر Sql Server نمیشید .
مزیت ADO و نوشتن SP داخل SQL Server این هستش که سرعت اجرای بیشتری بهتون میده ...
همونطوری که میدونیم SQL Server میاد برای کوئری ها نقشه اجرا درست میکنه .. شما وقتی داخل پایگاه داده SP بنویسید پلن این اس پی , کش میشه و دیگه سری بعدی از پلن کش شده استفاده میکنه مثلا شما وقتی از یک جدول سلکت میزنی برای n بار فقط یکبار پلن براش کشیده میشه ولی EF و Linq هر سری یه پلن باید براشون درست شه که خود این میتونه یه دلیل برای کم بودن سرعت ORM ها باشه ... البته از طریق ORM ها میشه SP فراخوانی کرد ولی خب عملا دیگه فرقی نمیکنه که شما ORM استفاده کنید یا نه چون کار اصلیشو ازش گرفتیم و داریم SP مینویسیم و فقط Map کردن کلاس ها میمونه که همونم میتونیم خودمون بنویسیم .
به علاوه شما وقتی SP مینویسی میتونی از امکانات جدید SQL Server 2016 هم استفاده کنی مثل Native Compile Stored Procedure که سرعت بیشتری به شما میده نسبت به SP های معمولی .. .
نکته مهم اینجاست .. دوتا از شاهکارهای Sql Server 2016 اینا هستش : live execution plans , column store index که البته column store index تو نسخه های قبلی بوده ولی بهبود های چشمگیری داشته که اینجا جایی برای توضیح نداره .. شما وقتی Code First کار کنید دیگه نمیتونید از یکی از بزرگترین شاهکارهای SQl Server به اسم column store index استفاده کنید و همینطور چون کوئریهارو ORM مینویسه شما live execution plans ندارید .. مگر این که پروفایل کنید دیتابیسو و کوئریهارو استخراج کنید و تو اس کیو ال سرور بنویسید و اجرا بگیرید که دیگه اینطوری ORM برای برنامه نویس که شما باشید تا حدی هرچند کم میره زیر سوال چون کوئری هارو دوباره دارید بازنویسی میکنید و هر تغییری یعنی راه دوباره .
خب بخوام نتیجه گیری کنم با توجه به تجربه چندین ساله خودم عرض میکنم ..
1 - زمانی که سرعت توسعه مهمه و پروژه کوچیک در حد سیستم مالی یه فروشگاه یا همچین چیزی باشه EF Code First رو انتخاب میکنم .
2 - اگه طراحی پایگاه داده مهم باشه برام و سرعت توسعه هم مهم باشه EF Database First .
3 - اگه فورس زمانی داشته باشم و سرعت تراکنش های پایگاه داده هم مهم باشه اول کار مشتری رو با EF Database First .
4 - اگر روی کلان سیستم ها و پروژه های ملی باشم بدون هیچ شکو تردید ADO و SP سمت پایگاه داده , زمان توسعه کم میشه ولی من زمان رو قربانی یه کار پر سرعت و با کیفیت میکنم (به علاوع میتونیم قدرت مانور بیشتری برای توسعه نیز داشته باشیم با این روش (سایتی مثل StackOverFlow هم همینکارو کرده و از امکانات جدید Sql Server 2014 استفاده , الان داره با حداقل ریسورس های سخت افزاری بیشترین بهروری رو میده) ) .
آخرین ویرایش به وسیله CsharpNevisi : شنبه 20 خرداد 1396 در 10:53 صبح
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت