۱۳۸۹ آذر ۲۸, یکشنبه

ADO.NET Entity Framework

خوب، باز هم یه پروژه جدید و دقدقه استفاده از تکنولوژی های جدید برای پیاده سازی پروژه. همیشه تفکرم این بوده که برای انتخاب تکنولوژی های مورد نظر برای انجام پروژه ها همیشه نوع تکنولوژی کاملاً وابسه به شرایط پروژه است مثل هزینه، زمان، سخت افزار، نرم افزار، تعداد نیرو ها، مکان، اهمیت پروژه، سطح استفاده از پروژه، تعداد کاربر ها، تعداد تراکنش ها و ....
همه موارد بالا به علاوه تعداد بسیاری از موارد دیگه توی انتخاب تکنولوژی تاثیر میذاره ولی در حال حاضر من توی شرایطی هستم که یکی از گزینه هام میتونه (EF 4.0) باشه، ولی به هیچ وجه دلم نمی خواد صرفاً به دلیل اینکه یه تکنولوژی جدیده از اون استفاده کنم. در حال حاضر دارم برای محکم کاری بیشتر آخرین تحقیقات خودمو در موردش انجام می دم. بهتره اول یه توضیح کلی در باره (EF 4.0) بدم :
دقیقاً به اندازه طول عمر نرم افزار های و زبان ها و تمام موارد شیئ گرا دقدقه دیتابیس های شیئ گرا هم وجود داشته که تا همین الان هم خیلی کارها توی این زمینه انجام شده (Db4o, Objectivity/DB, ...) ولی در کنار تمام این تلاش ها برای تولید بهترین دیتابیس های شیئ گرا عده دیگری هم وجود دارن که به دنبال یک واسط هستند که بتونه شکاف ما بین نرم افزارهای شیئ گرا و دیتابیس های رابطه ای رو از بین ببره. تولید ابزاری به اسم (LINQ To SQL) تا مقداری تونست این شکاف رو برای (Microsoft .Net Framework) پر کنه ولی نتونست به طور کامل این شکاف رو پر کنه ولی مایکروسافت معتقده که (ADO .NET Entity Framework) این شکاف را بطور کامل پر کرده و در صفحه توضیح اجمالی این تکنولوژی در (MSDN) در قسمت (Summary) که در ابتدا نوشته شده این جمله به چشم میخوره "برای از بین بردن عدم تطابق ما بین مدل اطلاعات و زبان هایی که توسعه دهندگان به وسیله آنها نرم افزار های خود را تولید می کنند باید منتظر خصوصیات و ویژگی های موجود در (EF 4.0) باشیم" که این اصلاً ادعای کمی نیست.
 برای شناخت هر چه بیشترتکنولوژی  (EF 4.0) باید اول یه نیم نگاهی به (Object Relational Mapping) داشته باشیم.
(ORM) یک تکنیک برنامه نویسی است برای تبدیل اطلاعات مابین زبان های برنامه نویسی شیئ گرا و سیستم های ذخیره سازی اطلاعات رابطه ای. این سیستم ها سیستم های دیتابیسی مجازی شیئ گرا تولید می کنند که به این وسیله سیستم های شیئ گرا می توانند به سادگی با دیتابیس های غیر شیئ گرا در ارتباط باشند. در حال حاضر تعداد زیادی از این نرم افزارها با پشتیبانی از این تکنولوژی به صورت متن باز و یا تجاری در بازار وجود دارند مانند :
  • ADO .Net Entity Framework
  • LINQ To SQL
  • NHibernate
البته به این نکته هم توجه داشته باشید که این تکنولوژی تنها مختص به (Microsoft .Net Framework) نمی باشد و زبان ها و کتابخانه های دیگر نیز دارای نرم افزار هایی می باشند که بر اساس این تکنولوژی ساخته شده اند مانند :
  • (C++ (ODB
  • (Delphi (ECO
  • (Java (Hibernate
حالا با توضیحاتی که در بالا داده شد میشه گفت (ADO .NET Entity Framework) هم یک (ORM) است که از روی یک دیتابیس رابطه ای به شما یک شمای (Conceptual Data Model) ارائه میده تا به سادگی بتونید با دیتابیستون ارتباط برقرار کنید و لذت ببرید.
 حالا برای توضیح هر چه بیشتر این تکنولوژی باید به خصوصیات و مزایای اون بپردازیم.اینکه این ابزار جدید چه خصوصیاتی داره که این همه ذهن من و بقیه رو به خودش جلب کرده در زیر به تداد اندکی از این مزایا به صورت کاملاً تیتر وار اشاره میشه :
  1. توانایی استفاده از دیتابیس های متفاوتی مانند:(... , Oracle , DB2, Microsoft SQL Server)
  2. Persistence Ignorance:  به شما اجازه میده که (POCO) اختصاصی خودتونو بنویسید و داشته باشید که شبیه به هیچ (Persistence) ی نباشه.
  3. T4 Code Generation: شما می تونید به وسیله تکنولوژی (T4) هر قالبی رو که می خوای برای خودت داشته باشی.
  4. Lazy Loading: برای کسایی که با (LINQ To SQL) آشنا هستن می تونم بگم شبیه (Load Option) می مونه.
  5. POCO Change-Tracking: تکنولوژی (EF 4.0) از دو مدل برای (Tracking Change) بر روی (POCO) استفاده می کنه. بصورت پیشفرض (EF 4.0) یک تصویر از اطلاعات جدول شما نگه میداره و بعد از تمامی تغییرات شما و هنگام (SaveChange) کردن تغییرات مورد نظر را اعمال میکند ولی در مدل بعدی این اتفاق به صورت متداوم رخ میده و دائماً (Sync) بین تصویر و اصل اطلاعات صورت میگیره.
  6. پشتیبانی هر چه بهتر (N-Tier) توسط (EF 4): به صورت خلاصه بگم که در بسیاری موارد در نرم افزار های (N-Tier) مختلف ممکن هست که امکان (Tracking) در قسمتی از (Tier) ها وجود نداشته باشد که بوسیله (EF 4.0) این امکان بوجود میاد. 
  7. Model-First Development: ساخت یک مدل تمام عیار از روی دیتابیس(Conceptual Data Model).
  8. Code-Only Development: ساختن کلاس ها توسط شما و تولید و حدس زدن دیتابیس مورد نظر شما از روی (Model) تولید شده و ساخت دیتابیس مورد نظر.
به علت طولانی شدن این پست توضیح جزئیات موارد ذکر شده را در پست بعد توضیح میدم.

هیچ نظری موجود نیست:

ارسال یک نظر