آموزش کتابخانه Microsoft Enterprise Library 5.0
پنج شنبه 16 آذر 1391 2:49 PM
قصد دارم در سلسله مقالاتی به معرفی امکانات و ویژگی های آخرین نسخه از کتابخانه Microsoft Enterprise Library به شکل کاملا کاربردی و با زبانی ساده بپردازم. این مقاله اولین قسمت از این سلسله مقالات می باشد.
یکی از ارزشمندترین محصولات شرکت مایکروسافت برای توسعه گران پلتفرم Net. کتابخانه Enterprise Library می باشد که متاسفانه در بین توسعه گران کشور ما کمترین استفاده را داشته است. دلیل این عدم استقبال به عقیده بنده عدم آشنایی با امکانات و نحوه کار با این کتابخانه می باشد.
تا قبل از انتشار نسخه آخر این کتابخانه (نسخه 5.0) یکی از بزرگترین مشکلات برای فراگیری این کتابخانه، عدم وجود مستندات فنی و آموزشی در مورد آن بود که همواره مورد اعتراض و انتقاد برنامه نوسان در سرتاسر جهان بود. تا اینکه سرانجام تیم patterns & practices شرکت مایکروسافت که خالق این کتابخانه می باشد، در ارائه آخرین نسخه از کتابخانه این خلأ را هم رفع نموده و هم اکنون بهترین زمان برای یادگیری و استفاده از این محصول ارزشمند می باشد.
نسخه آخر کتابخانه Enterprise Library به واقع یک سر و گردن بالاتر از نسخه های پیشین هم از جهت طراحی و هم از کاربردی می باشد.
در این مقاله به معرفی کلی و اجمالی امکانات این کتابخانه می پردازیم و در مقالات آتی به بررسی تک تک بلاک ها با رویکرد کاربردی و جزئیات مورد نیاز خواهیم پرداخت.
به طور کلی نیازمندی های یک پروژه را می توان به نیازمندی های عملیاتی (functional requirements) و نیازمندی های غیر عملیاتی (non functional requirements) تقسیم نمود.
با اینکه در هنگام تعریف پروژه همواره نیاز های عملیاتی به عنوان مهمترین اهداف مطرح می شوند ولی برای توسعه گران نرم افزار، نیاز های غیر عملیاتی یکی از بحث برانگیزترین و چالش برانگیز ترین مباحث بخصوص در پروژه هایی با مقیاس متوسط و بزرگ بوده است. بدون ایجاد بستری مناسب و اتخاذ سیاست های درست در مورد نیازمندی های غیر عملیاتی، نگهداری، دیباگ و تغییرات در سیستم بسیار مشکل و پر دردسر خواهد بود.
به گفته قول خانم Mary Shaw استاد علوم کامپیوتر دانشگاه Carnegie Mellon:
هدف اصلی از تولید کتابخانه Enterprise Library پاسخگویی به اینگونه از نیازها در پروژه های نرم افزاری می باشد. با استفاده صحیح از این کتابخانه و ایجاد بستری مناسب در نرم افزار، می توانید با خیال راحت حواس خود را بر روی نیاز های عملیاتی پروژه متمرکز نمایید و این موضوع باعث به وجود آمدن نرم افزارهایی با کیفیت قابل قبول خواهد شد.
کتابخانه Enterprise Library از 9 بلاک (Application Block) تشکیل شده است که هر بلاک برای پاسخگویی به نیازهای بخصوصی به وجود آمده است. هر بلاک متشکل از کامپوننت هایی با قابلیت استفاده مجدد (Reusable) می باشد.
از این 9 بلاک، تعداد 7 بلاک به شکل کاربردی (Functional Blocks) در برنامه قابل استفاده هستند و 2 بلاک دیگر جزو کامپوننت هایی هستند که سایر 7 بلاک دیگر در درون خود از امکانات این دو بلاک به مقاصد گوناگون از جمله نمونه سازی اشیاء (Object Initialization) استفاده می کنند. اصطلاحا به این دو بلاک Wiring Blocks گفته می شود.
این بلاک ها با توجه به نیاز برنامه نویسان می توانند به شکل مستقل و یا وابسته به یکدیگر در کتار هم مورد استفاده واقع شوند.
در قسمت زیر این بلاک های را ملاحظه می کنید.
همانطور که قبلا ذکر شد، این بلاک ها توسط سایر بلاک های کاربردی مورد استفاده قرار می گیرند. البته در مواردی می توانند مورد استفاده برنامه نویسان نیز قرار گیرند که در آینده بدان اشاره خواهیم نمود. در قسمت زیر معرفی کوتاهی از این دو بلاک را ملاحظه می کنید.
اکنون به معرفی اجمالی 7 بلاک کاربردی می پردازیم. هدف از این سلسله مقالات، در حقیقت آموزش نحوه استفاده از این 7 بلاک می باشد و ما در مقالات آینده با رویکردی کاربردی و همراه با مثال به آموزش تمامی بلاک ها خواهیم پرداخت. ولی در این مقاله نگاهی کوتاه به عملکرد این 7 بلاک خواهیم داشت.
1. بلاک دیتا (Data Access Application Block):
این بلاک سال ها به عنوان پرکاربردترین و محبوب ترین بلاک از کتابخانه Enterprise Library مورد استفاده توسعه گران قرار گرفته است. با استفاده از این بلاک انجام اعمال متداول از قبیل Create, Delete, Update, Insert بر روی پایگاه داده به ساده ترین شکل قابل انجام می باشد.
موارد زیر جزو ویژگی های اصلی این کتابخانه می باشند:
2. بلاک لاگ(Logging Application Block):
عملیات لاگ یکی از مهمترین نیاز های موجود در پروژه های نرم افزاری می باشد. با استفاده از لاگ نمودن اطلاعات، توسعه گران نرم افزار می توانند از اتفاقات رخ داده در برنامه در پشت صحنه مطلع گردند. لاگ نمودن رخداد های مختلف در برنامه و خطاهای به وجود آمده و بسیاری دیگر از اطلاعات می تواند برنامه نویسان، مدیران، کاربران و غیره را در جریان کامل امور قرار دهد.
بلاک لاگ بسیار انعطاف پذیر بوده و می توان از آن به منظور لاگ نمودن اطلاعات مختلف در رسانه های متفاوت (XML، ایمیل، پایگاه داده و ...) استفاده نمود.
3. بلاک خطا و استثناء (Exception Handling Application):
اداره نمودن خطاها و استثناء ها یکی از مهمترین اعمال در پروژه های نرم افزاری می باشد. با توجه به گوناگون بودن خطاها (خطاهای امنیتی، خطاهای مروبط به پایگاه داده، خطاهای مربوط به عملکرد قطعه کدهای برنامه و ...) وجود یک سیستم قدرتمند برای اداره نمودن استثناء ها بسیار ضروری می باشد.
عملکرد این لایه مبتنی بر سیاست ها (Policy) می باشد که می توان برای استفاده هر گروه از دست اندر کاران سیستم (برنامه نویسان، مدیران، عیب یابان، کاربران و ...) سیاست خاصی تعریف نمود و به ساده ترین شکل ممکن سیاست ها را تغییر داد (در مقالات بعدی این موضوع را مشاهده خواهید نمود).
4. بلاک کش (Caching Application Block):
همانطور که از نام این بلاک پیداست، به منظور ایجاد بستری مناسب برای استفاده از تکنولوژی Caching مورد استفاده قرار می گیرد.
5. بلاک اعتبار سنجی (Validation Application Block):
اعتبار سنجی داده های کاربران یکی از مهمترین وظایف در برنامه ها بوده که اتفاقا جزو زمانبر ترین وظایف نیز می باشد. این بلاک به منظور ارائه راه حل هایی برای اعتبار سنجی داده ها در محیط های مختلف (ویندوز، وب، سرویس و ...) به وجود آمده است.
6. بلاک امنیت Security Application Block):
مکانیزم احراز هویت و تشخیص مجوز (Authentication & Authorization) مبتنی بر نقش ها (Rules) یکی از نیازهای مهم و متداول در برنامه ها می باشد. بلاک امنیت پیاده سازی هایی در مورد Active Directory Service & Authorization Manager & Active Directory Application Mode داشته و همچنین امکان نوشتن پروایدر هایسفارشی را نیز دارد.
7. بلاک رمزنگاری (Cryptography Application Block):
همانطور که نام بلاک کاملا مشخص می باشد، جهت ایجاد بستری برای سهولت در رمز نگاری با الگوریتم های مختلف و انجام اعمال Hashing و Validation مورد استفاده قرار می گیرد.
همانگونه که در ابتدای مقاله ذکر شد، بلاک های کاربردی کتابخانه Enterprise Library به طور پیشفرض به شکل مستقل قابل استفاده می باشند. ولی برای استفاده از برخی امکانات بلاک ها وابسته به بلاک های دیگر است.
به طور مثال اگر قرار باشد که اطلاعات بلاک لاگ در پایگاه داده ذخیره شود، ما نیاز داریم که از بلاک دیتا نیز استفاده کنیم. و یا اگر قرار باشد محتوای خطای به وجود آمده در برنامه که توسط بلاک استثناء اداره شده است را در محلی لاگ کنیم، نیاز داریم که از بلاک لاگ استفاده کنیم و اگر محل ذخیره سازی پایگاه داده باشد پس نیاز است از هر سه بلاک دیتا، لاگ و استثناء در کنار یکدیگر استفاده نمایید.
در جدول زیر وابستگی بلاک های مختلف به یکدیگر در شرایط مختلف را ملاحظه می کنید.
نام بلاک | وابستگی ها | شرایط |
بلاک لاگ | بلاک دیتا | در صورتی که نیاز باش اطلاعات لاگ شده در پایگاه داده ذخیره شوند. |
بلاک استثناء | بلاک لاگ | اگر خطای به وجود آمده نیاز به لاگ شدن داشته باشد |
بلاک دیتا | اگر محل ذخیره سازی خطای به وجود آمده پایگاه داده باشد. | |
بلاک کش | بلاک دیتا | در صورتی که بخواهیم اطلاعات کش شده را در پایگاه داده ذخیره کنیم |
بلاک رمز نگاری | اگر قرار باشد اطلاعات رمزنگاری شوند. | |
بلاک امنیت | بلاک دیتا | در صورتی که بخواهیم اطلاعات امنیتی کش شده را در پایگاه داده نگهداری کنیم. |
نمایش گرافیکی جدول فوق را در قسمت زیر ملاحظه می کنید.
در قسمت بعدی از مقالات به معرفی پیش نیاز های نصب این کتابخانه و روش نصب آن خواهیم پرداخت.
مدیر تالار های: