آموزش کتابخانه Microsoft Enterprise Library 5.0 - قسمت اول
  در این قسمت به معرفی کتابخانه Microsoft Enterprise Library 5.0 می پردازم.
   C#
   ۲۱۷۹۱
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۹/۱۲/۲۷
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

مقدمه:

قصد دارم در سلسله مقالاتی به معرفی امکانات و ویژگی های آخرین نسخه از کتابخانه Microsoft Enterprise Library به شکل کاملا کاربردی و با زبانی ساده بپردازم. این مقاله اولین قسمت از این سلسله مقالات می باشد.

یکی از ارزشمندترین محصولات شرکت مایکروسافت برای توسعه گران پلتفرم Net. کتابخانه Enterprise Library می باشد که متاسفانه در بین توسعه گران کشور ما کمترین استفاده را داشته است. دلیل این عدم استقبال به عقیده بنده عدم آشنایی با امکانات و نحوه کار با این کتابخانه می باشد.

تا قبل از انتشار نسخه آخر این کتابخانه (نسخه 5.0) یکی از بزرگترین مشکلات برای فراگیری این کتابخانه، عدم وجود مستندات فنی و آموزشی در مورد آن بود که همواره مورد اعتراض و انتقاد برنامه نوسان در سرتاسر جهان بود. تا اینکه سرانجام تیم patterns & practices شرکت مایکروسافت که خالق این کتابخانه می باشد، در ارائه آخرین نسخه از کتابخانه این خلأ را هم رفع نموده و هم اکنون بهترین زمان برای یادگیری و استفاده از این محصول ارزشمند می باشد.

نسخه آخر کتابخانه Enterprise Library به واقع یک سر و گردن بالاتر از نسخه های پیشین هم از جهت طراحی و هم از کاربردی می باشد.

در این مقاله به معرفی کلی و اجمالی امکانات این کتابخانه می پردازیم و در مقالات آتی به بررسی تک تک بلاک ها با رویکرد کاربردی و جزئیات مورد نیاز خواهیم پرداخت.

شروع:

به طور کلی نیازمندی های یک پروژه را می توان به نیازمندی های عملیاتی (functional requirements) و نیازمندی های غیر عملیاتی (non functional requirements) تقسیم نمود.

  • نیازمندی های عملیاتی (functional requirements): به نیازمندی هایی گفته می شود که به شکل مستقیم از دل کسب و کار (Business) بیرون می آیند. به طور مثال اگر قصد نوشتن برنامه ای برای ثبت نام دانشجویان یک دانشکده را داشته باشیم، نیازهای ثبت نام، انتخاب واحد و حذف و اضافه و ... جزو نیازمندی های عملیاتی پروژه می باشند.
  • نیازهای غیر عملیاتی (non functional requirements): این نوع نیازمندی ها هم معمولا در پروژه های نرم افزاری وجود دارند و به طور مستقیم با نوع کسب و کار ارتباط ندارند. از جمله این نیاز مندی ها می توان به نوع پایگاه داده و نحوه انجام تراکنش با آن، استفاده از مکانیزم Caching برای بالا بردن راندمان، استفاده از مکانیزم ها امنیتی برای اعتبار سنجی و رمز نگاری اطلاعات، مدیریت و اداره نموده خطاهای به وجود آمده در هنگام کار با نرم افزار و ... نام برد.

با اینکه در هنگام تعریف پروژه همواره نیاز های عملیاتی به عنوان مهمترین اهداف مطرح می شوند ولی برای توسعه گران نرم افزار، نیاز های غیر عملیاتی یکی از بحث برانگیزترین و چالش برانگیز ترین مباحث بخصوص در پروژه هایی با مقیاس متوسط و بزرگ بوده است. بدون ایجاد بستری مناسب و اتخاذ سیاست های درست در مورد نیازمندی های غیر عملیاتی، نگهداری، دیباگ و تغییرات در سیستم بسیار مشکل و پر دردسر خواهد بود.

به گفته قول خانم Mary Shaw استاد علوم کامپیوتر دانشگاه Carnegie Mellon:

"Less than 10% of the code has to do with the ostensible purpose of the system; the rest deals with input-output, data validation, data structure maintenance, and other housekeeping."

هدف اصلی از تولید کتابخانه Enterprise Library پاسخگویی به اینگونه از نیازها در پروژه های نرم افزاری می باشد. با استفاده صحیح از این کتابخانه و ایجاد بستری مناسب در نرم افزار، می توانید با خیال راحت حواس خود را بر روی نیاز های عملیاتی پروژه متمرکز نمایید و این موضوع باعث به وجود آمدن نرم افزارهایی با کیفیت قابل قبول خواهد شد.

کتابخانه Enterprise Library از 9 بلاک (Application Block) تشکیل شده است که هر بلاک برای پاسخگویی به نیازهای بخصوصی به وجود آمده است. هر بلاک متشکل از کامپوننت هایی با قابلیت استفاده مجدد (Reusable) می باشد.

از این 9 بلاک، تعداد 7 بلاک به شکل کاربردی (Functional Blocks) در برنامه قابل استفاده هستند و 2 بلاک دیگر جزو کامپوننت هایی هستند که سایر 7 بلاک دیگر در درون خود از امکانات این دو بلاک به مقاصد گوناگون از جمله نمونه سازی اشیاء (Object Initialization) استفاده می کنند. اصطلاحا به این دو بلاک Wiring Blocks گفته می شود.

این بلاک ها با توجه به نیاز برنامه نویسان می توانند به شکل مستقل و یا وابسته به یکدیگر در کتار هم مورد استفاده واقع شوند.

