آشنایی با فناوری LINQ و جایگاه آن در دات نت

linq-logo
[wpseo_breadcrumb]

نرم افزار یکی از ارکان مهم فناوری اطلاعات و ارتباطات در عصر حاضر است . گرچه نرم افزار در گذشته نیز همواره حائز اهمیت بوده است ، ولی در سالیان اخیر به دلیل گسترش اینترنت و ظهور نسل جدیدی از برنامه های کامپیوتری موسوم به برنامه های وب ، نگاه به نرم افزار و انتظار از آن در جهت تامین طیف گسترده ای از خواسته ها تغییر و رشد چشمگیری یافته است . به همین دلیل است که در دنیای نرم افزار هر روز تحولات مهمی اتفاق می افتد و فناوری های جدیدی قدم در این عرصه می گذارند .
ظهور فناوری LINQ ( برگرفته شده از Language-INtegrated Query ) تلاشی است در این راستا که با هدف تحول در نحوه دستیابی به منابع داده ( صرفنظر از نوع منبع داده ) ، مطرح شده است .
پس از مطرح شدن هر گونه فناوری در عرصه نرم افزار ، طراحان و پیاده کنندگان با سه پرسش اساسی مواجه می گردند : این فناوری چیست ؟ چه کار می کند ؟ و چرا ما به آن نیاز داریم ؟ در این مقاله و سایر مقالاتی که در ادامه بر روی سایت منتشر خواهد شد ، سعی خواهیم کرد به سه پرسش فوق در ارتباط با فناوری LINQ پاسخ دهیم .

مقدمه
کد و داده دو عنصر اساسی در نرم افزار می باشند که هر یک دارای جایگاه تعریف شده مختص به خود است . یکی از فعالیت های مهم در زمان پیاده سازی نرم افزار ، نوشتن کد مورد نیاز جهت دستیابی به داده است . برای نوشتن کد ، پیاده کنندگان می توانند از زبان های برنامه نویسی مختلفی استفاده کنند . انتخاب زبان برنامه نویسی به عوامل متعددی نظیر نوع رفتار برنامه ، پیش زمینه و دانش پیاده کنندگان ، مهارت های تیم پیاده کننده ، نوع سیستم عامل و سیاست های سازمان بستگی دارد . صرفنظر از این که پیاده کنندگان چه زبانی را برای نوشتن کد انتخاب می نمایند ، در زمان پیاده سازی نرم افزار به دفعات مجبور خواهیم بود که با داده سرو کار داشته باشیم . داده می تواند بر روی دیسک ، جداولی در بانک اطلاعاتی و یا اسناد XML ذخیره شده باشد . در برخی موارد لازم است که با تمامی نوع های اشاره شده در یک برنامه سرو کار داشته باشیم . فراموش نکنیم که مدیریت داده برای هر پروژه نرم افزاری یک باید است .
پیاده کنندگان نرم افزار در زمان نوشتن کد و تولید امکانات مورد نیاز در هر یک از لایه های متفاوت ( با توجه به نوع معماری نرم افزار ) ، همواره این پرسش را با خود مطرح می نمایند که محیط پیاده سازی و یا فریمورک هائی نظیر دات نت چه امکاناتی را در اختیار آنها خصوصا” در زمان کار با داده قرار می دهند . به عبارت دیگر ، یک سیستم عامل چگونه می تواند نیاز پیاده کنندگان نرم افزار را پوشش دهد و چه امکانات و پتانسیل هائی را در اختیار علاقه مندان به طراحی و پیاده سازی نرم افزار قرار می دهد .
دات نت به عنوان یکی از فریمورک های پیاده سازی نرم افزار در سالیان اخیر ، امکانات متعددی را جهت کار با داده در اختیار پیاده کنندگان نرم افزار قرار می دهد . LINQ ، تلاشی است جهت یکپارچگی عمیق تر و بیش تر بین زبان های برنامه نویسی و داده . در واقع LINQ مشتمل بر مجموعه ای از عملگرهای query استاندارد است که معماری لازم جهت حرکت ، فیلترینگ و اجرای عملیات بر روی تقریبا” هر نوع منبع داده نظیر XML ، بانک های اطلاعاتی رابطه ای و اشیاء درون حافظه را فراهم می نماید .
قبل از هر چیز اجازه دهید ببینیم LINQ چیست ؟

