:: طراحی یك Data Provider
برای طراحی یك Data Provider برای ADO .NET یقینا باید از كلاسهای معروف داده پردازی یعنی : Connection, Command, DataReader, DataAdapter استفاده كرد . اسمبلی System.Data.dll حاوی فضاهای اسمی ( NameSpace ) مناسب برای طراحی جزئیات یك custom data provider میباشد . با ذكر مقدماتی در باب استفاده از Data Provider ها برای برنامه های ویندوز به نحوه عملكرد یك Data Provider خواهیم پرداخت و آنگاه با تشریح جزئیات و نقش موثر هر یك از كلاسهای دسترسی و پردازش داده دات نت یعنی Connection, Command, DataReader, DataAdapter به نحوه تركیب خصوصیات مورد نظر طراح Data Provider با امكانات موجود و چگونگی خصوصی سازی توابع عنصری این كلاسها برای دسترسی به منبع داده خواهیم پرداخت .

برای سالهای متمادی استفاده از ODBC به عنوان یك راه حل استاندارد دسترسی به داده بهترین گزینه گسترش دهندگان نرم افزارهای داده پرداز بود . ODBC با استفاده از روشی مقدماتی با عنوان one-to-one mapping درخواستهای مبتنی بر SQL نرم افزار را به روشهای داخلی دسترسی به داده بانك مورد نظر تبدیل میكرد و باز با رعایت استاندارد SQL پاسخ مورد نظر ( یا نشانه ای بر صحت یا بطلان روند مورد انتظار توسط دستور دهنده ) را به نرم افزار باز میگرداند . در واقع ODBC پلی ارتباطی به گذرگاه های ورود و خروج داده ( Gateway ) یك بانك داده و صادر كننده دستورات SQL بود . به عنوان مثال ODBC با اطلاع از فرمت مورد قبول ورودی و خروجی بانك اسكوئل سرور مایكروسافت و گذرگاهش با عنوان SQL Server tabular data stream كه به TDS شهرت دارد درخواستهای نرم افزار را به "مدیر بانك" تحویل داده و جوابهای مطلوب را باز میگرداند . همینطور در رابطه با گذرگاه استاندارد داده بانك اوراكل ( Oracle Call Interface ) كه به OCI شهرت دارد . عموما رابط های ODBC به عنوان یك پل یا مترجم بین SQL و بانك توسط همان شركت توسعه دهنده بانك گسترش داده می شدند .

ODBC تنها محدود به دسترسی به RDBMS ها نیست . ODBC با قرار گرفتن بر فراز رابطهای COM موجود برای برقراری ارتباط با یك منبع داده مدیریت نشده مثل Excel میتوانست از اطلاعات موجود در آنها نیز استفاده كند ! وظیفه اصلی استاندارد OLE DB تولید ساختاری یكتا "برای تبعیت" بود كه گسترش دهندگان منابع داده ای مثل Lotus یا Word با رعایت آن و تولید ابزارهای مبتنی بر COM امكان دسترسی به این منابع را به تولید كنندگان نرم افزارهای داده پرداز بدهند . ( قرار گرفتن بر فراز رابطهای COM حاصل ترجمه عبارت COM Wrapper است - اینپرایز )

اكنون دات نت در قالب اسمبلی System.Data.dll فضاهای نامی مفیدی را ارائه میكند كه هر كدام توسط كلاسهای حوزه خود كلیه وظایف فوق الذكر را در یك قالب معین مجتمع ( encapsulate ) میكنند و برنامه نویس بدون درگیری با مشكلات نصب و راه اندازی Driver های ODBC یا استفاده از رابط صحیح COM برای یك موجودیت حاوی داده ( Data-awar Object ، به نظر میرسد منظور محصول نرم افزاری خاصی است كه بگونه ای خاص نوعی از داده را نگه داری و مدیریت میكند و با ارائه رابط هائی خاص اجازه دسترسی و خودكار سازی مدیریت این داده ها را مجاز میداند - اینپرایز ) یك راه حل جامع ، یكتا ، سهل الوصول ، سهل الاستفاده ( easy to use رو چی باید ترجمه كنم ؟ - اینپرایز ) را به توسعه دهنده دات نت ارائه میكند . با استفاده از اسمبلی های جامع دات نت و كلاسهای ADO .NET دیگر درگیر نصب و پیكره بندی فیزیكی (!) مسیرهای عبور داده از منبع تا برنامه تان نیستید . همچنین دات نت همكنون ( با تقلیدی كثیف از بورلند - اینپرایز :-) ) مفهوم DataSet را ارائه كرده است كه مفهومی جدید (!) برای ظرف نگهداری و مدیریت داده های بدون اتصال به منبع میباشد . ( disconnected object model )


چرا باید یك فراهم كننده داده ( Data Provider ) طراحی كنم و دلائل استفاده از آن چیست ؟

در صورتیكه منبعی حاوی داده دارید كه بناست پایه طراحی سیستم های نرم افزاری گوناگونی قرار بگیرد برای خروج داده از منبع به سیستمهای مذكور چه فكری كرده اید ؟ آیا تصور میكنید باید سورس نرم افزار مدیریت داده و فرمت فایلهای ذخیره كننده داده را باید در تابلو اعلانات شركت نصب كنید تا تمام برنامه نویسان حال و احتمالا آینده شركت از جزئیات آن اطلاع كسب كرده و آنگاه نرم افزاری برای دسترسی به داده ها طراحی كنند ؟ آیا تصور كرده اید همه برنامه نویسان شما آنقدر دقیق هستند كه راهنمای 300 صفحه ای شما كه خوشبختانه بصورت PDF طراحی شده (!) را مطالعه كنند و بدون هیچ خطائی روش مورد علاقه شان را برای دستیابی به داده های شما "اختراع" كنند ؟ آیا فكر میكنید ... یقینا بعد از اندكی تفكر به این نتیجه خواهید رسید كه یك منبع داده بدون یك سلسله رابطهای استاندارد برای دسترسی به آن مفهومی ندارد ! رابط های یكتای شما باید همانطور كه به یك برنامه نویس ویندوز امكان میدهد بانك را جستجو ( Search ) كند و نتایج را استخراج كند باید امكانات مناسبی را برای طراحان وب سایت شركت در نظر بگیرد تا آنان نیز بدون در گیر شدن در جزئیات طراحی نرم افزار و ... فقط با استفاده از یك یا چند دستور و انتخاب كتابخانه مناسب برای روشهای دسترسی به بانك شما بتوانند صفحات وب ، گزارشهای گرافیكی و چارتهای سازمانی را براحتی استخراج كنند !

ورود به مبحث ، قبل از دات نت

برنامه نویسان محیط ویندوز ، خصوصا برنامه نویسان Visual C++® 6.0 با استفاده از كلاسهای نرم افزاری خاصی ( هم بصورت ATL و صرفا برای ویژوال سی و هم بصورت COM و با رعایت ATL بدون وابستگی به MFC - اینپرایز ) میتوانستند فراهم كننده های داده خودشان را با رعایت قالب OLE DB طراحی كنند و این رابط ها را در اختیار برنامه نویسانشان قرار دهند تا روند دستیابی به منبع داده سازمان استاندارد شود . آنها ساختار ( Struct ) ای با عنوان WIN32_FIND_DATA در اختیار داشتند كه حاوی اطلاعات دقیقی از محل فایلها و دایركتوری های نگهداری داده ، ساختار و فرمت فایلهای ذخیره كننده داده و ... بود و با استفاده از آن Data Provider های خودشان را طراحی میكردند كه به این روند معروف ، DirProv گفته میشد ! اكنون دات نت در قالب كلاسهای خود چیزی مشابه همین عمل را با عنوان جدید managed dirprov انجام میدهد .

