زیرساخت زبان مشترک

زیرساخت زبان مشترک  با کوته‌نوشت CLI یک مشخصات آزاد (استاندارد فنی) است که توسط مایکروسافت ایجاد و توسط سازمان‌های ایزو و ای‌سی‌ام‌ای استانداردسازی شده‌است. این استاندارد توصیف‌کننده «کد قابل اجرا» و نیز «محیط اجرایی» است که به چندین زبان سطح بالا اجازه استفاده در بن‌سازه‌های رایانه‌ای مختلف (بدون نیاز به بازنویسی برای معماری خاص) می‌دهد. این ویژگی یعنی CLI مستقل از سیستم عامل است. چارچوب دات‌نت، دات‌نت، و مونو پیاده‌سازی‌های CLI هستند.

دید کلی 

از بین سایر موارد، مشخصات CLI این چهار جنبه را توصیف می‌کند:

سامانه نوع مشترک (Common Type System - CTS)

یک مجموعه از انواع داده و عملیات است که توسط تمام زبان‌های برنامه‌نویسی سازگار با CTS، اشتراک گذاری شده‌است.

فراداده (Metadata)

اطلاعات دربارهٔ ساختار برنامه، مستقل از زبان برنامه نویسی است، از این رو CLI قابل ارجاع‌شدن بین زبان‌ها و ابزار است، این موضوع باعث می‌شود تا کارکردن با کدی که به زبانی نوشته شده که توسعه‌دهنده از آن استفاده نمی‌کند، ساده گردد.

مشخصات زبان مشترک (Common Language Specification - CLS)

CLI باید با مجموعه قواعد مبنایی که هر زبانی آن را هدف قرار داده‌است، همنوا و منطبق گردد، زیرا آن زبان باید با دیگر زبان‌های سازگار با CLS همکاری کند. قواعد CLS یک زیرمجموعه‌ از سامانه نوع مشترک را معرفی می‌کند.

سامانه اجرای مجازی (Virtual Execution System  - VES)

VES در واقع به کمک فراداده، برنامه‌های سازگار با CLI را بارگذاری و اجرا می‌کند، بعدا آن قطعه کدهای جداگانه تولید شده، در زمان اجرا، به صورت مجرا ترکیب می‌شوند.

همه زبان‌های سازگار به «زبان میانی مشترک (CIL)» کامپایل می‌شوند، که این زبان یک زبان میانی است که ویژگی آن این است که از بن‌سازی سخت‌افزاری انتزاع یافته‌است. موقعی که کد اجرا می‌شود، VES که برای بن‌سازه خاصی ساخته شده‌است، زبان CIL را به زبان ماشین کامپایل می‌کند، که این کار براساس سخت‌افزار و سیستم‌عامل خاص انجام می‌شود.

استانداردسازی و پروانه‌دهی 
در سال آگوست ۲۰۰۰، شرکت‌های مایکروسافت، هیولت پاکارد، اینتل و دیگر شرکت‌ها، یک کار مشترک را شروع کردند تا CLI را استانداردسازی کنند. در دسامبر سال ۲۰۰۱، CLI توسط سازمان ای‌سی‌ام‌ای به تصویب رسید، سپس در آوریل سال ۲۰۰۳، سازمان ایزو آن را استانداردسازی کرد.

شرکت مایکروسافت و شرکایش، حق امتیاز اختراع CLI را در اختیار دارند. سازمان‌های ای‌سی‌ام‌ای و ایزو، بر خود لازم می‌بینند که همه امتیازهای اختراع که پیاده‌سازی می‌شوند، تحت «شرایط معقول و غیرتبعیض‌آمیز (RAND)» دردسترس باشند. معمولاً پروانه‌های RAND باید کمی حق اختراع بپردازند، که به همین دلیل مورد توجه چارچوب مونو بوده‌است. در ژانویه ۲۰۱۳، نه شرکت مایکروسافت، و نه سایر شرکایش، هیچ حق اختراعی برای پیاده‌سازی CLI که منوط به شرایط RAND باشد، تعیین نکرده بودند.

در ژولای ۲۰۰۹، شرکت مایکروسافت، سی‌شارپ و CLI را به لیست مشخصاتی اضافه نمود که تعهد انجمن مایکروسافت به آن اعمال می‌گردید، بنابراین هرکس می‌توانست ویرایش‌های مشخص شدهٔ استاندارد را پیاده‌سازی کند، و ترسی از نقض حقوق اختراعی از مایکروسافت ندارد. پیاده‌سازی استاندارد CLI نیاز به انطباق و همنوایی با یکی از رخ‌نماهای پشتبانی شده و تعریف شدهٔ استاندارد دارد، که در حالت حداقلی باید رخ‌نمای هسته را برآورده کند. رخ‌نمای هسته در واقع مجموعه بسیار کوچکی از انواع برای پشتیبانی است این موضوع در مقابل کتابخانه هسته نصب‌های دات‌نت پیش فرض مشهور قرار دارد. با این حال، مفاد انطباق با CLI، امکان گسترش رخ‌نمای پشتیبانی شده را (به کمک اضافه‌کردن شگردها (متدها) و انواع جدید به کلاس‌ها، و همچنین مشتق شدن از فضاهای نام جدید) می‌دهد. اما اجازه اضافه‌کردن اعضای جدید به واسط‌ها را نمی‌دهد. این به این معنا است که ویژگی‌های CLI را می‌توان استفاده کرد و گسترش داد، و این موضوع مادامی درست است که پیاده‌سازی رخ‌نمای انطباقی، رفتار برنامه‌ای را که باید روی آن رخ‌نما اجرا شود را تغییر ندهد، اما به «رفتار تعیین‌نشده» از برنامه‌هایی که مخصوصاً برای آن پیاده‌سازی نوشته شده‌اند، امکان وجود می‌دهد.

در سال ۲۰۱۲، سازمان‌های ای‌سی‌ام‌ای و ایزو یک نسخه جدید از استاندارد CLI را منتشر کردند، که این استاندارد توسط تعهد انجمن پوشش داده نمی‌شد.

پیاده‌سازی‌ها 
 چارچوب دات‌نت: پیاده‌سازی تجاری اصلی مایکروسافت برای CLI است. فقط از ویندوز پشتیبانی می‌کند. در نوامبر سال ۲۰۲۰ توسط دات‌نت جایگزین گردید.
 دات‌نت: جانشین آزاد و متن-باز و چندسکویی برای چارچوب دات‌نت است، که تحت پروانه MIT منتشر شده‌است.
 چارجوب فشرده دات‌نت: پیاده‌سازی تجاری مایکروسافت از CLI می‌باشد که به منظور وسایل قابل حمل و ایکس‌باکس ۳۶۰ طراحی شده‌است.
 چارچوب مایکرو دات‌نت: پیاده‌سازی متن‌باز CLI برای وسایلی است که از نظر منابع محدوداند.
 مونو: یک پیاده‌سازی متن‌باز جایگزین برای CLI و فن‌آوری‌های همراه است، که در اصل برای توسعه موبایل و بازی‌ها استفاده می‌شود.

پانویس

منابع 
 

زیرساخت زبان مشترک
استانداردهای آی‌ئی‌سی
استانداردهای ایزو
استانداردهای ئی‌سی‌ام‌ای
چارچوب دات‌نت