LINQ چیست ؟
با این که فناوری LINQ در پائیز سال ۲۰۰۵ مطرح گردید ولی فرآیند پیاده سازی آن از سال ۲۰۰۳ آغاز شده بود . هدف از ابداع فناوری فوق، ارائه تسهیلات لازم برای پیاده کنندگان جهت کار با داده در بانک های اطلاعاتی SQL و XML عنوان شده است. در واقع ، وجود یک حلقه گمشده بین داده رابطه ای ( بانک های اطلاعاتی ) ، اسناد XML با زبان های برنامه نویسی ، ضرورت ابداع فناوری فوق را توجیه کرده بود . پیاده کنندگان مجبور بودند برای کار با هر یک از منابع داده ، از روش های مختلفی استفاده نمایند . LINQ را می توان به منزله حلقه ای گمشده بین دنیای داده و زبان های برنامه نویسی همه منظوره تصور کرد . با استفاده از LINQ امکان دستیابی به داده صرفنظر از نوع داده ، با روشی مشابه و یکسان فراهم می گردد .
پیاده کنندگان نرم افزار در زمان نوشتن برنامه های خود معمولا” از دو زبان مختلف جهت رسیدن به یک هدف مشترک استفاده می نمایند . ما برای نوشتن کدها از یک زبان برنامه نویسی نظیر VB.NET و یا #C و برای گفتگو با سیستم بانک اطلاعاتی از یک زبان دیگر نظیر SQL استفاده می کنیم .

[message_box title=”” type=”info” close=”yes|no”]برای سفارش شام خود از یک زبان و برای سفارش چای از زبان دیگر ![/message_box]

این موضوع می تواند چالش های متعددی را برای پیاده کنندگان نرم افزار به دنبال داشته باشد :

در مواردی که فریمورک دات نت را به عنوان پلت فرم انتخاب کرده باشیم ، دات نت قادر به درک کدهای 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 و بررسی نوع ها در زمان ترجمه نیز وجود خواهد داشت .
این شکل  نحوه عملکرد LINQ را نشان می دهد .

LINQ - آشنایی با فناوری LINQ و جايگاه آن در دات نت

[message_box title=”خلاصه” type=”success” close=”yes|no”]

LINQ یک فناوری قدرتمند در زمان کار با داده است که دستاوردهای متعددی را برای پیاده کنندگان به ارمغان آورده است :

روشی ساده جهت نوشتن query
تسریع در پیاده سازی نرم افزار با توجه به حذف خطاهای زمان اجراء
امکان استفاده از امکاناتی نظیر اشکال زدائی و IntelliSence در زمان پیاده سازی
حذف خلاء موجود بین داده رابطه ای و پیاده سازی شی گراء
استفاده از یک گرامر یکسان جهت نوشتن query صرفنظر از نوع منبع داده
افزایش بازدهی و راندمان برنامه نویسی ، چراکه برنامه نویسان از یک رویکرد یکسان برای نوشتن query و بهنگام سازی داده از طریق زبان برنامه نویسی استفاده خواهند کرد . 
LINQ از دو بخش که مکمل یکدیگر می باشند تشکیل شده است : مجموعه ای از ابزار ها جهت کار با اشیاء ، اسناد XML ، بانک های اطلاعاتی رابطه ای و سایر نوع های داده و مجموعه ای از ضمایم برای زبان های برنامه نویسی نظیر VB و #C .

[/message_box]

 

khodrang kish demo - آشنایی با فناوری LINQ و جايگاه آن در دات نت