كلیات طراحی یك دیتا پرووایدر

Connection : كلاس حیاتی این روند ، كلاس Connection است . ایجاد و مدیریت "برقراری رابطه" با منبع داده به عهده این كلاس است .

Command : كلاسی كه وظیه "ارسال و دریافت" دستورات " استاندارد" به منبع فراهم شده را بر عهده دارد . این دستورات میتوانند ( بنا به طراحی كلاس كه عموما این روزها مبتنی بر SQL است - اینپرایز ) INSERT, UPDATE, DELETE باشند یا حتی دستوراتی چون SELECT كه دارای پاسخ هستند ! ( پس شما فقط در كلاس command با اسكوئل سر و كار دارید ! - اینپرایز )

DataReader : این كلاس كلیه وظایف "پردازش خروجی " مرحله قبل را به عهده دارد .

DataAdapter : این كلاس " محفظه نگهداری داده" كلاس DataReader را با داده های استخراج شده از بانك پر میكند ! ( پس وظایف پردازشی مثل ادیت ، سرچ و ... به عهده دیتا ریدر و وظیفه گرفتن داده از خروجی و پر كردن دیتا ریدر با فرمت مناسب و احتمالا قرار دادن فیلتر های خاص مثل محدودیت ارسال شبكه ای و ... بر عهده دیتا ادپتر است ! - اینپرایز )


شرح وظایف هر كلاس و نحوه طراحی و پیاده سازی ( Implementing ) یك نسخه خصوصی برای نیل به هدف :

الف) Connection Class

این كلاس یك رابط ( Interface ) قابل پیاده سازی دارد به نام IDbConnection با شش تابع عنصری بری باز و بسته كردن یك "ارتباط" با داده ها یا تغییر منبع داده و امثالهم . پیاده سازی Trasaction ها در همین مرحله صورت میگیرد ! رابط IDbTransaction بعد از صدا زدن متد BeginTransaction بوجود می آید و وظایف یك تراكنش را به عهده میگیرد !

ConnectionString و ConnectionTimeout دو خصوصیت مهم این كلاس هستند كه میتوانند نقاط خوبی برای اضافه كردن جزئیات مورد نظر هنگام پیاده سازی مجدد كلاس باشند .


ب) Command Class

این كلاس یك رابط به نام IDbCommand معرفی میكند كه ابزار استفاده كننده از داده هاست برای ارسال دستورات . متد ها و خصوصیتهای نسبتا زیاد این رابط به شما امكنا مدیریت مناسب ارسال دستور و دریافت جواب را میدهد . بنا به اینكه منبع داده های شما یك RDBMS مثل اوراكل است یا یك منبع ساده داده مثل یك فایل پارادوكس از امكانات مناسبی برای مدیریت ارسال و دریافت برخوردارید . به عنوان مثال اگر داده های شما در فایلهای ساده ای در یك دایركتوری واحد ذخیره میشوند میتوانید در پیاده سازی خود از این كلاس خصوصیات مربوط به SQL را حذف كنید و صرفا نام دایركتوری حاوی داده را به عنوان CommandText از كاربر بخواهید !

ج) DataReader Class

این كلاس با ارائه دو رابط به نامهای IDataReader و IDataRecord به كاربر امكان مشاهده داده ها ، جستجو و حتی كسب اطلاع در مورد محتوای ظرف داده توسط metadata ی موجود برای هر resultset را میدهد .

د) DataAdapter Class

IDataAdapter و IDbDataAdapter توسط این كلاس ایجاد میشوند و وظیفه قالب بندی و انتقال داده های تولید شده توسط Command به DataReader را به عهده دارند .


هر كدام از گسترش دهندگان منبع داده ( مثل اوراكل یا مایكروسافت ) با عنایت به استاندارد ADO .NET فراهم كننده داده هایشان را تولید و توزیع نموده اند و برنامه نویس با استفاده از رابط آنها و استفاده از اسمبلی و كلاسهای مناسب به عنوان پایه نرم افزار میتواند از طریق دات نت به داده ها دست یابد و آسانترین روند توزیع نرم افزار پردازش داده را تجربه كند و طراحان منبع داده ها كسب دانشی كه چند سطری از آن را فوقا" مشاهده كردید میتوانند Data Provider های اختصاصی خود را برای سازگاری با دات نت گسترش دهند . نحوه استفاده از Data Provider ها و برقراری ارتباط با منبع داده مبحثی جداگانه و مفصل است كه توصیه میكنم قبل از پرداختن به آن مطالعات مقدماتی حول آن در MSDN داشته باشید . اطلاعات فوق هر چند كمكی به طراحی و پیاده سازی یك Data Provider نمیكند اما به شما به عنوان یك توسعه گر نرم افزار كمك میكند دید بهتری نسبت به آنچه اتفاق می افتد داشته باشید !
:: نوع مطلب : آموزشی ,

:: نوشته شده توسط : حسینی در دوشنبه 31 مرداد 1384 و ساعت 05:08 ق.ظ

:: ویرایش شده در - و ساعت -

لینك ثابت   نظرات ( )

:: مراحل اولیه ایجاد امنیت در شبکه

مراحل اولیه ایجاد امنیت  در شبکه
شبکه های کامپیوتری زیر ساخت لازم برای عرضه اطلاعات در یک سازمان را فراهم می نمایند . بموازات رشد و گسترش تکنولوژی اطلاعات، مقوله امنیت در شبکه های کامپیوتری ، بطور چشمگیری  مورد توجه قرار گرفته و همه روزه بر تعداد افرادی که علاقه مند به آشنائی با اصول سیستم های امنیتی در این زمینه می باشند ، افزوده می گردد . در این مقاله ، پیشنهاداتی در رابطه با ایجاد یک محیط ایمن در شبکه ، ارائه می گردد .
سیاست امنیتی
یک سیاست امنیتی، اعلامیه ای رسمی مشتمل بر مجموعه ای از قوانین است که می بایست توسط افرادیکه به یک تکنولوژی سازمان و یا سرمایه های اطلاعاتی دستیابی دارند،  رعایت و به آن پایبند باشند . بمنظور تحقق اهداف امنیتی ، می بایست سیاست های تدوین شده  در رابطه با تمام کاربران ، مدیران شبکه و مدیران عملیاتی سازمان، اعمال  گردد . اهداف مورد نظر عموما"  با تاکید بر گزینه های  اساسی زیر مشخص  می گردند .


" سرویس های عرضه شده  در مقابل امنیت ارائه شده   ، استفاده ساده در مقابل امنیت  و هزینه ایمن سازی در مقابل ریسک از دست دادن اطلاعات " 


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

  • امکان  پیاده سازی عملی آن بکمک روش های متعددی نظیر رویه های مدیریتی،  وجود داشته باشد .

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

  • محدوده مسئولیت  کاربران ، مدیران شبکه  و مدیران عملیاتی بصورت  شفاف مشخص گردد . 

  • پس از استقرار، قابلیت برقرای ارتباط با منابع متفاوت انسانی را دارا باشد . ( یک بار گفتن و همواره در گوش داشتن )

  • دارای انعطاف لازم بمنظور برخورد با  تغییرات درشبکه  باشد .(  سیاست های تدوین شده ،  نمونه ای بارز از مستندات زنده تلقی می گردنند . )

 سیستم های  عامل و برنامه های کاربردی : نسخه ها و بهنگام سازی
