PDA

View Full Version : مقایسه LINQToSQL با ADO و معماری سه لایه



saeid69
شنبه 21 آذر 1388, 17:09 عصر
با سلام هر که هر چی عیب از LINQ میدونه خواهشا بنویسه
آخه من می خوام ببینم LINQ بهتره یا ADO

خواهشا اونایی که اطلاع دارن ما هم رو بی نصیب نگذارند.

این دو معقوله را با هم مقایسه کنیم

1. از نظر سرعت
2.از نظر پشتیبانی از پروژه های بزرگ
3. از نظر امنیت
4. از نظر راحتی و تغییرپذیری

hdv212
یک شنبه 22 آذر 1388, 11:45 صبح
با سلام هر که هر چی عیب از LINQ میدونه خواهشا بنویسه
آخه من می خوام ببینم LINQ بهتره یا ADO
خواهشا اونایی که اطلاع دارن ما هم رو بی نصیب نگذارند.

Linq یک فن آوری جدید مبتنی بر Ado.net است، یعنی در بالای Ado.Net قرار دارد، پس در مقابل آن نیست، این تفکر در شما ایجاد نشه که Linq چیزی جدای از Ado.net است، شما میتونید در پروژه تون از هردوی اینها استفاده کنید، Linq به منظور افزایش بهره وری برنامه نویسان و تسریع در تولید نرم افزار ارائه شده و در مشتری شما هیچ نفعی از اینکه شما پروژه تون رو با Linq یا چیز دیگه ای نوشتید نمیبره (البته شاید از لحاظ سرعت عملی که شما در نوشتن برنامه ها با لینک دارید، مشتری زودتر به خواسته ش برسه و کمتر دچار دردسر بشید، این حسنی برای مشتری شما باشه!)
یکی از مثالهایی که میتونید از ترکیب Linq و Ado.net معمولی استفاده کنید اینه که در جستجوهای خودتون از فن آوری Linq to DataSet استفااده کنید تا انعطاف پذیزی بیشتری رو به برنامه تون بدید(البته این دو رو هرطوری که بخواهید میتونید با هم ترکیب کنید و با هم استفاده کنید).


این دو معقوله را با هم مقایسه کنیم

1. از نظر سرعت
2.از نظر پشتیبانی از پروژه های بزرگ
3. از نظر امنیت
4. از نظر راحتی و تغییرپذیری

خوب اگه بخواهیم سرعت Linq رو بررسی کنیم، بهتره بگم که این فن آوری هیچ مزیتی نسبت به پدر خودش Ado.net نداره، دلیلش هم اینه که ابتدا دستور Linq شما توسط CLR بررسی به Expression Tree تبدیل میشه و سپس دستور Sql معادل آن تولید و به دیتابیس فرستاده میشه، همچنین در هنگام دریافت اطلاعات، مقدار زیادی متادیتا رو به همراه اطلاعات مورد نیاز بارگذاری میکنه و این باعث میشه که کمی کند کار کنه که البته زیاد نیست و قابل قبوله.
البته Linq قابلیتهای خوبی هم در بهبود سرعت داره، یکی اینکه دستورات Sql ای که تولید میشه همه به صورت Parametrized Query هستند که هم باعث میشه در مقابل حملات Sql یا Sql-Injection محفوظ بمونه و هم در حافظه ی دیتابیس سرور Cache میشه که این باعث بهبود سرعت میشه.
یکی از قابلیهای دیگر Linq امکان کامپایل کردن Query یا CompiledQuery می باشد که باعث میشه عملیات تبدیل رشته ی Linq به دستورات Sql نیز در حافظه Cache بشه و این نیز به بهبود سرعت بازیابی اطلاعات کمک شایانی خواهد کرد.

طبق گفته های مایکروسافت، LinqToSql برای استفاده در پروژه های Small to Medium کاملا مناسب می باشد، و برای پشتیبانی از پروژه های بزرگ، Entity Framework بهتر است.

از نظر امنیت هم که پیشتر گفتم.
از لحاظ راحتی هم، واقعا کار با Linq لذت بخش و سرعت عملش بسیار بالاست.
امیدوارم تونسته باشم پاسخ بیشتر سوالات دوستان رو در زمینه Linq داده باشم.

