PDA

View Full Version : سوال: لزوم ایجاد data access layer در صورت استفاده از linq یا entity framework



hmahdavi921
یک شنبه 10 خرداد 1394, 19:31 عصر
با سلام
در پروژه ها به همراه linq و entity framework که کل دیتا بیس به صورت کامل و منسجم در دسترس هست باز هم یک کلاس یا فایل dll با نام dal در پروژه ها استفاده میکنن.مگه فلسفه ایجاد لایه Dal یکپارچگی دسترسی به داده ها نیست؟ خوب الان ما تو این وضعیت این حالت رو داریم پس چرا استفاده میشه؟یا نه دلایل دیگه ای وجود داره که با وجود linq یا entity framework نیاز به ایجاد این لایه هست؟
دوستان منتظر نظراتتون هستم.
با تشکر

ali_md110
یک شنبه 10 خرداد 1394, 21:08 عصر
سلام
حتمن نیازی به ایجاد لایه های Dall در برنامه نیست لایه ها بیشتر برای مدیریت و توسعه برنامه ایجاد میشه تا قسمتهای مختلف از هم تفکیک شده و وظیفه برنامه طبقه بندی شده و وظیفه هر بخش مشخص باشه
یک لایه برای شرط گذاری و validation
یک لایه برای سرویس دهی به لایه نمایشی و لایه دسترسی داده و
و سایر لایه های دیگه

ghasem110deh
یک شنبه 10 خرداد 1394, 21:17 عصر
سلام
ربطی به امنیت کدها نداره ... تاثیری نداره ؟

ali_md110
یک شنبه 10 خرداد 1394, 21:33 عصر
شما اگر 10 لایه هم داشته باشید هنگام کامپایل اسمبلی اصلی به همه لایه ها دسترسی داره و عملا تبدیل به یک لایه میشن
بحث امنیت ربطی به چند لایه بودن نداره فقط میتونه کدهای تمیز تر داشته باشیم

ghasem110deh
یک شنبه 10 خرداد 1394, 21:46 عصر
پس واسه برنامه های کوچیک ارزش نداره (بخاطر کدنویسی بیشتر میگم)

asman.abi
دوشنبه 11 خرداد 1394, 00:14 صبح
بله.
لایه ای بودن رو ما اجرا می کنیم با تمیز کد نوشتن. وگرنه لایه لایه بودن در اصل یه مفهوم انتزاعیه.(مثلا 3 لایه با آستر کتانه :قهقهه:) به شخصه اصلا از linq یا entity استفاده نمی کنم. فقط ADO دسترسی همه جانبه به پایگاه با مدیریت قوی.

لایه لایه رو به خاطر بزرگ شدن پروژه انتزاع کردن که یه دسته بندی بین کد ها بشه که بعدا تغییرات راحتر صورت بگیره. گفتم با تمیز کد نویسی اصل لایه ای کردن اجرا میشه وگرنه برای کامپایلر که فرقی نمی کنه.

ali_md110
دوشنبه 11 خرداد 1394, 01:12 صبح
بله.
به شخصه اصلا از linq یا entity استفاده نمی کنم. فقط ADO دسترسی همه جانبه به پایگاه با مدیریت قوی.

کامپایلر که فرقی نمی کنه.

این روزها عدم استفاده از Linq یا Entity framework یک نوع عقبگرد هست مثل یک جراج میمونه که میخاد با عمل باز یکی رو جراحی کنه درصورتیکه لاپراسکوپی هم جدیدا اومده و جراحی رو اسونش کرده

در جواب ghasem برنامه کوچیک نیاز به چند لایه بودن نداره ولی همین برنامه ممکنه بعدا توسعه پیدا کنه معمولا برنامه های تک سندی نیاز به چند لایه بودن نداره ولی لایه بندی کنید بهتره

ebrahim.rayatparvar
دوشنبه 11 خرداد 1394, 11:25 صبح
سلام دوستان.
من یه چند تایی تو google تو سایتهای فارسی جستجو ردم چندتا مطلب دیدم :



