PDA

View Full Version : انتخاب بین LINQ و StoredProcedure در MVC



djsaeedkhan
سه شنبه 10 مرداد 1391, 13:41 عصر
با سلام
من می خوام یه سایت با MVC طراحی کنم. مشکل اصلیم اینه که کدومیک از روش های دریافت اطلاعات از دیتابیس رو استفاده کنم. از یه طرف تو پروژه MVC ای که خود مایکروسافت در ویژوال استادیو برای نمونه گذاشته از StoredProcedure استفاده شده و از یه طرف دیگه تو سایت ASP.NET آموزش ها بر اساس LINQ است.
خواستم بپرسم کدومیک از این روش ها بیشتر می تونه نیاز های برنامه نویس ها رو برطرف کنه.
اگر هم چیز جدیدی اومده بفرمایید که از اون استفاده کنیم. با تشکر

NIK
سه شنبه 10 مرداد 1391, 14:03 عصر
بهتره از Entity Framework استفاده کنی.

djsaeedkhan
سه شنبه 10 مرداد 1391, 21:31 عصر
میشه توضیح بفرمایید این روش از چه نظر بهتر از اون دو روش اخیر هست. چیزی که منو تو فکر انداخته اینه که پس چرا خود مایکروسافت تو نمونه پروژش از Stored Procedure استفاده کرده؟؟

asif1358
چهارشنبه 11 مرداد 1391, 13:14 عصر
Entity Framework مدل استاندارد مایکروسافت برای برنامه نویسی داده هاست که مزایای زیادی دارد که البته مقایسه آن با روش های دیگر نیاز به بررسی بسیار مفصل دارد؛ ولی از این نکته نباید غافل شویم که Stored Procedure سریعتر از دو روش اشاره شده است؛ به دلیل این که دو روش دیگر نیاز به تفسیر و کامپایل دارند؛ بدین معنی که کدهای C# یا VB باید ابتدا به SQL تفسیر و سپس کامپایل شوند تا روی پایگاه داده اجرا شوند، اما sp آبجکت آماده و از پیش کامپایل شده است.

ricky22
پنج شنبه 12 مرداد 1391, 11:16 صبح
سلام ،

Entity Framework یک ابزار ORM هست.
در کدام مثال مایکروسافت از Stored Procedure استفاده شده ؟
LINQ هم یک Language Feature هست ، اگر منظور شما LINQ to SQL هست این تکنولوژِی مدت هاست جای خودش را به Entity Framework (که اخیرا Open source شده) داده .
اول درباره ی ORM و اهمیت آن جستجو کنید ، سپس ORM ها را بررسی و یکی را انتخاب کنید.
Entity Framework راه حل پیشنهادی مایکروسافت و یک ORM جهت دسترسی به داده ها هست.

ricky22
پنج شنبه 12 مرداد 1391, 11:21 صبح
Entity Framework مدل استاندارد مایکروسافت برای برنامه نویسی داده هاست که مزایای زیادی دارد که البته مقایسه آن با روش های دیگر نیاز به بررسی بسیار مفصل دارد؛ ولی از این نکته نباید غافل شویم که Stored Procedure سریعتر از دو روش اشاره شده است؛ به دلیل این که دو روش دیگر نیاز به تفسیر و کامپایل دارند؛ بدین معنی که کدهای C# یا VB باید ابتدا به SQL تفسیر و سپس کامپایل شوند تا روی پایگاه داده اجرا شوند، اما sp آبجکت آماده و از پیش کامپایل شده است.

خیر اینطور نیست.

Query های Entity Framework پارامتری هستند. SQL Server رفتار هوشمندی در مقابل آنها دارد.

djsaeedkhan
پنج شنبه 12 مرداد 1391, 17:47 عصر
در کدام مثال مایکروسافت از Stored Procedure استفاده شده ؟
اگر شما با ویژوال استادیو 2010 یه پروژه MVC جدید ایجاد کنید و Empty هم نباشه. میبینید که از این روش استفاده کرده. االبته بگم که من اینو از اینجا فهمیدم که در پروژه هیچ کوری ای نیست و فقط در بخش دیتابیس تعدادی Stored Procedure وجود داره

djsaeedkhan
پنج شنبه 12 مرداد 1391, 17:49 عصر
سلام
نکته ای که برای من خییییلی مهمه اینه که چون دارم وقت میذارم تا بتونم در حد حرفه ای یاد بگیرم نمی خوام یه چیزی یاد بگیرم و بعد بگن این قدیمی بوده یا ....
همچنین آیا مهم هست که در یک پروژه سرعت اجرا رو بالاتر از نحوه پیاده سازی بدونیم یا خیر. یعنی اینکه اگر با Stored Procedure سرعت بالاتری خواهد داشت آیا بهتر نیست از Entity صرف نظر کرد.
با تشکر

mze666
پنج شنبه 12 مرداد 1391, 18:28 عصر
5 دلیل استفاده از ORM:

http://www.dotnettips.info/Post/233/5-%D8%AF%D9%84%DB%8C%D9%84-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DB%8C%DA%A9-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-orm

omidh2007
شنبه 14 مرداد 1391, 00:15 صبح
یه مقایسه توی StackOverFlow انجام شده .
http://stackoverflow.com/questions/2698151
از نظر سرعت ، به نظر میاد که StoredProcedure نسبت به کدهای ORM سریع تر باشه .
در ضمن برای سرعت بیشتر ، یه CodeGenerator آنلاین هست که SP هم تولید میکنه .
امتحانش کنید => http://www.pureobjects.com/default.aspx
(http://www.pureobjects.com/default.aspx)

djsaeedkhan
شنبه 14 مرداد 1391, 01:11 صبح
سلام
از دوستان کسی هست جواب این سوال منو بده که:
می تونم همین نمونه پروژه ای که خود مایکروسافت در ویژوال استادیو 2010 ارائه میده رو برای پروژم گسترش بدم. یعنی از همون برای پروژه خودم استفاده کنم و گسترشش بدم. نه این که بشینم و یه سیستم دیگه طراحی کنم. همچنین آیا نحوه ارتباط با دیتابیسش خوب هست و میشه ازش بهترین استفاده رو کرد؟یعنی اینقدر انعطاف پذیر هست که بشه همه کاری باهاش کرد؟
با تشکر

asif1358
شنبه 14 مرداد 1391, 08:55 صبح
خیر اینطور نیست.

Query های Entity Framework پارامتری هستند. SQL Server رفتار هوشمندی در مقابل آنها دارد.

دوست من! این یعنی چه؟ مگر کوئیری هایی که با زبانهایی مانند سی شارپ می نویسید نباید برای اس کیو ال سرور ترجمه و کمپایل شود؟

djsaeedkhan
دوشنبه 23 مرداد 1391, 04:55 صبح
سلام
از دوستان کسی هست جواب این سوال منو بده که:
می تونم همین نمونه پروژه ای که خود مایکروسافت در ویژوال استادیو 2010 ارائه میده رو برای پروژم گسترش بدم. یعنی از همون برای پروژه خودم استفاده کنم و گسترشش بدم. نه این که بشینم و یه سیستم دیگه طراحی کنم. همچنین آیا نحوه ارتباط با دیتابیسش خوب هست و میشه ازش بهترین استفاده رو کرد؟یعنی اینقدر انعطاف پذیر هست که بشه همه کاری باهاش کرد؟
با تشکر
کسی هست جواب منو بده؟؟ من هنوز تو اینکه از چه روشی برای ارسال و دریافت اطلاعات از دیتابیس استفاده کنم موندم. خواهشا راهنمایی بفرمایید. من حرفه ای ترین روش رو میخام بدونم. با سپاس

sasansara
دوشنبه 23 مرداد 1391, 09:00 صبح
دوست عزیز.
نه تو این مساله که تو هر مساله دیگه ای جواب مطلق وجود نداره. اینکه بعضی دوستان میگن SP سریعتره درسته. ولی شما باید ببینی چی به دست میاری و چی از دست میدی.
به هر حال برنامه ای که با زبان اسمبلی نوشته میشه از برنامه ای که با زبان های سطح بالا (مثل سی شارپ ) نوشته میشه سریعتره. ولی ما اگه بخوایم نرم افزاری تولید کنیم که سالها برامون کار کنه و بتونیم به خوبی ازش پشتیبانی کنیم و توسعه اش بدیم، باید از ابزارها و زبان های جدید استفاده کنیم. چیزی که الان مطرحه اینه که میگن اگه در تولید نرم افزار مستقیما از sql استفاده بشه و نه از ORM ، مثل اینه که با زبان اسمبلی برنامه نوشته شده.
میدونیم که سایتی مثل stackoverflow که بسیار هم پر بیننده پر تراکنش هست طبق اعلام خودش بوسیله asp.net mvc و linq to sql تهیه شده. در استفاده از ORM مثل همه جای دیگه نحوه کدنویسی بسیار مهمه و اگه نادرست و اشتباه استفاده بشه رو کارایی برنامه تاثیر میذاره. ولی اگه درست و اصولی کار بشه مزایاش بیشتر از معایب هستش.

لینک مربوط به اطلاعات سایت stackoverflow:

http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/

djsaeedkhan
سه شنبه 24 مرداد 1391, 19:03 عصر
سلام
به نظر شما یعنی اگر از LINQ TO SQL استفاده کنم بهتره؟ یا اینکه از Entity Framework استفاده کنم بهتره.
خواهشا لطف بفرمایید نظر نهایی خودتون رو بدید. یعنی اگر شما تا حالا نمونه عملی داشتید از چه روشی استفاده کردید. بالاخره در اجرا تجربه زیادی کسب میشه

amir-yeketaz
سه شنبه 24 مرداد 1391, 19:24 عصر
سلام
به نظر شما یعنی اگر از LINQ TO SQL استفاده کنم بهتره؟ یا اینکه از Entity Framework استفاده کنم بهتره.
خواهشا لطف بفرمایید نظر نهایی خودتون رو بدید. یعنی اگر شما تا حالا نمونه عملی داشتید از چه روشی استفاده کردید. بالاخره در اجرا تجربه زیادی کسب میشه

ببین دوست عزیز ، ساده و سربسته براتون میگم :

LINQ to SQL خیلی وقته منقرض شده(خود مایکروسافت گفت بیخیالش شید!!!) ... و الان از EF 4 به بالا همینجوری داره میاد (EF5 هم اومده!) و تا EF6 هم دارن برنامه میریزن و همینطور اخیرا EF متن باز شده ... الان به نظرت Linq to SQL بهتره؟!!!!!

من تجربه ی پروژه ی عملی با EF CodeFirst 4.1 رو داشتم و میتونم خدمتتون عرض کنم که دیگه دو سالی هست از Ado.Net خام استفاده نمیکنم!!! (مثه اینه که یه عمری سوار زانتیا شده باشی حالا بخوای بیای سوار ژیان بشی!!!)

موفق باشید ...

sasansara
چهارشنبه 25 مرداد 1391, 08:45 صبح
همونطور که دوستمون گفتن، مایکروسافت توسعه linq to sql رو متوقف کرده. اگه می خواید از تکنولوژی مایکروسافت استفاده کنید باید از entity framework استفاده کنید. من خودم از این استفاده می کنم.
ولی من تاکیدی روی اینکه از کدام ORM استفاده بشه ندارم. مثلا یه ORM قوی دیگه وجود داره برای .net به اسم NHibernate.

djsaeedkhan
پنج شنبه 02 شهریور 1391, 07:29 صبح
با سلام
از دوستان کسی نمونه پروژه ای یا کدی سراغ دارن که در سطح بالایی باشه و بتونه منو راهنمایی کنه
با سپاس