در صورت امکان، می بایست از آخرین نسخه  سیستم های عامل و برنامه های کاربردی بر روی تمامی کامپیوترهای  موجود در شبکه ( سرویس گیرنده ، سرویس دهنده ، سوئیچ، روتر، فایروال و سیستم های تشخیص مزاحمین ) استفاده شود . سیستم های عامل و برنامه های کاربردی می بایست بهنگام بوده و همواره از آخرین امکانات موجود بهنگام سازی ( patches , service pack , hotfixes) استفاده گردد . در این راستا می بایست حساسیت بیشتری نسبت به برنامه های آسیب پذیر که زمینه لازم برای متجاوزان اطلاعاتی را فراهم می نمایند ، وجود داشته باشد  .
برنامه های  : IIS ,OutLook , Internet Explorer , BIND و sendmail  بدلیل وجود نقاط آسیب پذیر می بایست مورد توجه جدی قرار گیرند . متجاوزان اطلاعاتی ،  بدفعات از نقاط آسیب پذیر برنامه های فوق برای خواسته های خود استفاده کرده اند .

شناخت شبکه موجود
بمنظور پیاده سازی و پشتیبانی سیستم امنیتی ، لازم است لیستی از تمام دستگاههای  سخت افزاری و برنامه های نصب شده ، تهیه گردد . آگاهی از برنامه هائی که بصورت پیش فرض نصب شده اند،  نیز دارای اهمیت خاص خود است ( مثلا" برنامه IIS بصورت پیش فرض توسط SMS و یا سرویس دهنده SQL در شبکه های مبتنی بر ویندوز نصب می گردد ) . فهرست برداری از سرویس هائی که بر روی شبکه در حا ل اچراء می باشند، زمینه را برای پیمایش و تشخیص مسائل مربوطه ،  هموار خواهد کرد .

سرویس دهندگان TCP/UDP و سرویس های موجود در شبکه
 تمامی سرویس دهندگان TCP/UDP در شبکه بهمراه سرویس های موجود بر روی هر کامپیوتر در شبکه ، می بایست شناسائی و مستند گردند . در صورت امکان، سرویس دهندگان و سرویس های غیر ضروری،  غیر فعال گردند . برای سرویس دهندگانی که وجود آنان ضروری تشخیص داده می شود،  دستیابی به آنان محدود به کامپیوترهائی گردد که به خدمات آنان نیازمند می باشند . امکانات عملیاتی را که بندرت از آنان استفاده و دارای  آسیب پذیری بیشتری می باشند ، غیر فعال تا زمینه بهره برداری آنان توسط متجاوزان اطلاعاتی  سلب گردد. توصیه می گردد ،  برنامه های نمونه (Sample)  تحت هیچ شرایطی بر روی سیستم های تولیدی ( سیستم هائی که محیط لازم برای تولید نرم افزار بر روی آنها ایجاد و با استفاده از آنان محصولات نرم افزاری تولید می گردند )  نصب نگردند .

رمزعبور
انتخاب رمزعبور ضعیف ،  همواره یکی از مسائل اصلی در رابطه با هر نوع  سیستم امنیتی است . کاربران،  می بایست متعهد و مجبور به تغییر رمز عبور خود بصورت ادواری گردند . تنظیم مشخصه های رمز عبور در سیستم های مبتنی بر ویندوز،  بکمک Account Policy صورت می پذیرد . مدیران شبکه،  می بایست برنامه های مربوط به تشخیص رمز عبور را تهیه و آنها را اجراء تا آسیب پذیری سیستم  در بوته نقد و آزمایش قرار گیرد .
برنامه های john the Ripper   ، LOphtcrack و Crack ،  نمونه هائی در این زمینه می باشند . به کاربرانی که رمز عبور آنان ضعیف تعریف شده است ، مراتب اعلام و در صورت تکرار  اخطار داده شود ( عملیات فوق،  می بایست بصورت متناوب انجام گیرد ) . با توجه به اینکه برنامه های تشخیص رمزعبور،زمان زیادی از پردازنده را بخود اختصاص خواهند  داد،  توصیه می گردد،  رمز عبورهای کد شده ( لیست SAM بانک اطلاعاتی در ویندوز ) را بر روی  سیستمی دیگر که در شبکه نمی باشد،  منتقل  تا زمینه بررسی رمزهای عبور ضعیف ،  فراهم گردد . با انجام عملیات فوق برروی یک کامپیوتر غیر شبکه ای ،  نتایج بدست آمده برای هیچکس قابل استفاده نخواهد بود( مگراینکه افراد بصورت فیزیکی به سیستم دستیابی پیدا نمایند) .
برای تعریف رمز عبور،  موارد زیر پیشنهاد می گردد :

  • حداقل طول رمز عبور، دوازده و یا بیشتر باشد . 

  • دررمز عبور از حروف کوچک، اعداد، کاراکترهای خاص و Underline استفاده شود .

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

  • رمز های عبور ، در فواصل زمانی مشخصی ( سی و یا نود روز)  بصورت ادواری تغییر داده شوند .

  • کاربرانی  که رمزهای عبور ساده و قابل حدسی را برای خود تعریف نموده اند، تشخیص و به آنها تذکر داده شود .( عملیات فوق بصورت متناوب و در فواصل زمانی  یک ماه انجام گردد).

عدم اجرای برنامه ها ئی  که  منابع  آنها تایید نشده است . 
در اغلب حالات ، برنامه های کامپیوتری در یک چارچوب امنیتی خاص مربوط به  کاربری که آنها را فعال می نماید ،  اجراء می گردند.دراین زمینه ممکن است،  هیچگونه توجه ای  به ماهیت منبع ارائه دهنده  برنامه  توسط کاربران انجام نگردد . وجود یک زیر ساخت PKI ) Public key infrastructure ) ، در این زمینه می تواند مفید باشد . در صورت عدم وجود زیرساخت امنیتی فوق ،می بایست مراقبت های لازم در رابطه با طرفندهای استفاده شده توسط برخی از متجاوران اطلاعاتی را انجام داد. مثلا" ممکن است برخی آسیب ها  در ظاهری کاملا" موجه از طریق یک پیام الکترونیکی جلوه نمایند . هرگز یک ضمیمه پیام الکترونیکی و یا برنامه ای را که از منبع ارسال کننده آن مطمئن نشده اید ، فعال و یا اجراء ننمائید . همواره از برنامه ای نظیر Outlook بمنظور دریافت پیام های الکترونیکی استفاده گردد . برنامه فوق در یک ناحیه محدوده شده اجراء و می بایست امکان اجرای  تمام اسکریپت ها و محتویات فعال  برای ناحیه فوق ، غیر فعال گردد .