saeid69
یک شنبه 22 آذر 1388, 12:33 عصر
با تشکر فراوان از hdv212 (http://barnamenevis.org/forum/member.php?u=14084) که راهنمایی های مفیدی رو در این زمینه نموده اند
برای من که خیلی از ابهامات روشن شد
فقط اگه میشه اینو بیشتر توضیح بدین


طبق گفته های مایکروسافت، LinqToSql برای استفاده در پروژه های Small to Medium کاملا مناسب می باشد، و برای پشتیبانی از پروژه های بزرگ، Entity Framework بهتر است.چون که من میخوام یه پروژه بزرگ شروع کنم و اگه که با لینک در پروژه های بزرگ دچار مشکل میشم یه فکر دیگه ای بکنم

میشه در مورد Entity Framework هم بیشتر راهنمایی کنین.

hdv212
یک شنبه 22 آذر 1388, 13:17 عصر
خواهش میکنم دوست عزیز
LinqToSql به علت عدم پشتیبانی رسمی از ManyToMany RelationShips و TPH یا Table Per Hierarchy برای استفاده در پروژه های Small to Medium مناسبتر است. این موضوعات در EntityFramework حل شده است.
توجه : از دید مایکروسافت و شرکای تجاریش، پروژه های بزرگ با پروژه های بزرگی که ما توی ذهنمونه فرق میکنه!

EntityFramework یا EF یک ابزار ORM یا Object Relational Mapping نظیر NHibernate می باشد که ساختار دیتاسورس شما رو به صورت کلاسهای دات نت در میاره (POCO یا Plain Old Clr Objects)
با فن آوری EF که مبتنی بر Linq می باشد، لایه Data Access به کلی از لایه ی Business جدا شده و منطق برنامه هیچ اطلاعی در مورد لایه ی دیتا ندارد (Persistence Ignorance).
بنابر این شما در EF فقط با کلاسها و پراپرتی ها و لیستهای جنریک (Generic Lists) کار میکنید.
در ضمن فن آوری EF دارای زبانی بسیار شبیه به Sql میباشد به نام eSql که کوئری نویسی را در دیتابیس های رابطه ای راحت نموده است.
موفق باشید

saeid69
چهارشنبه 25 آذر 1388, 19:51 عصر
پس طبق گفته های شما من میتونم با خیال راحت یه پروژه مثل نرم افزار حسابداری را با این تکنولوژی بنویسم و بعد هم دچار مشکل نشوم ؟

hdv212
جمعه 27 آذر 1388, 01:32 صبح
پس طبق گفته های شما من میتونم با خیال راحت یه پروژه مثل نرم افزار حسابداری را با این تکنولوژی بنویسم و بعد هم دچار مشکل نشوم ؟

بله، هرگونه نرم افزاری که توی ذهنتون هست رو میتونید با این فن آوری بسازید.

hamid.y
جمعه 04 دی 1388, 11:50 صبح
با سلام
دوستان می تونید یه ORM مناسب برای .net معرفی کنید.
من دوتایی رو پیدا کردم اما نمی دونم کدوم بهتره (از همه جهات).
Nhibernate
Subsonic

می شه کمکم کنید؟

FastCode
پنج شنبه 10 دی 1388, 17:02 عصر
اگر ORM بنویسید بهتره.
من یدونه نوشتم .
DataLoadTime از 40s به 4.7s رسید.
همه گزارشاتم به (m log n)O رسید.
n:تعداد سطر پارنت
m:تعداد سطرهای چایلد

با مموری n*m.
n:تعداد سطر
m:تعداد ستون های Key
ویو تایم گزارشاتم به (1)O رسید
کلا efficiency برنامم به 17 برابر رسید .
اگر باور نمی کنید که
...,System.Data.DataSet , System.Data.SQLDataAdaper,System.Linq ,NHibernate
چقدر آشغالند فیلم از برنامم حاضرم بفرستم
اگر میخواهی Email بده کدشو برات بفرستم.
این عکس از آخرین خطوط کد ایجاد شده برای یک دیتابیس SQL2008 با 70 تیبل:
41881
http://madgeek.com/Articles/ORMapping/EN/mapping.htm

فقط 4,3 تا از امکانات این صفحه رو نداره که دارم روشون کار میکنم.

پیشنهاد میکنم از کد من به عنوان codestub استفاده کنید.
چون من نیاز های شما رو نمیدونم و برنامرو مخصوص خودم نوشتم.

raziee
پنج شنبه 10 دی 1388, 23:11 عصر
اگر میخواهی Email بده کدشو برات بفرستم.

raziee.hossein@gmail.com
با سلام
من ایمیلم رو گذاشتم .
آشنایی با موضوعی که شما فرمودید رو ندارم.
اگه ممکنه برای بنده ایمیل کنید.
شاید رفتم سمت به کار گیری اون ها.
با تشکر

sahele_sheni
دوشنبه 14 دی 1388, 00:25 صبح
سلام دوست عزیز .
این موردی رو که اشاره کردید برای من هم اگه لطف کنید ارسال کنید
ali_190190@yahoo.com
تشکر

Mostafa_Dindar
جمعه 18 دی 1388, 15:04 عصر
با فن آوری EF که مبتنی بر Linq می باشد، لایه Data Access به کلی از لایه ی Business جدا شده و منطق برنامه هیچ اطلاعی در مورد لایه ی دیتا ندارد (Persistence Ignorance).
بنابر این شما در EF فقط با کلاسها و پراپرتی ها و لیستهای جنریک (Generic Lists) کار میکنید.

سلام .
ممنون از اطلاعات مفيدتون . اولين باره در مورد LINQ مطالعه ميكنم
مطابق فرمايش شما آيا ميشه از LINQ To Sql به صورت معماري چند لايه استفاده كرد يا براي اينكار حتما بايد از Entity Framwrok استفاده كرد.

hdv212
یک شنبه 20 دی 1388, 22:49 عصر
سلام .
ممنون از اطلاعات مفیدتون . اولین باره در مورد LINQ مطالعه میکنم
مطابق فرمایش شما آیا میشه از LINQ To Sql به صورت معماری چند لایه استفاده کرد یا برای اینکار حتما باید از Entity Framwrok استفاده کرد.

خواهش میکنم دوست عزیزم
هرچند برنامه نویسی چند لایه دارای ابزارهای خاصی میتونه باشه، ولی فن آوری خاصی نیست و بیشتر به یک تجربه شباهت داره تا تکنولوژی، بنابراین شما میتونید این شیوه رو در هر زبان و مدلی پیاده سازی کنید.
موفق باشید

sahele_sheni
چهارشنبه 23 دی 1388, 13:24 عصر
سلام . چطور میشه به این تجربه رسید ؟ من تا حالا برنامه ای با لایه بندی کار نکردم ولی میخوام این کار رو شروع کنم .
چطور باید شروع کنم ؟
منبعی برای مطالعه این کار هست ؟
اگه ممکنه راهنمایی کنید .

majid325
پنج شنبه 15 بهمن 1388, 02:21 صبح
سلام . چطور میشه به این تجربه رسید ؟ من تا حالا برنامه ای با لایه بندی کار نکردم ولی میخوام این کار رو شروع کنم .
چطور باید شروع کنم ؟
منبعی برای مطالعه این کار هست ؟
اگه ممکنه راهنمایی کنید .

http://barnamenevis.org/forum/showthread.php?t=151744

iman_ad
جمعه 16 بهمن 1388, 18:07 عصر
لطفا برای منم بفرستید
iman.amirdarabi@gmail.com

majid325
شنبه 17 بهمن 1388, 00:14 صبح
لطفا برای منم بفرستید
iman.amirdarabi@gmail.com
o
خواهشا این تاپیک رو با پستهای با عناوین این چنینی از مسیرخارج نکنید.
جناب FastCode هم اگه زحمت بکشن و کد رو در جایی یا همین سایت بزارن
به هرز نرفتن تاپیک با پستهایی با عناوین مذکور کمک کردن.
از این پس پستهایی با عناوین مذکور حذف میشوند.

FastCode
جمعه 23 بهمن 1388, 22:01 عصر
o
خواهشا این تاپیک رو با پستهای با عناوین این چنینی از مسیرخارج نکنید.
جناب FastCode هم اگه زحمت بکشن و کد رو در جایی یا همین سایت بزارن
به هرز نرفتن تاپیک با پستهایی با عناوین مذکور کمک کردن.
از این پس پستهایی با عناوین مذکور حذف میشوند.

کاملا" درسته.
هر کسی که کد رو میخواد به من پیام خصوصی بده.
من نمیتونم کد درون سایت قرار بدم چون کد همیشه در حال تغییره.:لبخند: و هر لحظه داره بهتر میشه.الان قدرتش 4 برابر قبل شده.(Data Cache Time = 0.82s)
در ضمن دارم زبان کد رو از C#.Net به C++ Inline-Assembly تغییر میدم.فکر نمیکنم که دیگه بشه چیزی سریعتر از اون درست کرد.:چشمک:

sh_Yousefi
چهارشنبه 27 دی 1391, 20:29 عصر
با سلام به اساتید برنامه نویسی
من حدود 15 ساله که با VB6.0 برنامه نویسی میکنم. و اولین برنامه و جامع ترین آن را در صنعت کارگزاری تولید کردم. ولی الان سعی در تعویض زبان برنامه به C#‎ دارم.

حالا دنبال یک مشاور با تجربه جهت شروع کارم میگردم. که سرنخ کار و روشهای اولیه را آموزش بده.
آدرس محل کارم هم دانشگاه شهید بهشتی - ولنجک است.

مرسی