در قسمت زیر این بلاک های را ملاحظه می کنید.

  •  Wiring Blocks
    •  Unity Dependency Injection
    •  Policy Injection Application Block
  • Functional Blocks
    •  Data Access Application Block
    •  Logging Application Block
    •  Exception Handling Application Block
    • Caching Application Block
    •  Validation Application Block
    •  Security Application Block
    •  Cryptography Application Block


معرفی Wiring Blocks:

همانطور که قبلا ذکر شد، این بلاک ها توسط سایر بلاک های کاربردی مورد استفاده قرار می گیرند. البته در مواردی می توانند مورد استفاده برنامه نویسان نیز قرار گیرند که در آینده بدان اشاره خواهیم نمود. در قسمت زیر معرفی کوتاهی از این دو بلاک را ملاحظه می کنید.

  1.  Unity Dependency Injection: این بلاک به منظور پیاده سازی مکانیزم تزریق وابستگی (Dependency Injection) مورد استفاده قرار می گیرد. مکانیزم تزریق وابستگی به منظور کمتر نمودن هر چه بیشتر وابستگی بین قسمت های مختلف نرم افزار و بیشتر نمودن پیوستگی آن ها مورد استفاده قرار می گیرد. این بلاک بسیار انعطاف پذیر بوده و روش های مختلف تزریق از جمله constructors و Methods و Properties را حمایت می کند. مبحث تزریق وابستگی (Dependency Injection) بسیار وسیع و عمیق می باشد که شرح آن خارج از اهداف این مقاله می باشد و علاقه مندان می توانند برای درک بیشتر این مفاهیم به جستجو در اینترنت بپردازند. به هر حال ما در آینده از امکانات این کتابخانه نیز استفاده خواهیم نمود. پس فعلا ذهن خود را درگیر آن نکنید.
  2. Policy Injection Application Block: این بلاک به منظور سازگار نمودن این نسخه از کتابخانه با نسخه های قبلی و در نتیجه امکان بروز رسانی برنامه هایی که از نسخه های قبلی این کتابخانه استفاده نموده اند، در این نسخه از کتابخانه قرار داد شده است و در حقیقت بیشتر توسط بلاک Unity Dependency Injection مورد استفاده قرار می گیرد.

معرفی بلاک های کاربردی (Functional Blocks):

اکنون به معرفی اجمالی 7 بلاک کاربردی می پردازیم. هدف از این سلسله مقالات، در حقیقت آموزش نحوه استفاده از این 7 بلاک می باشد و ما در مقالات آینده با رویکردی کاربردی و همراه با مثال به آموزش تمامی بلاک ها خواهیم پرداخت. ولی در این مقاله نگاهی کوتاه به عملکرد این 7 بلاک خواهیم داشت.

1. بلاک دیتا (Data Access Application Block):

این بلاک سال ها به عنوان پرکاربردترین و محبوب ترین بلاک از کتابخانه Enterprise Library مورد استفاده توسعه گران قرار گرفته است. با استفاده از این بلاک انجام اعمال متداول از قبیل Create, Delete, Update, Insert بر روی پایگاه داده به ساده ترین شکل قابل انجام می باشد.

موارد زیر جزو ویژگی های اصلی این کتابخانه می باشند:

  • با استفاده از این کتابخانه برنامه نویسان وابستگی کد خود را به نوع پایگاه داده به حداقل می رسانند و فقط با یک نوع پیاده سازی می توانند کد خود را برای پایگاه های داده مشهوری از قبیل Oracle, SQL Server, SQL Server CE و غیره مورد استفاده قرار داد.
  • یکی از بهترین ویژگی های این کتابخانه مدیریت اتصالات (باز و بسته نمودن و به اشتراک گذاشتن اتصالات) پایگاه داده می باشد که این موضوع به شکل داخلی در کتابخانه انجام شده و برنامه نویس را بی نیاز از نگرانی در این موارد می کند.
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 به طور پیشفرض به شکل مستقل قابل استفاده می باشند. ولی برای استفاده از برخی امکانات بلاک ها وابسته به بلاک های دیگر است.

به طور مثال اگر قرار باشد که اطلاعات بلاک لاگ در پایگاه داده ذخیره شود، ما نیاز داریم که از بلاک دیتا نیز استفاده کنیم. و یا اگر قرار باشد محتوای خطای به وجود آمده در برنامه که توسط بلاک استثناء اداره شده است را در محلی لاگ کنیم، نیاز داریم که از بلاک لاگ استفاده کنیم و اگر محل ذخیره سازی پایگاه داده باشد پس نیاز است از هر سه بلاک دیتا، لاگ و استثناء در کنار یکدیگر استفاده نمایید.

در جدول زیر وابستگی بلاک های مختلف به یکدیگر در شرایط مختلف را ملاحظه می کنید.

نام بلاک وابستگی ها شرایط
بلاک لاگ بلاک دیتا در صورتی که نیاز باش اطلاعات لاگ شده در پایگاه داده ذخیره شوند.
بلاک استثناء بلاک لاگ اگر خطای به وجود آمده نیاز به لاگ شدن داشته باشد
  بلاک دیتا اگر محل ذخیره سازی خطای به وجود آمده پایگاه داده باشد.
بلاک کش بلاک دیتا در صورتی که بخواهیم اطلاعات کش شده را در پایگاه داده ذخیره کنیم
  بلاک رمز نگاری اگر قرار باشد اطلاعات رمزنگاری شوند.
بلاک امنیت بلاک دیتا در صورتی که بخواهیم اطلاعات امنیتی کش شده را در پایگاه داده نگهداری کنیم.


نمایش گرافیکی جدول فوق را در قسمت زیر ملاحظه می کنید.



در قسمت بعدی از مقالات به معرفی پیش نیاز های نصب این کتابخانه و روش نصب آن خواهیم پرداخت.

منابع :     30sharp.com

Microsoft Enterprise Library 5.0