LINQ : تحولی بزرگ در کار با داده ( بخش اول )
- بهدست: Admingfars
- دستهبندی: عمومی خبری
- Tags: تحولی بزرگ در کار با داده
: تحولی بزرگ در کار با داده ( بخش اول )
نرم افزار یکی از ارکان مهم فناوری اطلاعات و ارتباطات در عصر حاضر است . گرچه نرم افزار در گذشته نیز همواره حائز اهمیت بوده است ، ولی در سالیان اخیر به دلیل گسترش اینترنت و ظهور نسل جدیدی از برنامه های کامپیوتری موسوم به برنامه های وب ، نگاه به نرم افزار و انتظار از آن در جهت تامین طیف گسترده ای از خواسته ها تغییر و رشد چشمگیری یافته است . به همین دلیل است که در دنیای نرم افزار هر روز تحولات مهمی اتفاق می افتد و فناوری های جدیدی قدم در این عرصه می گذارند .
ظهور فناوری LINQ ( برگرفته شده از Language-INtegrated Query ) تلاشی است در این راستا که با هدف تحول در نحوه دستیابی به منابع داده ( صرفنظر از نوع منبع داده ) ، مطرح شده است .
پس از مطرح شدن هر گونه فناوری در عرصه نرم افزار ، طراحان و پیاده کنندگان با سه پرسش اساسی مواجه می گردند : این فناوری چیست ؟ چه کار می کند ؟ و چرا ما به آن نیاز داریم ؟ در این مقاله و سایر مقالاتی که در ادامه بر روی سایت منتشر خواهد شد ، سعی خواهیم کرد به سه پرسش فوق در ارتباط با فناوری LINQ پاسخ دهیم .
مقدمه
کد و داده دو عنصر اساسی در نرم افزار می باشند که هر یک دارای جایگاه تعریف شده مختص به خود است . یکی از فعالیت های مهم در زمان پیاده سازی نرم افزار ، نوشتن کد مورد نیاز جهت دستیابی به داده است . برای نوشتن کد ، پیاده کنندگان می توانند از زبان های برنامه نویسی مختلفی استفاده کنند . انتخاب زبان برنامه نویسی به عوامل متعددی نظیر نوع رفتار برنامه ، پیش زمینه و دانش پیاده کنندگان ، مهارت های تیم پیاده کننده ، نوع سیستم عامل و سیاست های سازمان بستگی دارد . صرفنظر از این که پیاده کنندگان چه زبانی را برای نوشتن کد انتخاب می نمایند ، در زمان پیاده سازی نرم افزار به دفعات مجبور خواهیم بود که با داده سرو کار داشته باشیم . داده می تواند بر روی دیسک ، جداولی در بانک اطلاعاتی و یا اسناد XML ذخیره شده باشد . در برخی موارد لازم است که با تمامی نوع های اشاره شده در یک برنامه سرو کار داشته باشیم . فراموش نکنیم که مدیریت داده برای هر پروژه نرم افزاری یک باید است .
پیاده کنندگان نرم افزار در زمان نوشتن کد و تولید امکانات مورد نیاز در هر یک از لایه های متفاوت ( با توجه به نوع معماری نرم افزار ) ، همواره این پرسش را با خود مطرح می نمایند که محیط پیاده سازی و یا فریمورک هائی نظیر دات نت چه امکاناتی را در اختیار آنها خصوصا” در زمان کار با داده قرار می دهند . به عبارت دیگر ، یک سیستم عامل چگونه می تواند نیاز پیاده کنندگان نرم افزار را پوشش دهد و چه امکانات و پتانسیل هائی را در اختیار علاقه مندان به طراحی و پیاده سازی نرم افزار قرار می دهد .
دات نت به عنوان یکی از فریمورک های پیاده سازی نرم افزار در سالیان اخیر ، امکانات متعددی را جهت کار با داده در اختیار پیاده کنندگان نرم افزار قرار می دهد . LINQ ، تلاشی است جهت یکپارچگی عمیق تر و بیش تر بین زبان های برنامه نویسی و داده . در واقع LINQ مشتمل بر مجموعه ای از عملگرهای query استاندارد است که معماری لازم جهت حرکت ، فیلترینگ و اجرای عملیات بر روی تقریبا” هر نوع منبع داده نظیر XML ، بانک های اطلاعاتی رابطه ای و اشیاء درون حافظه را فراهم می نماید .
قبل از هر چیز اجازه دهید ببینیم LINQ چیست ؟
LINQ چیست ؟
با این که فناوری LINQ در پائیز سال 2005 مطرح گردید ولی فرآیند پیاده سازی آن از سال 2003 آغاز شده بود . هدف از ابداع فناوری فوق، ارائه تسهیلات لازم برای پیاده کنندگان جهت کار با داده در بانک های اطلاعاتی SQL و XML عنوان شده است. در واقع ، وجود یک حلقه گمشده بین داده رابطه ای ( بانک های اطلاعاتی ) ، اسناد XML با زبان های برنامه نویسی ، ضرورت ابداع فناوری فوق را توجیه کرده بود . پیاده کنندگان مجبور بودند برای کار با هر یک از منابع داده ، از روش های مختلفی استفاده نمایند . LINQ را می توان به منزله حلقه ای گمشده بین دنیای داده و زبان های برنامه نویسی همه منظوره تصور کرد . با استفاده از LINQ امکان دستیابی به داده صرفنظر از نوع داده ، با روشی مشابه و یکسان فراهم می گردد .
پیاده کنندگان نرم افزار در زمان نوشتن برنامه های خود معمولا” از دو زبان مختلف جهت رسیدن به یک هدف مشترک استفاده می نمایند . ما برای نوشتن کدها از یک زبان برنامه نویسی نظیر VB.NET و یا #C و برای گفتگو با سیستم بانک اطلاعاتی از یک زبان دیگر نظیر SQL استفاده می کنیم .
|
این موضوع می تواند چالش های متعددی را برای پیاده کنندگان نرم افزار به دنبال داشته باشد :
-
در مواردی که فریمورک دات نت را به عنوان پلت فرم انتخاب کرده باشیم ، دات نت قادر به درک کدهای SQL نخواهد بود.
-
در مواردی که از زبان های برنامه نویسی حمایت شده در دات نت جهت نوشتن کد در محیط ویژوال استودیو استفاده می کنیم ، همواره یک ابزار قدرتمند در کنار ما است تا در صورت اشتباه در گرامر دستورات توصیه های لازم را ارائه نماید ( IntelliSense ) .از ویژگی فوق نمی توان در ارتباط با SQL استفاده کرد .
-
امکان بررسی نوع ها در زمان ترجمه وجود ندارد . این بدان معنی است که پیاده کنندگان تا زمانی که برنامه اجراء نگردد ، نمی توانند مشکلات احتمالی را مشاهده و قبل از زمان اجراء با آنها برخورد نمایند .
-
شرکت مایکروسافت امکانات متعددی را در فریمورک دات نت جهت کار با اسناد XML ارائه کرده است . ارائه System.Xml ، System.Xml.XPath و System.Xml.Schema نمونه هائی در این زمینه می باشند . پیاده کنندگان نرم افزار در زمان کار با اسناد XML مجبور بودند که از فناوری های متعددی نظیر DOM ( برگرفته شده از Document Object Mode ) و XQuery استفاده نمایند . همین موضوع باعث شده بود که کار با اسناد XML نظیر خواندن و یا نوشتن داده در آنها برای بسیاری از پیاده کنندگان مشکل باشد.
شرکت مایکروسافت برای حل مشکلات فوق ، بررسی دو راهکار را در دستور کار خود قرار داد :
-
ایجاد پتانسیل های مورد نیاز مختص XML و یا داده رابطه ای در هر یک از زبان های برنامه نویسی و زمان اجراء . راهکار فوق نه تنها مشکل اصلی را حل نمی کرد بلکه در مواردی مشکلات را خصوصا” در زمینه نگهداری افزایش می داد .
-
اضافه کردن قابلیت های همه منظوره نوشتن query در فریمورک دات نت . به عبارت دیگر یک فریمورک همه منظوره با قابلیت نوشتن query درون فریمورک دات نت که زبان های VB.NET و #C بتوانند به سادگی از مز ایای آن استفاده نمایند .
خوشبختانه ، شرکت مایکروسافت گزینه دوم را انتخاب نمود . ایجاد یک زیرساخت جهت نوشتن query در بین اشیاء ، اسناد XML ، داده رابطه ای و …
هم اینک پیاده کنندگان می توانند از مزایای یک الگوی تعریفی در هر یک از زبان های دات نت جهت کار با داده استفاده نمایند . ارائه مجموعه اپراتورهای استاندارد جهت نوشتن query یکی از دستاوردهای مهم LINQ محسوب می گردد . بدین ترتیب ، پیاده کنندگان می توانند با بکارگیری یک مجموعه یکسان از اپراتورهای نوشتن query در هر یک از زبان های برنامه نویسی حمایت شده در دات نت ، از داده ذخیره شده در منابع داده مختلف صرفنظر از نوع منبع داده استفاده نمایند . همچنین ، امکان استفاده از پتانسیل هائی نظیر IntelliSense و بررسی نوع ها در زمان ترجمه نیز وجود خواهد داشت .
شکل 1 نحوه عملکرد LINQ را نشان می دهد .
شکل 1 : عملکرد فناوری LINQ
مثال
برای آشنایی اولیه با قابلیت های LINQ ، بد نیست بدون این که بخواهیم وارد جزئیات شویم یک مثال کاربردی را با یکدیگر دنبال نمائیم .
در این مثال با استفاده از LINQ و با یک روش مشابه به منابع داده مختلفی متصل شده و پس از بازیابی داده ، آنها را در یک ListBox جداگانه نمایش می دهیم .
منابع داده عبارتند از :
- فولدرهای موجود در یک درایو
- پردازه های در حال اجراء در ویندور
- یک بانک اطلاعاتی رابطه ای SQL
- عناصر موجود در یک آرایه
- یک فایل XML
- یک فایل متن
خلاصه
LINQ یک فناوری قدرتمند در زمان کار با داده است که دستاوردهای متعددی را برای پیاده کنندگان به ارمغان آورده است :
- روشی ساده جهت نوشتن query
- تسریع در پیاده سازی نرم افزار با توجه به حذف خطاهای زمان اجراء
- امکان استفاده از امکاناتی نظیر اشکال زدائی و IntelliSence در زمان پیاده سازی
- حذف خلاء موجود بین داده رابطه ای و پیاده سازی شی گراء
- استفاده از یک گرامر یکسان جهت نوشتن query صرفنظر از نوع منبع داده
- افزایش بازدهی و راندمان برنامه نویسی ، چراکه برنامه نویسان از یک رویکرد یکسان برای نوشتن query و بهنگام سازی داده از طریق زبان برنامه نویسی استفاده خواهند کرد .
LINQ از دو بخش که مکمل یکدیگر می باشند تشکیل شده است : مجموعه ای از ابزار ها جهت کار با اشیاء ، اسناد XML ، بانک های اطلاعاتی رابطه ای و سایر نوع های داده و مجموعه ای از ضمایم برای زبان های برنامه نویسی نظیر VB و #C . در بخش دوم به بررسی هر یک از موارد فوق خواهیم پرداخت .
بدون دیدگاه