يكي از موجودات جديدي كه در دنياي برنامهنويسي شيگراي داتنت درحالپرورش است، زبان جالبي به نام LINQاست. كلمه LINQ سرنام LanguageIntegrated Query است. از هنگامي كه چارچوب داتنت 2 بهطور رسمي معرفيشد، چند ماهي ميگذرد. احتمالاً برخي از شما كه با پلتفرم برنامهنويسيمايكروسافت كار ميكنيد، به تدريج با نسخه دوم اين فناوري آشنا شدهايد وشايد قصد داريد كمكم در پروژههاي جديد از اين چارچوب جديد برنامهنويسياستفاده كنيد.
اما در همان حال كه شما آرام آرام با داتنت2 خوميكنيد، خبر ميرسد كه پروژه داتنت 3 مدتها است شروع شده و اكنون بهتدريج پيشنمايشهايي از آن روي پرده ميرود.
جالب ديدم در اين شماره، به دنياي داتنت3 سرك بكشيم و ببينيم آنجا چه خبر است.
اين كار دو فايده دارد:
نخست اينكه، درمورد آخرين تحولات دنياي برنامهنويسي مايكروسافتي چيزهايي بدانيم.
ديگراينكه، شايد تشويق شويد تا دير نشده خود را به نسخه دوم دات نت مجهزكنيد. چون ممكن است تا يكي دو سال ديگر همين نسخه نيز قديمي شود!

مثلثراكس يكي از موجودات جديدي كه در دنياي برنامهنويسي شيگراي داتنتدرحال پرورش است، زبان جالبي به نام LINQاست. كلمه LINQ سرنام LanguageIntegrated Query است.
منطق زبان لينك از روي زبان SQL گرفته شدهاست و اين زبان در پي پاسخدادن به مسئله پيچيدهاي در دنياي برنامهنويسيپيشرفته است كه مثلث راكس (ROX Triangle) ناميده ميشود. پس اجازه بدهيدببينم مثلث راكس چيست.

اين روزها اكثر برنامهنويساني كه بازبانهاي شيگرايي مثل سي شارپ يا جاوا كار ميكنند، از دو ابزار مهم ديگرنيز براي ساختن برنامههاي خود استفاده ميكنند:
يكي از اين ابزارهاديتابيس يا همان بانكاطلاعاتي، و ديگريXML است. البته XML موجود جديديدر بافت نرمافزارها است، ولي اكنون معلوم شده كه با حضور اينترنت دردنياي كامپيوتر، استفاده از XML تقريبا قابل چشم پوشي نيست.
مشكلي كهبرنامهنويسان با آن درگيرند اين است كه هر يك از اين سه ابزار از منطق ومدل دادهاي (Data Model) متفاوتي پيروي ميكنند. مدل دادهها در بانكهاياطلاعاتي معمولاً زبان SQL است. در حالي كه هر زبان برنامهنويسي مدلدادهاي خاصي دارد.

مثلاً پلتفرم داتنت از فناوري ADO.NETاستفاده ميكند. واضح است كه مدل دادهها در ADO.NET و SQL تفاوتهايزيادي با هم دارند. مدل دادهها در فرمت XML هم به گونه ديگري است. درXML بايد از زبان XQuery استفاده كنيد.

برنامه نويس در حين كارروزمره خود مرتباً نياز دارد دادههاي خود را از يك مدل به مدل ديگر منتقلكند. مثلاً در يك برنامه مديريت فروش محصولات، گاهي برنامهنويس لازمميداند دادههاي مشتريان را از بانك اطلاعاتي (مثلا ًSQL ServerياMySQL يا ORACLE) بخواند و سپس به فرمت XML تبديل كند تا بتواند آن رااز مجراي اينترنت (مثلاً از طريق وبسرويسها) عبور دهد. در اين صورتناگزير است همزمان دادهها را ابتدا با منطق SQL بخواند، سپس با منطقBusiness Tier (مثل ADO.NET) پردازش كند و سپس با منطق XQuery تبديل كند.اريك مير از متخصصانSQL Server در شركت مايكروسافت اين سه گانگي را مثلثROX ناميده است كه سرنام عبارات Relations in data tier ،Objects inbusiness tier وXML in presentation tier است.

