۱۳۹۰/۰۵/۲۴

نقدي بر كتاب «مرجع كامل entity framework 4.1»


كتاب «مرجع كامل entity framework 4.1» نوشته‌ي آقاي راد نزديك به يك ماهي است كه منتشر شده است. فرصتي پيدا شد تا اين كتاب حدودا 260 صفحه‌اي را مطالعه كنم و در ادامه توضيحاتي را پيرامون آن مطالعه خواهيد كرد.

بررسي كتاب

در عنوان كتاب ذكر شده «مرجع كامل»؛ ولي خوب، 260 نمي‌تونه مرجع كامل باشه. بنابراين كمي رعايت اعتدال در كارهاي بعدي لازم به نظر مي‌رسد. همچنين يك مورد را هم هميشه در نشر كتب تخصصي در نظر داشته باشيد: «ذكر شماره نگارش محصول» مورد نظر در عنوان كتاب، خيلي سريع كار شما را از مد افتاده خواهد كرد. خيالتان راحت باشد تا يك سال ديگر همينطور اين شماره‌ها افزايش پيدا مي‌كنند. خريداري هم كه آنچنان اطلاعاتي از كل كار نداشته باشد، بر اساس همين شماره و بدون مطالعه متن، از خريد كتاب امتناع خواهد كرد.

  • فصل اول اين كتاب به معرفي تاريخچه‌ي EF و لزوم استفاده از آن مي‌پردازد. همچنين خلاصه‌اي از قابليت‌هاي آن‌را همانند روش‌هاي model first ، database first و code first بيان مي‌كند.
  • تمركز فصل دوم بر نحوه‌ي استفاده از روش‌هاي model first و database first است به همراه نحوه‌ي توليد اسكريپت بانك اطلاعاتي در حالت model first.
  • فصل سوم كتاب به مرور جزئيات طراح EF در ويژوال استوديو جهت كار بهتر با موجوديت‌ها اختصاص دارد.
  • در فصل چهارم با روش‌هاي كوئري نويسي در EF آشنا خواهيد شد. همچنين بر روي مباحث اجراي به تعويق افتاده و مفهوم آن هم بحث شده كه بسيار ارزشمند است.
  • فصل پنجم كتاب به مباحث ثبت، حذف و به روز رساني اطلاعات توسط EF اختصاص دارد. همچنين يك سري مباحث همانند سطح اول caching در NHibernate كه در EF هم وجود دارد، بررسي شده است كه البته نام آن در اينجا Object state و entity state است.
  • در فصل ششم در مورد نحوه‌ي نگاشت رويه‌هاي ذخيره شده SQL Server به اشياء دات نتي بحث شده همچنين نحوه‌ي اجرا و استفاده از آن‌ها
  • فصل هفتم كتاب به ارتباطات بين موجود‌يت‌ها يا همان مباحث one to many و امثال آن اختصاص دارد به همراه نحوه‌ي تنظيمات آن در طراح EF در VS.NET
  • در فصل هشتم، به قالب‌هاي T4 پرداخته شده. ابتدا معرفي، سپس آشنايي با Syntax و نهايتا نحوه‌ي دستكاري و سفارشي سازي قالب‌هاي پيش فرض T4 مرتبط با EF ارائه شده‌اند.
  • فصل نهم به بررسي كاملتر مبحث model first كه در فصل دوم معرفي شده مي‌پردازد. ايجاد موجوديت‌ها، نحوه‌ي تعريف ارتباطات و نهايتا ايجاد بانك اطلاعاتي از روي آن
  • فصل دهم آن به مباحث جديد EF در مورد Code first اختصاص دارد. اين فصل واقعا ارزشمند است چون ... نتيجه‌ي تحقيق بوده نه ترجمه. تقريبا با تمام تاريخچه‌ي مرتبط با code first در EF، محل‌هاي دريافت فايل‌ها، ابزارهاي كمكي، روش‌هاي كوئري گرفتن،نحوه‌ي ايجاد بانك اطلاعاتي از روي كد، تعيين اعتبار و غيره در طي يك فصل آشنا خواهيد شد.
  • در فصل يازدهم آن مروري بر WCF Data services و پروتكل OData صورت گرفته است. نحوه‌ي ايجاد و سپس فراخواني آن توسط يك كلاينت. در عنوان كتاب ذكر شده : «مرجع»، بنابراين به دنبال يك كتاب خودآموز قدم به قدم نباشيد. اين كتاب بيشتر به «معرفي» امكانات موجود در EF در طي 260 صفحه مي‌پردازد كه الزاما با توجه به تعداد صفحات كتاب، بعضي از موارد آن مانند اين فصل آخر، از عمق لازم برخوردار نيستند ولي، حداقل سرنخ را به دست شما خواهند داد.


مزايا:
  •  به روز بودن مطالب آن
  •  آشنايي و تسلط مؤلف/مترجم به مطالبي كه تهيه كرده. اين مورد در فصل دهم آن مشهود است.
  •  زبان فارسي (بله! خيلي مهمه! هستند كساني كه چند گيگ، ببخشيد چند صد گيگ (!)، eBook به زبان انگليسي دارند ولي حتي يكي از آن‌ها را هم تمام نكرده‌اند)
  •  متن روان و سليس
  •  كيفيت خوب كتاب، صفحه بندي و امثال آن


