تحديث C#.NET 3.0
الجزء الأول: تقديم لغة C# ومنصة .NET
الفصل الأول فلسفة .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
فهم الوضع السابق. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
الحل .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
تقديم العناصر الأساسية للنظام الأساسي .NET (CLR، CTS،
و سي إل إس). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
لغات برمجة .NET-Aware إضافية. . . . . . . . . . . . . . . . . . . . . . . . . . . 9
نظرة عامة على تجميعات .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
فهم نظام النوع المشترك. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
فهم مواصفات اللغة المشتركة. . . . . . . . . . . . . . . . . . . . . . 20
فهم وقت تشغيل اللغة المشتركة. . . . . . . . . . . . . . . . . . . . . . . . . . 22
تمييز التجميع/مساحة الاسم/النوع. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
استكشاف التجميع باستخدام ildasm.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
استكشاف التجميع باستخدام عاكس لوتز رويدر. . . . . . . . . . . . . . . . . . . . . . 31
نشر وقت التشغيل .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
الطبيعة المستقلة للنظام الأساسي لـ .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
الفصل الثاني: بناء تطبيقات C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
دور .NET Framework 3.5 SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
بناء تطبيقات C# باستخدام csc.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
بناء تطبيقات .NET باستخدام TextPad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
بناء تطبيقات .NET باستخدام Notepad++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
بناء تطبيقات .NET باستخدام SharpDevelop. . . . . . . . . . . . . . . . . . . . . . . . . . . 48
بناء تطبيقات .NET باستخدام Visual C# 2008 Express . . . . . . . . . . . . . . . . . . 50
بناء تطبيقات .NET باستخدام Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . 52
كتالوج جزئي لأدوات تطوير .NET الإضافية. . . . . . . . . . . . . . . . . . . . 64
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
رابعا
الجزء 2 nnn إنشاءات برمجة Core C#
الفصل الثالث: بنيات البرمجة الأساسية لـ C#، الجزء الأول. . . . . . . . . . . . . . . . . . . . . . . . . 69
تشريح برنامج C# البسيط. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
جانب مثير للاهتمام: بعض الأعضاء الإضافيين في
فئة النظام والبيئة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
فئة System.Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
أنواع بيانات النظام والترميز المختصر C#. . . . . . . . . . . . . . . . . . . . . . . . . . . 80
فهم نوع System.String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
تضييق وتوسيع تحويلات نوع البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . 95
إنشاءات التكرار في C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
يبني القرار ومشغلي العلائقية / المساواة. . . . . . . . . . . . . . . . . 102
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
الفصل الرابع من بنيات البرمجة الأساسية لـ C#، الجزء الثاني. . . . . . . . . . . . . . . . . . . . . . . . 107
الأساليب ومعدلات المعلمة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
فهم التحميل الزائد للأعضاء. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
معالجة المصفوفات في لغة C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
فهم نوع التعداد . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
فهم نوع الهيكل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
فهم أنواع القيمة وأنواع المراجع. . . . . . . . . . . . . . . . . . . . . . . . 129
أنواع القيمة والمراجع: التفاصيل النهائية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
فهم أنواع C# Nullable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
الفصل الخامس: تعريف أنواع الفئات المغلفة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
تقديم نوع فئة C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
فهم منشئي الطبقة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
دور هذه الكلمة الرئيسية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
فهم الكلمة الأساسية الثابتة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
تحديد ركائز OOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
معدّلات الوصول إلى C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
الركيزة الأولى: خدمات تغليف C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
فهم البيانات الثابتة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
فهم حقول القراءة فقط. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
فهم الأنواع الجزئية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
توثيق كود مصدر C# عبر XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
تصور ثمار عملنا. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
الفصل 6 فهم الميراث وتعدد الأشكال. . . . . . . . . . . . . . . . . . 185
الآليات الأساسية للميراث. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
مراجعة الرسوم البيانية لفئة Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
الركن الثاني: تفاصيل الميراث. . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
برمجة الاحتواء/التفويض. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
المحتويات ضد
المحتويات
الركن الثالث: الدعم متعدد الأشكال لـ C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
فهم قواعد اختيار الفئة الأساسية/الفئات المشتقة. . . . . . . . . . . . . . . . . . . 210
فئة الوالدين الرئيسية: System.Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
الفصل السابع فهم معالجة الاستثناءات المنظمة. . . . . . . . . . . . . . . . . . . 219
قصيدة للأخطاء والأخطاء والاستثناءات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
دور معالجة استثناءات .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
أبسط مثال ممكن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
تكوين حالة الاستثناء. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
استثناءات على مستوى النظام (System.SystemException) . . . . . . . . . . . . . . . . . . . . . 230
استثناءات مستوى التطبيق (System.ApplicationException) . . . . . . . . . . . . . . . 231
معالجة الاستثناءات المتعددة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
الكتلة الأخيرة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
من يرمي ماذا؟ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
نتيجة الاستثناءات غير المعالجة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
تصحيح الاستثناءات غير المعالجة باستخدام Visual Studio. . . . . . . . . . . . . . . . . . . . 242
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
الفصل 8 فهم عمر الكائن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
الفئات والكائنات والمراجع. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
أساسيات عمر الكائن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
دور جذور التطبيق . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
فهم أجيال الكائنات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
نوع System.GC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
بناء الكائنات النهائية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
بناء الأشياء التي يمكن التخلص منها. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
بناء أنواع نهائية ويمكن التخلص منها. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
الجزء 3 nnn بنيات البرمجة المتقدمة لـ C#
الفصل 9 العمل مع الواجهات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
فهم أنواع الواجهة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
تعريف الواجهات المخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
تنفيذ واجهة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
استدعاء أعضاء الواجهة على مستوى الكائن . . . . . . . . . . . . . . . . . . . . . . . . 276
واجهات كمعلمات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
واجهات كقيم الإرجاع. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
صفائف من أنواع الواجهة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
تنفيذ الواجهات باستخدام Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . . 282
حل تضارب الأسماء عبر تنفيذ الواجهة الصريحة. . . . . . . . . . . . . 283
تصميم التسلسل الهرمي للواجهة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
بناء أنواع لا تعد ولا تحصى (IEnumerable و IEnumerator). . . . . . . . . . . . . . . 289
بناء كائنات قابلة للاستنساخ (ICloneable). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
بناء كائنات قابلة للمقارنة (IComparable). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
فهم واجهات رد الاتصال. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
الفصل 10 المجموعات والأسماء العامة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
واجهات مساحة الاسم System.Collections . . . . . . . . . . . . . . . . . . . . . 309
أنواع فئات System.Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
System.Collections.مساحة الاسم المتخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
العلاقة بين الملاكمة والفتح والنظام والكائن. . . . . . . . . . . . . . . . . . . 316
مسألة سلامة النوع والمجموعات المكتوبة بقوة. . . . . . . . . . . . . . . . . . 319
System.Collections.مساحة الاسم العامة . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
إنشاء طرق عامة مخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
إنشاء الهياكل العامة والفئات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
إنشاء مجموعة عامة مخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
إنشاء فئات أساسية عامة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
إنشاء واجهات عامة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
الفصل 11 المندوبون والأحداث واللامدا. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
فهم نوع مندوب .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
تعريف المندوب في C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
الفئات الأساسية System.MulticastDelegate وSystem.Delegate. . . . . . . . . 344
أبسط مثال ممكن للمندوب. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
تعديل نوع السيارة مع المندوبين. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
مثال أكثر تفصيلاً للمندوبين. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
فهم مندوب التباين. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
إنشاء مندوبين عامة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
فهم أحداث C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
مفوض EventHandler العام<T>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
فهم الأساليب المجهولة في لغة C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
فهم تحويلات مجموعة الطريقة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
مشغل لامدا C # 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
الفصل 12: الفهارس والمشغلون والمؤشرات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
فهم طرق المفهرس. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
فهم الحمولة الزائدة للمشغل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
فهم تحويلات النوع المخصص. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
العمل مع أنواع المؤشر. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
توجيهات المعالجات الأولية لـ C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
الفصل 13 ميزات اللغة C# 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
فهم المتغيرات المحلية المكتوبة ضمنيًا. . . . . . . . . . . . . . . . . . . . . . . . . . 415
فهم الخصائص التلقائية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
فهم طرق التمديد. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
المحتويات سابعا
فهم الطرق الجزئية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
فهم بناء جملة مُهيئ الكائن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
فهم الأنواع المجهولة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
الفصل 14 مقدمة إلى LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
فهم دور LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
نظرة أولى على تعبيرات استعلام LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
LINQ والمجموعات العامة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
LINQ والمجموعات غير العامة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
التمثيل الداخلي لمشغلي استعلام LINQ. . . . . . . . . . . . . . . . . . . . . 459
التحقق من مشغلي الاستعلام C# LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
استفسارات LINQ: جزيرة في حد ذاتها؟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
الجزء 4 nnn البرمجة باستخدام تجميعات .NET
الفصل 15 تقديم تجميعات .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
تعريف مساحات الأسماء المخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
دور تجميعات .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
فهم تنسيق تجميع .NET. . . . . . . . . . . . . . . . . . . . . . . . . . 482
بناء واستهلاك تجميعة ذات ملف واحد. . . . . . . . . . . . . . . . . . . . . . . . . 486
بناء واستهلاك مجموعة متعددة الملفات. . . . . . . . . . . . . . . . . . . . . . . . . . . 496
فهم التجمعات الخاصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
فهم التجميعات المشتركة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
تستهلك الجمعية المشتركة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
تكوين التجميعات المشتركة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
التحقيق في التكوين الداخلي لـ GAC . . . . . . . . . . . . . . . . . . . . . . . . 516
فهم تجميعات سياسة الناشر. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
فهم عنصر <codeBase> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
مساحة الاسم System.Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
ملف تكوين الجهاز . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
الفصل 16: نوع الانعكاس، والربط المتأخر، والاعتماد على السمات
برمجة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
ضرورة نوع البيانات الوصفية . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
فهم الانعكاس. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
إنشاء عارض بيانات تعريف مخصص. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
تحميل التجميعات ديناميكيًا. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
التفكير في التجمعات المشتركة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
فهم الربط المتأخر. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
المحتويات
فهم البرمجة المنسوبة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
بناء سمات مخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
سمات مستوى التجميع (ومستوى الوحدة) . . . . . . . . . . . . . . . . . . . . . . . . . . 549
التفكير في السمات باستخدام الربط المبكر. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
التفكير في السمات باستخدام الربط المتأخر. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
وضع الانعكاس والربط المتأخر والسمات المخصصة في المنظور. . . . . . 553
بناء تطبيق قابل للتمديد. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
الفصل 17 العمليات ومجالات التطبيق وسياقات الكائنات. . . . . . . . . . . . . . . . . . . 561
مراجعة عمليات Win32 التقليدية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
التفاعل مع العمليات ضمن النظام الأساسي .NET. . . . . . . . . . . . . . . . . . . . . . 563
فهم مجالات تطبيقات .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
فهم حدود سياق الكائن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
تلخيص العمليات ومجالات التطبيق والسياق. . . . . . . . . . . . . . . . . . . . . . 581
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
الفصل 18: إنشاء تطبيقات متعددة الخيوط. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
العلاقة بين العملية/مجال التطبيق/السياق/الموضوع. . . . . . . . . . . . . . . . . . . . 583
مراجعة مختصرة لبرنامج .NET Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
الطبيعة غير المتزامنة للمندوبين. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
استدعاء الأسلوب بشكل غير متزامن . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
مساحة الاسم System.Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
فئة System.Threading.Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
إنشاء المواضيع الثانوية برمجياً. . . . . . . . . . . . . . . . . . . . . . . . . . 597
مسألة التزامن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
البرمجة مع الاسترجاعات الموقت. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
فهم CLR ThreadPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
دور مكون الخلفية. . . . . . . . . . . . . . . . . . . . . . . . . . 612
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
الفصل 19 فهم CIL ودور التجميعات الديناميكية. . . . . . . . 617
التفكير في طبيعة برمجة CIL. . . . . . . . . . . . . . . . . . . . . . . . . . . 617
فحص توجيهات CIL والسمات وأكواد التشغيل. . . . . . . . . . . . . . . . . . . . . . . 618
الدفع والفرقع: طبيعة CIL القائمة على المكدس. . . . . . . . . . . . . . . . . . . . 620
فهم هندسة الرحلات ذهابًا وإيابًا. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
فهم توجيهات وسمات CIL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
مكتبة الفئة الأساسية .NET، وتعيينات أنواع البيانات C# وCIL. . . . . . . . . . . . . . . . 635
تحديد أعضاء النوع في CIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
فحص أكواد تشغيل CIL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
إنشاء تجميعة .NET باستخدام CIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
فهم التجميعات الديناميكية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
المحتويات تاسعا
الجزء 5 nnn تقديم مكتبات .NET Base Class
الفصل 20 إدخال/إخراج الملفات والتخزين المعزول. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
استكشاف مساحة الاسم System.IO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
أنواع الدليل (المعلومات) والملف (المعلومات). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
العمل مع نوع DirectoryInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
العمل مع نوع الدليل . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
العمل مع نوع فئة DriveInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
العمل مع فئة FileInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
العمل مع نوع الملف . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
فئة الدفق الملخص. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
العمل مع StreamWriters وStreamReaders. . . . . . . . . . . . . . . . . . . . . . . . 677
العمل مع StringWriters وStringReaders. . . . . . . . . . . . . . . . . . . . . . . . . . 680
العمل مع BinaryWriters وBinaryReaders. . . . . . . . . . . . . . . . . . . . . . . . . . 682
"مشاهدة" الملفات برمجياً. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
تنفيذ إدخال/إخراج ملف غير متزامن. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
فهم دور التخزين المعزول. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
كتاب تمهيدي عن أمن الوصول إلى التعليمات البرمجية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
نظرة عامة على التخزين المعزول. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
الحصول على متجر باستخدام IsolatedStorageFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
التخزين المعزول قيد التنفيذ: انقر مرة واحدة للنشر. . . . . . . . . . . . . . . . . . . . . . . . 707
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
الفصل 21: تقديم تسلسل الكائنات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
فهم تسلسل الكائنات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
تكوين الكائنات للتسلسل . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
اختيار منسق التسلسل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
تسلسل الكائنات باستخدام BinaryFormatter. . . . . . . . . . . . . . . . . . . . . . . . . . . 717
تسلسل الكائنات باستخدام SoapFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
تسلسل الكائنات باستخدام XmlSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
تسلسل مجموعات من الكائنات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
تخصيص عملية التسلسل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
الفصل 22 ADO.NET الجزء الأول: الطبقة المتصلة. . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
تعريف عالي المستوى لـ ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
فهم موفري بيانات ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
مساحات أسماء ADO.NET إضافية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
أنواع مساحة الاسم System.Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
تلخيص موفري البيانات باستخدام الواجهات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
إنشاء قاعدة بيانات AutoLot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
نموذج مصنع موفر بيانات ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
فهم الطبقة المتصلة لـ ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . 755
العمل مع قراء البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
بناء مكتبة الوصول إلى البيانات القابلة لإعادة الاستخدام. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
المحتويات
إنشاء واجهة أمامية تعتمد على واجهة مستخدم وحدة التحكم. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
الوصول غير المتزامن إلى البيانات باستخدام SqlCommand . . . . . . . . . . . . . . . . . . . . . . . . 775
فهم معاملات قاعدة البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
الفصل 23 ADO.NET الجزء الثاني: الطبقة المنفصلة. . . . . . . . . . . . . . . . . . . . . . . . 783
فهم الطبقة المنفصلة لـ ADO.NET . . . . . . . . . . . . . . . . . . . . . 783
فهم دور مجموعة البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
العمل مع أعمدة البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
العمل مع DataRows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
العمل مع جداول البيانات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
ربط كائنات DataTable بواجهات المستخدم. . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
تعبئة كائنات DataSet/DataTable باستخدام محولات البيانات. . . . . . . . . . . . . . . . . . . 808
إعادة النظر في AutoLotDAL.dll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
التنقل في كائنات مجموعة البيانات المتعددة الجداول. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
أدوات الوصول إلى البيانات في Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . 820
فصل التعليمات البرمجية التي تم إنشاؤها تلقائيًا عن طبقة واجهة المستخدم. . . . . . . . . . . . . . . . . . . . . . . 831
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
الفصل 24 البرمجة باستخدام واجهات برمجة تطبيقات LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
دور LINQ في ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
البرمجة باستخدام LINQ إلى DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
البرمجة باستخدام LINQ إلى SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
إنشاء فئات الكيانات باستخدام SqlMetal.exe . . . . . . . . . . . . . . . . . . . . . . . . . . 848
بناء فئات الكيانات باستخدام Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . . . 854
معالجة مستندات XML باستخدام LINQ إلى XML. . . . . . . . . . . . . . . . . . . . . . . . 857
التنقل في مستند في الذاكرة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
الفصل 25: تقديم مؤسسة اتصالات Windows. . . . . . . . . . . . . . . 867
مجموعة من واجهات برمجة التطبيقات (API) للحوسبة الموزعة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
دور صندوق رأس المال العامل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
التحقيق في جمعيات WCF الأساسية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
قوالب مشروع Visual Studio WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
التكوين الأساسي لتطبيق WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
أبجديات WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
بناء خدمة WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
استضافة خدمة WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
بناء تطبيق عميل WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
استخدام قالب مشروع مكتبة خدمة WCF. . . . . . . . . . . . . . . . . . . . . . . . . 900
استضافة خدمة WCF كخدمة Windows. . . . . . . . . . . . . . . . . . . . . . . . . 903
استدعاء الخدمة بشكل غير متزامن . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
تصميم عقود بيانات WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
المحتويات الحادي عشر
الفصل 26: تقديم مؤسسة سير عمل Windows. . . . . . . . . . . . . . . . . . . . . 917
تعريف عملية الأعمال. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917
اللبنات الأساسية للWF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
تجميعات WF، ومساحات الأسماء، والمشاريع. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
إنشاء تطبيق بسيط يدعم سير العمل. . . . . . . . . . . . . . . . . . . . . . . . . 926
فحص رمز استضافة محرك WF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
استدعاء خدمات الويب ضمن سير العمل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
بناء مكتبة رموز WF قابلة لإعادة الاستخدام. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
كلمة مختصرة بخصوص الأنشطة المخصصة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
الجزء 6 واجهات مستخدم سطح المكتب
الفصل 27 البرمجة باستخدام نماذج Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
مساحات أسماء نماذج Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
بناء تطبيق نماذج Windows بسيط (خالي من IDE). . . . . . . . . . . . . . . . . . 956
قالب مشروع Visual Studio Windows Forms. . . . . . . . . . . . . . . . . . . . . . 961
تشريح النموذج. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
الاستجابة لنشاط الماوس. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
الاستجابة لنشاط لوحة المفاتيح. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977
تصميم مربعات الحوار. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
عرض البيانات الرسومية باستخدام GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985
إنشاء تطبيق نماذج Windows كامل. . . . . . . . . . . . . . . . . . . . . . . . 990
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
الفصل 28: تقديم Windows Presentation Foundation وXAML. . . . . . . 999
الدافع وراء WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999
النكهات المختلفة لتطبيقات WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
التحقيق في جمعيات WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
بناء تطبيق WPF (خالي من XAML). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011
تفاصيل إضافية عن نوع التطبيق . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015
تفاصيل إضافية عن نوع النافذة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017
بناء تطبيق WPF (متمحور حول XAML). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
تحويل العلامات إلى تجميعة .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
فصل المخاوف باستخدام ملفات Code-Behind . . . . . . . . . . . . . . . . . . . . . . . 1029
بناء جملة XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031
بناء تطبيقات WPF باستخدام Visual Studio 2008. . . . . . . . . . . . . . . . . . . . 1044
معالجة XAML في وقت التشغيل: SimpleXamlPad.exe . . . . . . . . . . . . . . . . . . . . . . 1048
دور Microsoft Expression Blend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
المحتويات
الفصل 29 البرمجة باستخدام عناصر تحكم WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055
مسح لمكتبة التحكم WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055
الإعلان عن عناصر التحكم في XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058
فهم دور خصائص التبعية. . . . . . . . . . . . . . . . . . . . . . 1060
فهم الأحداث الموجهة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064
العمل مع أنواع الأزرار. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068
العمل مع خانات الاختيار وأزرار الراديو. . . . . . . . . . . . . . . . . . . . . . . . . . . 1072
العمل مع أنواع ListBox وComboBox. . . . . . . . . . . . . . . . . . . . . . . . 1075
العمل مع مناطق النص. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081
التحكم في تخطيط المحتوى باستخدام اللوحات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
بناء إطار النافذة باستخدام اللوحات المتداخلة. . . . . . . . . . . . . . . . . . . . . . . 1093
فهم أوامر التحكم WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099
فهم نموذج ربط البيانات WPF . . . . . . . . . . . . . . . . . . . . . . . . . . 1102
تحويل البيانات باستخدام IValueConverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106
الربط بالكائنات المخصصة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108
ربط عناصر واجهة المستخدم بمستندات XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
الفصل 30 العرض الرسومي والموارد والموضوعات الخاصة بـ WPF 2D. . . . . . . . . 1117
فلسفة خدمات العرض الرسومية WPF. . . . . . . . . . . . . . . . . . . . 1117
استكشاف الأنواع المشتقة من الشكل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
العمل مع فرش WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127
العمل مع أقلام WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130
استكشاف الأنواع المشتقة من الرسم. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130
دور تحويلات واجهة المستخدم. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
فهم خدمات الرسوم المتحركة الخاصة بـ WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136
فهم نظام موارد WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145
تحديد وتطبيق الأنماط لعناصر تحكم WPF. . . . . . . . . . . . . . . . . . . . . . . . . 1147
تغيير واجهة مستخدم عنصر التحكم باستخدام القوالب. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160
الجزء السابع بناء تطبيقات الويب باستخدام ASP.NET
الفصل 31 إنشاء صفحات ويب ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
دور HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
فهم تطبيقات الويب وخوادم الويب. . . . . . . . . . . . . . . . . . . . . . 1164
دور HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167
دور البرمجة النصية من جانب العميل. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172
تقديم بيانات النموذج (GET وPOST). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
بناء صفحة ASP كلاسيكية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175
مشاكل مع ASP الكلاسيكي . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177
مساحات أسماء ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178
نموذج رمز صفحة الويب ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179
تفاصيل بنية دليل موقع ASP.NET. . . . . . . . . . . . . . . . . . . . . . 1190
دورة تجميع صفحات ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192
المحتويات 13
سلسلة وراثة نوع الصفحة . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194
التفاعل مع طلب HTTP الوارد. . . . . . . . . . . . . . . . . . . . . . . . . . . 1195
التفاعل مع استجابة HTTP الصادرة. . . . . . . . . . . . . . . . . . . . . . . . . . 1198
دورة حياة صفحة ويب ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200
دور ملف Web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206
الفصل 32 عناصر تحكم ويب ASP.NET والموضوعات والصفحات الرئيسية. . . . . . . . . . . . 1207
فهم طبيعة عناصر التحكم في الويب. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207
نوع System.Web.UI.Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209
نوع System.Web.UI.WebControls.WebControl. . . . . . . . . . . . . . . . . . . . . . 1213
الفئات الرئيسية لعناصر تحكم ويب ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
إنشاء موقع ويب ASP.NET غني بالميزات. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215
دور ضوابط التحقق من الصحة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231
العمل مع المواضيع. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237
تحديد المواقع الضوابط باستخدام جداول HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244
الفصل 33 تقنيات إدارة حالة ASP.NET. . . . . . . . . . . . . . . . . . . . . . . 1245
قضية الدولة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245
تقنيات إدارة حالة ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1247
فهم دور حالة عرض ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . 1248
دور ملف Global.asax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251
فهم تمييز التطبيق/الجلسة. . . . . . . . . . . . . . . . . . . . . . 1254
العمل مع ذاكرة التخزين المؤقت للتطبيق. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259
الحفاظ على بيانات الجلسة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263
فهم ملفات تعريف الارتباط. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1267
دور عنصر <sessionState> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
فهم واجهة برمجة تطبيقات ملف تعريف ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279
الجزء 8 نن الملاحق
nAPPENDIX A إمكانية التشغيل التفاعلي لـ COM و.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283
نطاق التشغيل المتداخل .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283
مثال بسيط لـ .NET to COM Interop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284
التحقق من تجميع .NET Interop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287
فهم الغلاف القابل للاستدعاء في وقت التشغيل. . . . . . . . . . . . . . . . . . . . . . . . . . 1289
دور COM IDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292
استخدام مكتبة النوع لإنشاء تجميع Interop. . . . . . . . . . . . . . . . . . . . . . 1296
إنشاء خادم COM أكثر تفصيلاً. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299
فحص الجمعية Interop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
فهم إمكانية التشغيل المتداخل من COM إلى .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305
دور اتفاقية الأسلحة التقليدية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1306
دور واجهة فئة .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307
المحتويات
بناء أنواع .NET الخاصة بك. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1308
إنشاء مكتبة النوع وتسجيل أنواع .NET. . . . . . . . . . . . . . 1310
فحص معلومات النوع المصدرة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
بناء عميل اختبار Visual Basic 6.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1312
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313
nAPPENDIX B تطوير .NET مستقل عن النظام الأساسي باستخدام Mono . . . . . . . . . . . 1315
الطبيعة المستقلة للنظام الأساسي لـ .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
الحصول على وتثبيت Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1318
أدوات التطوير الأحادية. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321
إنشاء تطبيقات .NET باستخدام Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323
اقتراحات لمزيد من الدراسة. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1330
ملخص . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331
نيندكس. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333
يوسع