الوعده وفا، همونطور که توی پست قبلی که برای () زده بودم 8 مورد از خصوصیات () که باعث شده این تکنولوژی، معمار ها و طراح های نرم افزار های کامپیوتری رو قلقلک بده ذکر کردم که خودم هم قبول دارم که خیلی کلی گفتم و تک تک اون موارد خودشون به یه پست احتیاج داره حالا توی این پست و به بعد می خوایم در مورد اون 8 مورد صحبت کنیم که از حرف کم می کنیم و به اصل مطلب می رسیم:
- توانایی استفاده از دیتابیس های متفاوتی (... , Oracle , DB2, Microsoft SQL Server): خوب برای توضیح هر چه بیشتر این موضوع باید از (ADO .Net) شروع کنم. اینجا قصد ندارم که به توضیح کامل (ADO .Net) بپردازم ولی برای واضح شدن مبحث باید بگم که (ADO .Net) یکی از کامپوننت های سطح پایه ی (Net Framework.) هست که به برنامه نویس های امکان برقرای ارتباط با دیتابیس رو میده که در همین راستا (Provider) های زیادی هستند که با پشتیبانی از (ADO .Net) به برنامه نویس ها اجازه دسترسی به تعداد زیادی از دیتابیس ها رو میدن. (EF 4.0) نیز با تمام (Conceptual) بودن ولی در نهایت برای برقراری ارتباط با دیتابیس از (ADO .Net) استفاده می کنه که با توجه به بحث بالا نتیجه میگیریم که (EF 4.0) امکان اتصال به تعداد زیادی از دیتابیس ها رو به ما میده.
- Persistence Ignorance: دنبال ترجمه فارسی این اصطلاح نباشین که هیچی دستگیرتون نمیشه، این بحث یه بحث بسیار بزرگ و پیچیده و بسیار مهمه که متاسفانه در اینجا من تنها به یک توضیح مختصر بسنده می کنم ولی قول میدم به زودی این بحث رو که مورد علاقه خودم هم هست تا نهایت بشکافم ولی فعلا باید بگم که این یه اصطلاحه و تا اینجا که من متوجه شدم این بحث بیشتر مربوط میشه به فاز طراحی به این معنی که شما باید معماری خودتون رو به گونه ای طراحی کنید که کلاس ها و (Object) های شما باید بر روی (Business) شما تمرکز داشته باشه و نه بر روی مدل های دیتابیس شما که برای پیاده سازی این طراحی (EF 4.0) به وسیله پشتیبانی از (POCO) به شما اجازه می دهد که مدل های دیتابیس خودتون رو داشته باشید. که در این قسمت مباحث بسیار مهمی مطرح میشه که یکی از اون مباحث (Domain-Driven Design - DDD) هست فقط به همین نکته کوچیک بسنده می کنم.
- T4 Code Generation (Text Template Transformation Toolkit) T4: اگه بخوایم یه تعریف ازش داشته باشیم باید بگم، یک کتابخانه ی (Generate) کننده متن بر پایه (Template) موجود در (Visual Studio) شرکت مایکروسافت. حالا سوال اینجاست که این ابزار چه ارتباطی با (EF 4.0) می تونه داشته باشه و از همه مهم تر چه کمکی به ما میتونه بکنه. تا اینجا که من متوجه شدم و استفاده کردم این ابزار از چند طریق میتونه به ما کمک کنه اولیش وقتی که از دیتابیس می خوایم مدل (Generate) کنیم. زمان دیگه هم وقتیکه از روی مدل می خوایم دیتابیس (Generate) کنیم. اما یه روش دیگه هم هست که باز بر میگرده به همون بحث (Persistence Ignorance) که برای استفاده از این روش با استفاده از (EF 4.0)، (T4) به شما اجازه میده تا (POCO) مورد نظر خودتون رو (Generate) کنید. که باز هم ادامه بحث باشه برای یه پست دیگه که کامل توضیح میدم.
- Lazy Loading: خوب فکر کنم تو این مباحث با این موضوع از همه کمتر مشکل داریم چون فکر کنم همه با این مسئله آشنا باشن همون (Load Option) توی (Linq) باشه که به ما اجازه میداد در آن واحد تمام (Entity) هایی که به هم مرتبط هستن رو برای دسترسی راحت تر توی حافظه داشته باشیم. البته این بحث هم به نوبه خودش خیلی بحث بر انگیزه چون عده زیادی هستن که به این موضوع معتقد هستن و عده دیگه با این موضوع کاملا مخالف هستن که باز هم در موقع مناسب توی یه پست دیگه به صورت اختصاصی به این موضوع خواهیم پرداخت.
- POCO Change-Tracking: شاید بشه یکی از بهترین مضایای (EF 4.0) رو همین (Change-Tracking) دونست. همونطور که در پست قبلی توضیح مختصری داده بودم در (EF 4.0) قابلیت (Change-Tracking) به دو روش بر پایه ی (POCO) انجام میشه. اولی (Snapshot based Change Tracking) به این صورت انجام میشه که در ابتدای کار از اطلاعات مورد نظر یک (Snapshot) گرفته میشه و اجازه میده تا تمام عملیات ها و تغییر های مورد نظر انجام بشه و در نهایت در هنگام ذخیره سازی اطلاعات (SaveChanges) تغییر یافته به وسیله مقایسه با (Snapshot) گرفته شده عملیات های مورد نظر (Update, Delete, Insert) انجام میشه. در حالت دوم (Notification based Change Tracking with Proxies) بیشتر برای مواقعی تولید شده که شما بر روی اطلاعاتی خاص حساسیت بخصوصی برای بروز بودن تمام تغییرات انجام شده و (Sync) بودن اطلاعات با دیتابیس مورد نظر، دارید و این قابلیت به بهترین شکل این کار را برای شما انجام میدهد و تمام تغییرات صورت گرفته به محض انجام تغییر، این تغییرات اعمال می شود.
- پشتیبانی هر چه بهتر (N-Tier) توسط (EF 4): اشتباه نکنید اینجا صحبت از لایه های منطقی نیست اینجا صحبت از (Tier) های فیزیکی جدا از هم هیت که بحث خیلی پیچیده مهم و لذت بخشه. حتماً باید درگیر بشی تا بتونی مطلب رو درک کنی. که البته باز هم می تونم قول یه پست دیگه رو بدم که مفصل در این مورد بحث کنیم. فعلاً به این مقدار بسنده می کنم که () به دلایل زیادی از (N-Tier) پستیبانی می کنه و زمانی که شما سیستم هایی داشته باشید که نیاز به معماری های (N-Tier) داشته باشید دیگه (EF 4.0) میتونه خودش رو به عنوان یک (Solution) به شما معرفی کنه.
- Model-First Development: این بحث بحث زیاد پیچیده ای نیست البته پگونگی اینکه این اتفاق چگونه می افته خیلی حرف داره ولی توضیحش زیاد طولانی نیست اگه بخوام به سادگی بگم شما میتونید ابتدا و تنها با (Model) خودتون که با (EF 4.0) در یک محیط مناسب و یک فایل (edmx.) کار کنید و هیچ ارتباطی با دیتابیس یا دیتا نداشته باشید یک مدل (Conceptual) که حتی می تونه جای دیاگرام های (Conceptual Data Model) شما رو که با نرم افزار هایی مثل (Power Designer) تهیه می کردین رو براتون بگیره و بعد از تولید این (Model)، شما میتونید دیتابیس خودتون رو (Generate) کنید که چگونگی اون بر می گرده به مورد شماره 3 که در بالا توضیح دادم و در آینده مفصل تر توضیح میدم.
- Code-First Development: این بحث هم خیلی پیچیده هست ولی تمام منظور اینه که این بار میتونید ابتدا از کد های کاملا اختصاصی خودتون شروع کنید و حدس و تولید کردن مدل های (Conceptual) رو به (EF 4.0) بسپارید و بعد از تولید (Model) نوبت به تولید و (Generate) کردن دیتابیس و جدول ها و روابط بین اونهاست که باز هم با همان مورد شماره 3 درگیر خواهد شد که قرار است در آیندده توضیح داده شود.
هیچ نظری موجود نیست:
ارسال یک نظر