آموزش کتابخانه Microsoft Enterprise Library 5.0 - قسمت سوم
پنج شنبه 16 آذر 1391 2:58 PM
در قسمت های قبلی به معرفی اجمالی کتابخانه Microsoft Enterprise Library 5.0 و نحوه نصب آن پرداختیم. توصیه می شود در صورت نیاز قبل از خواندن این مقاله، قسمت های قبلی را مطالعه کنید.
بلاک دیتا (Data Application Block) معروف ترین و پر استفاده ترین بلاک در مجموعه Enterprise Library می باشد. میلیون ها نفر از برنامه نویسان و توسعه گران نرم افزار دنیا تاکنون از امکانات این بلاک استفاده نموده اند و امتحان خود را به بهترین شکل ممکن پس داده است.
امروزه با ظهور ابزار های ORM از قبیل LINQ to SQL، LINQ to Entity، NHibernate، OpenAccess ORM و غیره ساخت لایه دیتا و انجام اعمال متداول بر روی بانک های اطلاعاتی سهولت بسیار زیادی پیدا کرده است. این ابزار ها باعث صرفه جویی زیادی در وقت و زمان برنامه نویسان شده اند. البته هر کدام از این ابزار ها علاوه بر مزایای عمده ای که دارند، دارای نقاط ضعفی نیز می باشند.
صرف نظر از نقاط قوت و ضعف ابزارهای ORM، هر گاه نوبت به راندمان و کارایی می رسد، همچنان ADO.NET و Stored Procedure با اختلاف زیادی حرف اول را می زنند و بلاک دیتا ابزاری ایده آل برای کار با این عناصر می باشد.
با توجه به اینکه این مقاله به معرفی اولین بلاک کاربردی می پردازد، توصیه می شود که در صورت عدم آشنایی با این کتابخانه، حتما این مقاله را به دقت مطالعه کنید. بسیاری از مطالبی که در اینجا ذکر می شود در سایر بلاک ها نیز مشابه می باشد و بنابراین در مقالات آینده تکرار نخواهند شد.
در این مقالات برای سهولت و درک بهتر از واژه "پروسیجر" برای عبارت "Stored Procedure" استفاده می شود.
اعمال متداول بر روی پایگاه داده با تعداد خط های کد بسیار کمتری نسبت به ADO.NET انجام می شود. البته به یاد داشته باشید که خود این بلاک نیز در درون خود از ADO.NET استفاده می کند.
تمام اعمال حساسی از قبیل ایجاد اتصال پایگاه داده، باز کردن و بستن اشیاء اتصال (Connection Objects) ، کش نمودن پارامتر ها (Parameter Caching) و غیره توسط خود بلاک و به شکل درونی انجام شده و برنامه نویس را کاملا بی نیاز از نگرانی در مورد اینگونه جوانب نموده است.
با استفاده از این بلاک می توانیم برای انواع پایگاه های داده روز دنیا از قبیل Microsoft SQL Server، Oracle، SQL Server Compact Edition و ... برنامه نویسی کنیم. تغییر از یک نوع پایگاه داده به نوع دیگر با کمترین تغییرات قابل انجام می باشد.
پایگاه داده SQL Server Compact Edition قابلیت Connection Pooling را حمایت نمی کند و به همین دلیل انجام عمل باز نمودن و بستن اشیاء اتصال این پایگاه داده بسیار پرهزینه می باشد. خوشبختانه بلاک دیتا در درون خود مکانیزمی را برای انجام اعمال Connection Pooling و Parameter Caching در این پایگاه داده پیاده سازی نموده که باعث بالا رفتن راندمان و کارایی شده است.
در حال حاضر بلاک دیتا در آخرین نسخه انتشار خود پایگاه های داده Microsoft SQL Server و SQL Server Compact Edition و پایگاه داده Oracle 9i و نسخه های جدیدتر را حمایت می کند. خوشبختانه همانطور که در مقالات قبلی نیز اشاره شد، کتابخانه Enterprise Library به شکل متن باز ارائه شده است و جامعه برنامه نویسان متن باز، پیاده سازی های مختلفی را جهت کار با پایگاه های داده مختلفی از قبیل IBM DB2, MySQL, Oracle (ODP.NET), PostgreSQL, SQLite نوشته اند که با مراجعه به آدرس http://entlibcontrib.codeplex.com می توانید اطلاعات بیشتر را کسب کنید.
پیاده سازی قطعه کدهای مربوط به پایگاه داده Oracle به طور پیشفرض با توابع اسمبلی System.Data.OracleClient.dll انجام شده است. از نسخه 4.0، تیم توسعه دهنده این کتابخانه توصیه نموده اند که از به منظور استفاده از بلاک دیتا برای پایگاه داده Oracle از این پیاده سازی استفاده نکنید و به جای آن از پیاده سازی های دیگر مانند آنچه که در آدرس بالا موجود است (Oracle ODP.NET) استفاده کنید.
برای استفاده از هر یک از بلاک های کتابخانه Enterprise Library نیاز به انجام مقداری تنظیمات و پیکربندی های مختلف داریم. برخی از این تنظیمات از طریق فایل پیکربندی (معمولا web.config و app.config) انجام می شود و برخی از تنظیمات از طریق کد و برنامه نویسی. برخی تنظیمات را نیز می توان از هر دو طریق انجام داد.
به طور کلی اضافه نمودن امکانات بلاک های مختلف به یک برنامه شامل چند مرحله می باشد:
انجام پیکربندی و اعمال تنظیمات در فایل پیکربندی برنامه
اضافه نمودن اسمبلی های مورد نیاز به برنامه (با توجه به بلاک های انتخاب شده)
اضافه نمودن فضاهای نامی (name space) مروبطه به برنامه
قبل از اینکه وارد جزئیات پیکربندی شویم، به محتویات فایل پیکربندی بلاک دیتا در یک فایل app.config توجه کنید.
قطعه کد فوق یک پیکربندی ساده و معمولی برای بلاک دیتا در یک فایل پیکربندی را نشان می دهد. قسمت های مربوط به بلاک دیتا با رنگ زرد مشخص شده اند.
هر کدام از بلاک های کتابخانه Enterprise Library نیاز به تعریف یک section در قسمت configSections دارند. در فایل پیکربندی بالا ما یک section به نام dataConfiguration تعریف کرده ایم که قرار است تنظیمات مربوط به بلاک دیتا را نگهداری کند. سپس اسمبلی مورد استفاده برای تنظیمات بلاک دیتا و ورژن مربوطه و سایر مشخصات را ذکر کرده ایم.
خوشبختانه بلاک دیتا تنظیمات بسیار کمی دارد و در فایل بالا در قسمت dataConfiguration فقط نام رشته اتصال پیشفرض پایگاه داده یعنی defaultDatabase را مشخص کرده ایم. با استفاده از بلاک دیتا می توان همزمان با پایگاه های داده مختلفی ارتباط برقرار نمود. به طور مثال اگر در قسمت رشته های اتصال پایگاه داده یعنی المنت connectionStrings چندین رشته اتصال داشته باشیم، هنگام کار با بلاک دیا می توانیم از هر کدام از آن ها استفاده کنیم. ولی یک رشته اتصال را باید به عنوان پیشفرض انتخاب کنیم تا مجبور نباشیم هنگام کار با بلاک دیتا مرتبا نام رشته اتصال مربوطه را ذکر کنیم. در ادامه مقاله هنگام ذکر مثال های کاربردی با این موضوع بیشتر آشنا خواهید شد.
در رشته اتصال حتما باید providerName را مشخص کنیم. در حقیقت بلاک دیتا با توجه به این قسمت متوجه می شود که عملیات قرار است بر روی چه نوع پایگاه داده ای انجام شود و از کدام پیاده سازی کد باید استفاده شود.
خوب همانطور که ملاحظه می کنید اعمال تنظیمات بلاک ها به شکل مستقیم در فایل پیکربندی بسیار پر دردسر و تقریبا غیر ممکن می باشد ولی گاهی نیاز می شود که برخی از تغییرات جزئی را به شکل مستقیم در فایل پیکربندی اعمال کنیم. به همین دلیل اعضای تیم تولید کننده Enterprise Library یک برنامه کنسول برای نسخه های DotNet 3.5 و DotNet 4.0 و برای سیستم های 32 و 64 بیتی فراهم نموده اند تا بتوان با استفاده از آن براحتی تنظیمات مربوط به بلاک های مختلف را بر روی فایل پیکربندی اعمال نمود.
قبل از اینکه به سراغ کنسول پیکربندی بلاک ها برویم باید بدانید که فایل های پیکربندی (معمولا web.config یا app.config) به طور پیشفرض اسکیمای تگ های Enterprise Library را نمی شناسند و در نتیجه هنگام تغییرات در آن ها خبری از قابلیت IntelliSense نمی باشد. برای اینکه قابلیت IntelliSense را برای تگ های Enterprise Library فراهم کنید، کافیست مراحل زیر را دنبال کنید.
1. فایل پیکربندی را در ویژوال استودیو باز کنید.
2. از منوی XML گزینه ...Schemas را انتخاب کنید.
3. از پنجره باز شده، ردیف مربوط به اسکیمای Enterprise Library را پیدا کرده و گزینه Use this schema را انتخاب نموده و پنجره را ببندید.
اکنون اگر به فایل پیکربندی مراجعه کنید، متوجه خواهید شد که قابلیت IntelliSense برای تگ های Enterprise Library فعال شده است.
ایجاد و ویرایش تنظیمات توسط کنسول پیکربندی از دو طریق امکان پذیر می باشد. در صورتی که بخواهید پنجره کنسول را به شکل مستقل اجرا کنید، کافیست که پوشه نصب برنامه، کنسول مناسب خود را (دات نت 3.5 یا 4.0 و نسخه 32 یا 64 بیتی) اجرا نمایید. در این صورت پنجره کنسول برای شما باز می شود و از طریق آن می توانید که فایل پیکربندی جدید ایجاد کنید و یا فایلی را که قبلا ایجاد شده است را ویرایش نمایید.
راه دوم از طریق ویژوال استودیو می باشد. شما می توانید برای اعمال تنظیمات بلاک ها بر روی فایل پیکربندی کلیک راست نموده و گزینه Edit Enterprise Library V5 Configuration را انتخاب کنید.
تذکر بسیار مهم:
در صورت نیاز قبل از اعمال تغییرات بر روی فایل پیکربندی حتما یک نسخه پشتیبان از آن تهیه کنید تا در صورت خرابکاری بتوانید به نسخه قبلی خود دسترسی داشته باشید.
پنجره فایل پیکربندی مشابه شکل زیر می باشد.
از منوی Blocks می توانید بلاک های مختلف را به برنامه اضافه نموده و تنظیمات آن ها را انجام دهید. با صرف مقداری زمان و کار کردن با این کنسول می توانید به اکثر ویژگی های آن مسلط شوید. ما در ادامه این سلسله مقالات اکثر ویژگی ها را معرفی خواهیم نمود.
از منوی Blocks گزینه Add Data Settings را انتخاب نموده و کمی با ویژگی های مختلف آن کار کنید. به طور مثال ما در شکل زیر بلاک دیتا را اضافه نموده ایم و خاصیت Default Database Instance را به ConnectionString1 تغییر داده ایم.
تنظیمات را ذخیره نموده و برای مشاهد تغییرات به فایل پیکربندی مراجعه کنید.
در مقاله بعدی به نحوه نمونه سازی اشیاء و کار با توابع بلاک دیتا می پردازیم.
مدیر تالار های: