# مكتبة الصفوف الأساسية

مكتبة الصفوف الأساسية (بالإنجليزية: 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
يتضمن فضاء التسمية هذا معمارية ويندوز فورمز والتي توفر ولوجاً إلى عناصر واجهة ويندوز الأساسية حيث تقوم بتغليف واجهة برمجة التطبيقات الخاصة بويندوز الحالية. تتيح هذه الواجهة إمكانية كتابة تطبيقات ويندوز رسومية باستخدام الكود المُدار. حلت مكتبة بنية عروض ويندوز مكان هذا الفضاء.

## مراجع

* ↑ "IV.5.10 Parallel library". Standard ECMA-335 – سي إل أي (CLI) (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 441. مؤرشف من الأصل في 2021-01-15. اطلع عليه بتاريخ 2017-12-24.
* ↑ "IV.3.2 The Compact Profile". Standard ECMA-335 – سي إل أي (CLI) (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 437. مؤرشف من الأصل في 2021-01-15. اطلع عليه بتاريخ 2017-12-24.
* ↑ "IV.3.1 The Kernel Profile". Standard ECMA-335 – سي إل أي (CLI) (Technical report) (ط. 6th). Ecma International. يونيو 2012. ص. 437. مؤرشف من الأصل في 2021-01-15. اطلع عليه بتاريخ 2017-12-24.
* بوابة تقانة المعلومات
* بوابة علم الحاسوب
* بوابة مايكروسوفت