نقل قول نوشته شده توسط majid325 مشاهده تاپیک
بررسی لایه Data Access Layer
لایه های برنامه ها مون رو به چه صورت یا الگویی باید پیاده سازی کنیم ؟
گزینه های که در لایه dal پیش رو جهت انتخاب داریم : DataSet Designer یا ADO‎‎‎‎‎‎‎.Net Entity Framework, یا ORM یا linqToSqlو یا با استفاده از اشیای ado و یا .... این کار رو انجام بدیم.(یه جا خوندم که ADO‎‎‎‎‎‎‎.Net Entity Framework یک orm هست.)
شخصا تو پروژه هام ترجیح میدم از اشیا ado استفاده میکنم و تا حالا از هیچ کدوم از مواردی که نام بردم در برنامه ها استفاده نکردم، دلایل:
ADO‎‎‎‎‎‎‎.Net Entity Framework : به عنوان یک برنامه نویس به طور ذاتی در مقابل ابزارهای که اختصاصی هست(سیاست های ماکروسافت) مقاومت نشون میدم.
DataSet Designer : هم شامل موارد بالا و هم اینکه احساس میکنم از مسائلی که باید روشون تمرکز داشته باشم قافل میشم
LinqToSql : جالب به نظر میاد ولی وقتی ماکروسافت دیگه پشتیبانیش (به هر دلیلی) نمیکنه ، ارزش هزینه کردن رو نداره.
ORM : همونطور که گفتم تا حالا استفاده نکردم (دلیل فنی و غیر فنی خاصی هم ندارم) ولی به نظرم یک از بهترین گزینه ها می باشد.
راه حل های که به ذهنم میرسه استفاده از ORM و یا همون روش سنتی یعنی اشیا ado بهترین گزینه برای انتخاب لایه dal هست ، البته در رابطه با ADO‎‎‎‎‎‎‎.Net Entity Framework نظر نمیدم چون استفاده نکردم.
برای استفاده از یک orm‌ کدوم یکی رو پیشنهاد میدین که با محیط ها و پلت فرمهای بیشتری سازگار تر هست
تو روش که من ازش به عنوان روش سنتی و استفاده از اشیا ado نام بردم ، به این صورت عمل میکنم که داده ها رو با یک command و یک Connection استخراج میکنم و خروجی توابع ام هم IDataReader هست
....
لطفا دوستان و اساتید نظرات خودشون رو ، تجربهای شخصی شون رو و یا ایرادات فنی و غیر فنی شون رو راجع به مطالب بالا مطرح کنند.
....
چندی پیش با آقای مداح پیرامون برتری ASP.NET MVC بر ASP.NET یک بحث زیبا داشتم که بسیار از ایشان مطلب یاد گرفتم،در ادامه اگر بحث مثال های مختلف از معماری ها پیش آید و همینطور موضوع ارتباط لایه presentation با DAL مطرح شود،اطلاعات بسیار جالبی هست که خواندن آنها خالی از لطف نیست.
نتیجه بر این شد که هر تکنولوژی در جای خویش نیکوست.
و اما بحث ORM ها و استفاده از تکنولوژی های رنگ و وارنگ،بحث پیرامون این موضوع هم دقیقا نتیجه بالایی را منعکس می کند.برای مثال در کد زیر از Entity Framework و Linq استفاده شده است:

MoviesDBEntities _db;
_db = new MoviesDBEntities();
var movieToUpdate = _db.MovieSet.First(m => m.Id == id);
مشاهده میکنید که چقدر زیبا Linq با Entity Framework ادغام شده است؟
اگر این تکه کد را با ADO.net و با استفاده از DataSet می نوشتیم،نیاز به حداقل چهار خط کد داشت ولی در اینجا با 17 حرف نتیجه دلخواهمان را گرفتیم.
تمام تکنولوژی هایی که در بالا نام بردید را می توان به زیبایی در کنار هم در پروژه بکار برد و نکته ای که باید ذکر شود اینکه Linq انواع مختلفی را دارد و Linq to SQL یکی از انواع آن است و هیچ مطلبی هم پیرامون پشتیبانی نکردن ماکروسافت هم گفته نشده است , در اکثر مثال ها و پروژه های امروزی دات نت، هم از این فناوری استفاده شده است.
در هر حال وابستگی تکنولوژی های مختلف ماکروسافت با هم،برنامه نویس دات نت را تا حدودی مجبور می سازد تا ماکروسافتی بیاندیشد.