مزیت های برنامه های چند لایه
- برنامه ها به چند بخش منطقی جدا از هم تقسیم می شوند و اتصال میان UI ( رابط کاربری ) ، پردازش ها و بانک اطلاعاتی کم می شود.
- تغییر در بانک اطلاعاتی یا روال های دسترسی به داده ها تاثیری در لایه نمایش یا برنامه کلاینت نخواهد گذاشت.
- برنامه کلاینت با عبارات SQL آمیخته نخواهد شد.
- نام جداول و ستون ها به طور موثری از برنامه کلاینت حذف می شوند.
- برنامه کلاینت نمی فهمد که داده ها از کجا آمده اند ( چیزی که به آن location transparency گفته می شود )
- تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.
نکته منفی در معماری چند لایه این است که شما باید تعداد زیادی بخش ها و کلاس های از هم جدا در نرم افزار بسازید. اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.







از آن جایی که در این نوع معماری، تمامی لایه ها مستقل از یک دیگر عمل می کنند، در صورت نیاز می توان با سرعت بالا و هزینه پایین برروی هرلایه تغییراتی اعمال کرد، بدون آن که نیاز به تغییر در سایر لایه ها وجود داشته باشد. در نتیجه هرگونه تغییر و گسترش برنامه آسان تر خواهد شد.
هرگونه تغییر در بانک اطلاعاتی، تأثیری در نمایش داده ها نخواهد داشت.
روند خطایابی (Debugging) آسان تر صورت می پذیرد.
در پروژه های تیمی، افراد یک تیم می توانند به طور مستقل روی لایه های متفاوت به صورت موازی کار کنند، بدون آن که اطلاعی از لایه های دیگر داشته باشند.
استفاده از معماری چندلایه امنیت داده ها را بالا می برد.




بیشترش همینا رو گفتن حالا موردی که بالا بحث شده بود امنیت که تو Q دومی آبردم.
بالا مهندس ali_md110 (http://barnamenevis.org/member.php?18325-ali_md110) گفتن امنیت ولی بالا نمیره میخواستم بدونم چرا؟؟؟ مگه لایه ها به طور مجزا با هم کار نمیکنند و کار لایه BL اعتبار سنجی هم مگه نیست یعنی جلو گیری از دسترس بودن داده های اشتباه و کاربر به طور مستقیم بر رو لایه دیتابیس کار نمی کند ؟؟؟

asman.abi
دوشنبه 11 خرداد 1394, 12:33 عصر
این روزها عدم استفاده از Linq یا Entity framework یک نوع عقبگرد هست مثل یک جراج میمونه که میخاد با عمل باز یکی رو جراحی کنه درصورتیکه لاپراسکوپی هم جدیدا اومده و جراحی رو اسونش کرده

گفتم دسترسی قوی تره. یعنی می دونی کد ها چه جور اعمال میشن چون خودت مستقیم زدی. ولی در linq خودش انجام میده و دسترسی که به کدهای خام sql باید باشه در linq نیست و انعطاف رو میاره پایین.در حقیقت در ADO با sql کار میکنی بدون هیچ واسطی ولی در linq دستورات یه جورایی ساخته میشن برای sql بعد اعمال میشن. من قبلا یه موضوع رو تو این تالار بیان کردم در مورد این دو تکنولوژی ارتباط با پایگاه داده، ولی کسی پاسخگو نبود.:متفکر:
هر چیزی که قدیمی هست لزوما منسوخ نیست. الان زبان C بعد این همه سال هنوز صدر هست. یعنی باید توانایی که C داره رو به دلیل قدمتش منسوخ کنیم!

در مورد دوستی که گفته نام عبارات و جداول در sql در معماری چند لایه، حذف میشه و از این دست دلایل ربطی به لایه ایی بودن نیست. گفتم کامپایلر همه رو از فاز های کامپایل می گذرونه و هیچ کار به لایه های فرضی که شما در نظر گرفتی نمی کنه. همه رو به عنوان یه کد واحد می بینه و مراحل لغوی،دستوری،معنایی و ... رو روش انجام می ده و در آخر یه کد اسمبلی و بعد کد زبان ماشین. این مراحل انجام میشه حالا شما 10 لایه فرض کن یا 3 یا 2 یا ...