قطعه كد 1 LINQ؛زبان دوست داشتني كارشناسان طراحي زبانهاي برنامهنويسي در شركتمايكروسافت مدتي است براي پيدا كردن يك راهحل براي اين مسئله، روي زبانلينك كار ميكنند.
اين زبان البته يك زبان جديد برنامهنويسي در كنارسيشارپ و ويژوال بيسيك نيست، بلكه يك syntax است كه درون كدهاي برنامه بهكار گرفته ميشود. (قطعه كد 1) اين قطعه كد به قدري گويا است كه حتي كسيكه برنامهنويس نيست نيز متوجه معني آن ميشود.
تاكنون بهكارگيريچنين منطقي در زبانهاي برنامهنويسي شيگرا سابقه نداشته است. اين syntaxخيلي به منطق و زبان انسان شبيه است. به همين دليل استفاده از آن باعثساده شدن زبان برنامهنويسي ميشود.
تيم توسعه پلتفرم داتنت درمايكروسافت برهميناساس در حال طراحي و توسعه دو API براي زبان LINQ است.يكي از اينها مجموعه DLINQ است كه براي پياده سازي زبان لينك رويADO.NET به كار ميرود. ديگري XLINQ ناميده شده كه براي امكانپذيرساختن استفاده از منطق لينك روي XML به كار ميرود.
كوشش بر اين استكه syntax برنامهنويسي در هر دو مورد مشابه زبان SQL باشد. به گونهاي كهبرنامهنويسي بدون توجه به اينكه از كدام API زبان لينك استفاده ميكند،به يك شيوه بتواند با دادهها كاركند.اين APIها قرار است در چارچوب داتنت3 (نسخه نهم زبان ويژوال بيسيك و نسخه سوم زبان سي شارپ) بهكار گرفتهشوند.
يكي از اهدافي كه اين تيم از بهكارگيري منطق لينك در زبانهايبرنامه نويسي داتنت دنبال ميكند، امكانپذير ساختن اشكال زدايي ازعبارات Query است. اگر برنامهنويس باشيد، حتماً ميدانيد كه تمامقسمتهاي يك كد منهاي عبارات Query كه به صورت رشتههاي متني ميآيند،قابل اشكالزدايي يا Debugging هستند.
قرارگرفتن عبارات Query بهصورت مقادير متني داخل سورس كد، عملاً اشكالزدايي از آنها را دشوارميكند. با بهكارگيري منطق زبان لينك اين مشكل به مقدار زيادي حل ميشود؛زيرا Queryها بهجاي اينكه به صورت مقادير متني نوشته شوند، بخشي از سورسكد هستند. به همين دليل اين تكنيك Language Integrated Query نامگذاري شدهاست.
تيم توسعه دات نت حتي به اين موضوع فكر كرده است كه استفاده ازابزار Intellisense در ويرايشگر كد ويژوال استوديو بتواند روي زبان لينكمانور دهد. اين چيزي است كه عملاً روي API متعلق به بخشهاي DLINQ وXLINQ اتفاق ميافتد. در نتيجه برنامهنويس ميتواند كد LINQ را كامپايلنمايد و در صورت بروز خطا آن را اشكالزدايي كند.استفاده از XLINQبرنامهنويسان را از بهكارگيري منطق XQuery كه گاهي گيجكننده است، معافميكند؛ ضمن اينكه براي كاركردن با دادهها در ADO.NET و لايه BusinessTier ميتوانيد از همان منطق و رهيافت زبان SQL در بانكاطلاعات استفادهكنيد.

نويسنده : سید مصطفی طباطبایی