مروری بر LINQ در
C# 2008
امروزه دیگر نمیتوان منکر کاربرد
نرمافزارهای کامپیوتری در زندگی روزمره بشر گردید. همچنین در اکثر
برنامههایی که امروزه بر روی کامپیوترها به کار میروند، استفاده از
بانکهای اطلاعاتی انکارناپذیر است. به همین دلیل از اوایل دهه 80
میلادی تلاشهای فراوانی برای بهبود نرمافزاریهای بانک اطلاعاتی
گردید و منجر به ظهور مدلهای جدید و متعددی برای ایجاد پایگاههای
داده گردید. یکی از این مدلها که هم اکنون در بسیاری از نرمافزارها
پیاده سازی شده است مدل RDBMS میباشد. به عنوان نمونه میتوان SQL
Server و همچنین Oracle را نام برد. در حال حاضر، برای ایجاد و توسعه
برنامههای مبتنی بر بانکهای اطلاعاتی، این دو نرمافزار بیشتر از
مدلهای مشابه مورد استفاده قرار میگیرند.
پس از انتخاب نرمافزار ارائه دهنده خدمات بانک
اطلاعاتی، نوبت به انتخاب زبان برنامه نویسی میرسد. در اینجا نیز ذکر این
مورد کافیست که اگر نگاهی که گذشته داشته باشیم متوجه میشویم که در بیست
سال گذشته زبانهایِ با قابلیت برنامه نویسی شئگرا به عنوان اولین و
بهترین زبان برای توسعه نرمافزارها در نظر گرفته میشوند. در میان
زبانهای با قابلیت برنامه نویسی شئگرا زبان
#C و Java از امکانات بهتری برخوردارند.
با نگاهی به دو نرمافزار انتخاب شده در بالا
متوجه به تضادی میشویم که از گذشته تا کنون گریبانگیر برنامهنویسان
متعددی بوده است. با توجه به اینکه SQL Server یک بانک اطلاعاتی رابطهای
است پس نمیتوان با آن به صورت شئگرا در برنامهها ارتباط برقرار کرد.
البته مایکروسافت برای رفع این مشکل تا قبل از سال 2005 فعالیتهایی نظیر
ارائه DataSet و ADO.NET انجام داده است. اما با این حال هنوز نمیتوان به
صورت کاملاً شئگرا با این مدل از بانکهای اطلاعاتی ارتباط برقرار کرد.
در این میان شرکتهای مطرح نرمافزاری دنیا
مانند Mircrosoft نیز بیکار نماندهاند و بر روی پروژههایی برای رفع مشکل
یاد شده در بالا فعالیت نمودهاند. مهمترین و بهترین پروژهای که در این
مورد بر روی آن کار شده است پروژه LINQ میباشد. با استفاده از این
تکنولوژی دیگر نیاز به کار بردن روشهای متفاوت برای بازیابی اطلاعات از
منابع دادهای گوناگون مانند بانکهای اطلاعاتی رابطهای، اسناد XML و حتی
اشیاء درون حافظه نیست. در این روش از یک گرامر مشابه برای بازیابی اطلاعات
از هر نوع منبع دادهای استفاده میشود؛ و البته گرامری که این روش از آن
استفاده میکند به صورت شئگرا میباشد.
در ادامه نگاهی کلی بر فرم کلی این روش خواهیم
انداخت و سپس به توضیح و بررسی قسمتهای مخلتف پروژه میپردازیم.