خريطة مكتبة الصفوف الأساسية 
**مكتبة الصفوف الأساسية** (بالإنجليزية: Base Class Library)‏ أو اختصاراً (BCL) هي مكتبة قياسية وإحدى مكتبات البنية التحتية المشتركة للغات (CLI) المتوفرة لكافة لغات CLI. تتضمن CLI هذه المكتبة بهدف تغليف الوظائف البرمجية الشائعة كالقراءة من والكتابة إلى الملفات ومعالجة الصور والتعامل مع قواعد البيانات والتلاعب بملفات XML مما يسهل عمل المبرمج. تغطي هذه المكتبة عدداً كبيراً من الوظائف وتعتبر ضخمة بالمقارنة مع المكتبات القياسية الخاصة بلغات برمجة أخرى بما في ذلك لغة سي++، كما أنها تشابه من ناحية الوظيفية المكتبات القياسية للغة جافا. تعود جذور هذه المكتبة إلى إطار عمل دوت نت بسبب كونه أول تحقيق من CLI. يشار إلى هذه المكتبة بشكل خاطئ أحياناً بأنها مكتبة صفوف إطار العمل (بالإنجليزية: Framework Class Library)‏ أو اختصاراً (FCL)، ولكن FCL في الواقع مكتبة أكثر شمولاً وتتضمن بعض فضاءات التسمية الخاصة بمايكروسوفت.

يتم تحديث مكتبة BCL مع كل إصدار جديد من إطار عمل دوت نت.

فضاءات الأسماء
--------------

لم تقم مايكروسوفت بالإشارة صراحةً إلى كون بعض فضاءات الأسماء جزء من BCL إلا أن هذه فضاءات الأسماء هذه موجودة فعلاً ضمن تحقيق CLI ألا وهو إطار عمل دوت نت.

فضاءات الأسماء المعيارية
------------------------

فيما يلي قائمة بفضاءات الأسماء المعيارية كما وردت في المعيارين ECMA 335 وISO/IEC 23271:2006:

**System**

يتضمن فضاء الأسماء هذا الحاجات البرمجية الأساسية حيث يحتوي على الأنماط الأساسية مثل `String` و`DateTime` و`Boolean` وغيرها بالإضافة إلى الوظائف الحسابية والصفوف الأساسية الخاصة بالسمات (بالإنجليزية: Attributes)‏ والاستثناءات والمصفوفات كما أنه يدعم عدداً من البيئات كالكونسول.

**System.Collections**

يحتوي هذا الفضاء على الحاويات الشائعة المستخدمة في البرمجة كالقوائم والأرتال والمكدسات وجداول هاش والقواميس بالإضافة إلى دعم الأنماط العامة.

**System.Diagnostics**

توفر دعماً لتفحص التطبيقات حيث تتضمن تسجيلاً للأحداث وعدادات الأداء وتتبع الإجراءات والتفاعل معها.

**System.Globalization**

توفر دعماً لكتابة تطبيقات معولمة. حيث يمكن تعريف «معلومات متعلقة بالثقافة بما فيها اللغة، الدولة والإقليم والتقويم المستخدم، [بالإضافة إلى] نماذج تنسيق الوقت والعملة والأرقام».

**System.IO**

يتيح فضاء الأسماء هذا القراءة من والكتابة إلى مجارٍ متعددة مثل مجاري الملفات والبيانات. كما يوفر اتصالاً بنظام الملفات.

**System.Net**

يقدم واجهةً إلى «العديد من البروتوكولات المستخدمة في الشبكات في يومنا هذا» مثل HTTP وFTP وSMTP. كما يدعم الاتصالات الآمنة عبر بروتوكولات أخرى مثل بروتوكول SSL.

**System.Reflection**

يوفر فضاء التسمية هذا إمكانية تفحص الطرق والأنماط والحقول الخاصة بالكائنات وقت التنفيذ و«قابلية إنشاء واستدعاء الأنماط وقت التنفيذ». حيث يعرض واجهة برمجية تمكن من استخدام ميزات البرمجة الانعكاسية الخاصة بوقت التنفيذ المشترك للغات CLR.

**System.Runtime**

يمكن من إدارة أداء تطبيق ما أو وقت التنفيذ المشترك للغات CLR أثناء التنفيذ. بعض الميزات لديها القدرة على العمل مع كائنات COM أو الكود المحلي (غير المدار) بالإضافة إلى كتابة تطبيقا موزعة وسَلسَلة الكائنات بتنسيق كود ثنائي أو SOAP.

**System.Security**

يوفر البنية التحتية لنظام الأمن الخاصة بوقت التنفيذ المشترك للغات حيث يتيح فضاء الأسماء هذا إمكانية بناء إجراءات الحماية والأمن ضمن التطبيقات وفق سياسات وسماحيات معينة. بالإضافة إلى تقديمه خدمات أخرى كالتعمية.

**System.Text**

يقدم ترميزات نصية مختلفة وتعابير نمطية بالإضافة إلى تقنيات تلاعب بالسلاسل النصية فعالة (`StringBuilder`).

**System.Threading**