معايب:
  •  قيمت نزديك به 8000 تومان براي كتاب 260 صفحه‌اي به نظر زياد است. البته با بالا رفتن قيمت‌ها (براي مثال 4 برابر شدن قيمت يك عدد نان لواش از سال قبل تا به امسال!)، بالاخره ... خوب اين مسايل را هم به همراه خواهد داشت.
  •  تصاوير موجود در كتاب عموما بيش از اندازه كوچك شده‌اند. اين مورد خواندن تعدادي از آن‌ها را با مشكل مواجه كرده است.
  •  در مورد متد الحاقي معروف Include در EF من مطلبي را در اين كتاب پيدا نكردم. اين مورد به بحث عدم نياز به join نويسي صريح در EF مرتبط مي‌شود.
  •  در مورد نحوه‌ي استفاده از EF با ساير بانك‌هاي اطلاعاتي بحث نشده. كتاب فقط به SQL Server منحصر است.
  •  در يكي از فصل‌ها به الگوي Repository در حد نامبردن اشاره شده. اين مورد براي خواننده‌اي كه اطلاعاتي از موضوع ندارد، كافي نيست. مي‌شد يك فصل را به آن اختصاص داد.


در كل خواندن كتاب «معرفي» EF 4.1 ، به كساني كه با Silverlight و WCF RIA Services سر و كار دارند (و كوئري‌هاي آن برايشان كمي گنگ است) و همچنين عموم علاقمنداني كه مي‌خواهند جايگزيني براي ADO.NET (در يك سطح بالاتر از آن البته) پيدا كنند توصيه مي‌شود.



در حاشيه!

شايد بپرسيد چرا اين كتاب در 260 صفحه و چرا فقط در 1000 نسخه منتشر شده است. چرا اينقدر تعداد كتاب‌هاي تخصصي كم است. چرا بيشتر تمايل به چاپ كتاب‌هاي نصب ويندوز و امثال آن است تا مثلا كتاب EF 4.1 يا خداي نكرده NHibernate ! پاسخ هم در يك جمله خلاصه مي‌شود: «نگراني ناشر از بازگشت سرمايه»
اين شما هستيد كه با پشتيباني خود مي‌توانيد اين اميدواري را به ناشرين كشور بدهيد تا «جرات كنند» بيشتر به طرف كتاب‌هاي تخصصي بروند و اين پشتيباني با صرفا گفتن چقدر عالي، دست شما درد نكنه، خيلي خوب بود، باز هم از اين كارها بكنيد،‌ معنا پيدا نمي‌كند! بايد لطف كنيد و «خريد كنيد». هيچ راه ديگري هم ندارد. الان چند عدد كتاب ASP.NET MVC 3.0 در كشور به زبان فارسي وجود دارد؟ چند عدد كتاب تخصصي SQL Server 2008 R2 را مي‌توانيد پيدا كنيد؟ در مورد كتابخانه پردازش موازي دات نت 4 چطور؟ و ...
البته منهاي نگراني اين بحث بازگشت سرمايه ، يك مورد ديگر هم سبب اين نوع تاخيرها هست. يادم مياد كتاب الگوهاي طراحي برنامه نويسي شيءگرا در سي شارپ رو كه چند سال قبل به ناشر دادم نحوه‌ي پرداخت آن به اين صورت بود: نزديك به 10 درصد پشت جلد، در طي چند قسط، آن هم 6 ماه پس از انتشار عمومي كتاب! خوب همين شد كه من ديگر به طرف اين كار نرفتم. چون واقعا نوشتن، يك «كار» كامل است. بايد وقت گذاشت (6 ماه حداقل يا بيشتر)، تحقيق كرد، رياضت كشيد و دست آخر 6 ماه پس از انتشار كتاب ... با توجه به اينكه كتاب رو كه الان شما به دست ناشر مي‌ديد شايد يكسال ديگر منتشر شود (بسته به تعداد كاري كه در دست دارد).
در هر حال، با تمام اين تفاسير، هستند كساني كه «اميدوارانه» نسبت به نوشتن كتاب‌هاي تخصصي مانند «مرجع كامل entity framework 4.1» اقدام مي‌كنند و شما هم حداقل كاري كه مي‌توانيد جهت حمايت از اين نوع حركات بكنيد، «خريد است». در غيراينصورت مدام اينطرف اونطرف ننويسيد كه چرا كتاب WPF 4.0 يا WCF 4.0 به زبان فارسي نداريم. پشتيباني نمي‌كنيد؟! خوب ... نداريم! «همين!»
يك مورد ديگر هم هست البته. عده‌اي هستند كه مثلا كلاس‌هاي ميليوني، جهت آموزش اين مباحث برگزار مي‌كنند. خوب اين‌ها هم مسلما خوشحال نخواهند شد كه مثلا كتاب WCF 4.0 و مباحث SOA مرتبط با آن به زبان فارسي منتشر شود يا حتي در اين زمينه پيش قدم شوند. اين هم هست!