ایجاد محدودیت در برخی از  ضمائم پست الکترونیکی
 ضرورت توزیع و عرضه تعداد زیادی از انواع فایل های ضمیمه ، بصورت روزمره در یک سازمان وجود ندارد .بمنظور پیشگیری از اجرای کدهای مخرب ، پیشنهاد می گردد این نوع فایل ها ،غیر فعال گردند . سازمان هائی که از Outlook استفاده می نمایند،  می توانند با استفاده از نسخه 2002 اقدام به بلاک نمودن آنها نمایند . ( برای سایر نسخه های Outlook می توان از Patch  امنیتی مربوطه استفاده کرد ) .

این مطلب از طریق سایت شرکت سخاروش در اختیار شما گذاشته شده است .

:: نوع مطلب : شبکه های محلی ,

:: نوشته شده توسط : حسینی در دوشنبه 31 مرداد 1384 و ساعت 04:08 ق.ظ

:: ویرایش شده در سه شنبه 1 شهریور 1384 و ساعت 03:08 ق.ظ

لینك ثابت   نظرات ( )

:: مطالب پیشین
ساخت وبلاگ در میهن بلاگ

شبکه اجتماعی فارسی کلوب | اخبار کامپیوتر، فناوری اطلاعات و سلامتی مجله علم و فن | ساخت وبلاگ صوتی صدالاگ | سوال و جواب و پاسخ | رسانه فروردین، تبلیغات اینترنتی، رپرتاژ، بنر، سئو