يساعد في تيسير البرمجة متعددة الخيوط. كما يتيح إمكانية مزامنة «نشاطات الخيوط والولوج إلى البيانات» ويوفر «تجمعاً من الخيوط المقدمة من نظام التشغيل».

**System.Xml**

يقدم دعماً معيارياً للتعامل مع XML بما فيها «القراءة والكتابة ومخططات XML والسلسلة والبحث والتحويل».

**System.Diagnostics.CodeAnalysis**

يتضمن صفوفاً خاصة بالتفاعل مع أدوات تحليل الكود. تستخدم هذه الأدوات لتحليل فيما إذا الكود متوافقاً مع سياسات معينة كطريقة التسمية وقواعد الأمان.

**System.Diagnostics.Contracts**

يتضمن صفوفاً استاتيكية تقوم بتمثيل قيود برمجية معينة كالشروط المسبقة (بالإنجليزية: Preconditions)‏ والشروط اللاحقة (بالإنجليزية: Postconditions)‏ واللامتغيرات (بالإنجليزية: Invariants)‏.

**System.Diagnostics.Eventing**

يتضمن صفوفاً تستخدم لتفحص البرنامج أثناء عمله. أثناء التفحص تكتب الأحداث إلى سجلات خاصة بنظام تتبع أحداث ويندوز (بالإنجليزية: Event Tracing for Windows)‏.

**System.Diagnostics.PerformaceData**

يعرض فضاء الأسماء هذا مجموعة من الصفوف التي توفر عدادات للبيانات، تستخدم هذه العدادات لإعطاء معلومات عن أداء البرنامج يمكن استخدامها من قبل برمجيات أخرى مثل Performance Monitor.

**System.Diagnostics.SymbolStore**

يقدم مجموعة من الصفوف التي تتيح إمكانية قراءة وكتابة معلومات التنقيح مثل إدراج رقم سطر الكود المصدري ضمن خرائط اللغة الوسيطة العامة. يمكن للمصرفات التي تستهدف إطار تطوير دوت نت تخزين هذه المعلومات في ملفات بتنسيق PDB. يمكن للمنقحات ومتفصحات الأداء قراءة هذه المعلومات أثناء تنفيذ البرنامج.

فضاءات الأسماء الغير معيارية
----------------------------

فيما يلي قائمة بفضاءات الأسماء التي لم تورد في معيار ECMA ولا في معيار ISO إنما هي حصرية بتحقيق مايكروسوفت فقط. على الرغم من أن تحقيق هذه الفضاءات ليس أمراً إجبارياً كونها ليست جزءاً من معيار اللغة إلا أن قسماً من تحقيقات دوت نت الأخرى (مثل مونو) قد قامت بتحقيق بعض فضاءات الأسماء هذه بشكل كامل أو جزئي.

**System.CodeDom**

تتيح هذه المكتبة إمكانية إنشاء كود وتنفيذه أثناء التنفيذ.

**System.ComponentModel**

تتيح إمكانية برمجة المكونات والتحكمات الخاصة بوقت التنفيذ وكذلك وقت التصميم. حيث أنها تشكل البنية التحتية «لتحقيق سمات المكونات وعمليات التحويل الخاصة بها وعمليات الربط مع مصادر البيانات بالإضافة إلى عمليات الترخيص».

**System.Configuration**

يوفر البنية التحتية الضرورية للتعامل مع بيانات الإعدادات

**System.Data**

يمثل فضاء الأسماء هذا المعمارية الخاصة بآدو دوت نت حيث تشتمل على عدة مكونات برمجية يمكن للمبرمج استخدامها من أجل الولوج للبيانات وخدمات البيانات.

**System.Deployment**

يتيح إمكانية التحكم بكيفية قيام التطبيق بعملية التحديث عبر استخدام تقنية كليك وانس.

**System.DirectoryServices**

يتيح ولوجاً مبسطاُ من الكود المُدار إلى أكتيف ديريكتوري.

**System.Drawing**

يعرض فضاء التسمية هذا الوظيفية الخاصية بواجهة +GDI الرسومية بما في ذلك من رسوميات ثنائية الأبعاد ورسوميات متجهية والصور والطباعة والخدمات النصية.

**System.EnterpriseServices**

يتيح فضاء التسمية هذا إمكانية ولوج كائنات دوت نت إلى خدمات +COM مما يجهل بيئة تطوير دوت نت أكثر ملاءمة للتطبيقات الخاصة بالشركات

**System.Linq**

يعرّف هذا الفضاء الواجهة `<IQueryable<T` والطرق المرتبطة بها والتي تمكن مزودي خدمات لينك من توفير خدماتهم للمطور.

**System.Linq.Expressions**

يسمح هذا الفضاء بتمثيل مؤشرات التوابع (بالإنجليزية: Delegates)‏ وتعابير لامبدا ضمن أشجاء التعابير مما يمكن من فحص ومعالجة الكود عالي المستوى أثناء التنفيذ.

**System.Managment**

يتيح إمكانية الحصول عن معلومات النظام، "كالمساحة المتبقية من القرص أو مقدار الانتفاع (بالإنجليزية: Utilization)‏ من المعالج أو هوية قاعدة البيانات التي يتصل بها البرنامج بالإضافة إلى العديد من الوظائف الأخرى".

**System.Media**

يتيح إمكانية لعب أصوات النظام وملفات WAV.

**System.Messaging**

يتيح إمكانية "الاتصال ومراقبة وإدارة أرتال الرسائل الموجودة في الشبكة بالإضافة إلى إرسال واستقبال واختلاس النظر (بالإنجليزية: peek)‏ إلى الرسائل". لهذه الوظيفية اسم آخر وهو Net Remoting. حلت مكتبة أساسيات اتصال ويندوز مكان هذا الفضاء.

**System.Resources**

يتيح معالجة موارد التطبيق بهدف عولمته إلى ثقافات ولغات متعددة.

**System.ServiceProcess**

يتيح إنشاء التطبيقات التي تعمل كخدمة ضمن نظام التشغيل ويندوز.

**System.Timers**

يتيح إمكانية القيام بحدث ما خلال فترات زمنية محددة.

**System.Transactions**

يوفر دعماً للمناقلات الموزعة

**System.Web**

يوفر العديد من المكتبات البرمجية المتعلقة بالوب. حيث يتيح إمكانيات الاتصال بين المتصفح والمخدم وإنشاء خدمات الوب المبنية باستخدام لغة الترميز القابلة للامتداد، يشار إلى معظم هذه المكتبات باسم معمارية إيه إس بي دوت نت.

**System.Windows.Forms**

يتضمن فضاء التسمية هذا معمارية ويندوز فورمز والتي توفر ولوجاً إلى عناصر واجهة ويندوز الأساسية حيث تقوم بتغليف واجهة برمجة التطبيقات الخاصة بويندوز الحالية. تتيح هذه الواجهة إمكانية كتابة تطبيقات ويندوز رسومية باستخدام الكود المُدار. حلت مكتبة بنية عروض ويندوز مكان هذا الفضاء.

مراجع
-----

1. ↑  "IV.5.10 Parallel library". *Standard ECMA-335 – سي إل أي (CLI)* (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 441.
2. ↑  "IV.3.2 The Compact Profile". *Standard ECMA-335 – سي إل أي (CLI)* (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 437.
3. ↑  "IV.3.1 The Kernel Profile". *Standard ECMA-335 – سي إل أي (CLI)* (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 437.

| * ع
* ن
* ت
إطار عمل دوت نت (NET Framework) |
| --- |
| المعمارية |  مكتبة الصفوف الأساسية (BCL)  **·**  وقت التنفيذ المشترك للغات (CLR)  **·**  كود أكسس سيكيوريتي  **·**  أسمبلي  **·**  مانيفست  **·**  كوم إنترأوب  **·**  أبليكايشن دوماين  |
| لغات البنية التحتية المشتركة للغات (CLI) | 

|  |  |
| --- | --- |
| شائعة  |  سي شارب  **·**  فيجوال بيسك دوت نت  **·**  سي++/سي إل آي  **·**  إف شارب  **·**  جي شارب  **·**  جي سكربت دوت نت  **·**  باورشيل  |
| أخرى  |  أكسوم  **·**  إيه شارب **·**  بوو  **·**  إم  **·**  كوبرا  **·**  آيرون سكيم (آيرون ليسب)  **·**  آيرن بايثون  **·**  آيرن روبي  **·**  نيمرل  **·**  فالانجر  **·**  بي شارب  **·**  سكالا  |

 |
| المكونات |  أدو دوت نت (إنتيتي، خدمات البيانات)  **·**  إيه إس بي دوت نت (أجاكس،إم في سي،دايناميك داتا)  **·**  البطاقة الرقمية لويندوز  **·**  كليك وانس  **·**  سي إل آر بروفايلر  **·**  كوميونيكاشن فاونداشن (WCF)  **·**  وقت تنفيذ اللغات الديناميكية (DLR)  **·**  لينك  **·**  نماذج ويندوز  **·**  إطار عمل التوسع المُدار  **·**  إضافات العمل على التوازي  **·**  دوت نت ريموتينغ  **·**  "روزلين"  **·**   **·**  أساسيات سير عمل ويندوز (WF)  **·**  زامل  |
| التنفيذات الأخرى |  مونو **·**  إطار عمل دوت نت المدمج  **·**  إكس إن أيه  **·**  إطار عمل دوت نت الميكروي  **·**  إطار عمل دوت نت المحمول  **·**  سيلفرلايت  **·**  إس إس سي إل آي (روتر)  |
| مقارنات |  مقارنة سي شارب وفيجوال بيسك  **·**  مقارنة جافا وسي شارب  **·**  مقارنة جافا وإطار عمل دوت نت  |

|  |
| --- |
| **مكتبة الصفوف الأساسية** في المشاريع الشقيقة: |
|  |  |

* أيقونة بوابةبوابة تقانة المعلومات
* أيقونة بوابةبوابة علم الحاسوب
* أيقونة بوابةبوابة مايكروسوفت