ذاكرة التخزين المؤقتة للتجميع العالمي
ذاكرة التخزين المؤقتة للتجميع العالمية ( GAC ) عبارة عن ذاكرة تخزين مؤقتة لتجميع CLI على مستوى الجهاز للبنية الأساسية للغة المشتركة (CLI) في إطار عمل Microsoft .NET. إن النهج المتمثل في وجود مستودع مركزي يتم التحكم فيه بشكل خاص يعالج العيوب [ بحاجة لمصدر ] في مفهوم المكتبة المشتركة ويساعد في تجنب الأخطاء التي قد تنجم عن حلول أخرى أدت إلى عيوب مثل DLL hell .
متطلبات
يجب أن تلتزم التجميعات الموجودة في GAC بنظام إصدار محدد يسمح بتنفيذ إصدارات مختلفة من التعليمات البرمجية جنبًا إلى جنب. على وجه التحديد، يجب تسمية هذه التجميعات بشكل واضح .
الاستخدام
هناك طريقتان للتفاعل مع GAC: Global Assembly Cache Tool (gacutil.exe) وAccessible Cache Viewer (shfusion.dll).
أداة التخزين المؤقت للتجميع العالمي
gacutil.exe هي أداة سطر أوامر قديمة تم شحنها مع .NET 1.1 ولا تزال متوفرة مع .NET SDK. [1]
من الممكن التحقق من توفر التجميع المشترك في GAC باستخدام الأمر:
gacutil.exe /l <اسم التجميع>
يمكنك تسجيل تجميع مشترك في GAC باستخدام الأمر:
gacutil.exe /i <اسم التجميع>
أو عن طريق نسخ ملف التجميع إلى الموقع التالي:
%windir%\التجميع\
لاحظ أنه بالنسبة لـ .NET 4.0 أصبح موقع GAC الآن:
%windir%\Microsoft.NET\assembly\
سيتم وصف الخيارات الأخرى لهذه الأداة المساعدة بشكل موجز إذا استخدمت علامة /؟، على سبيل المثال:
gacutil.exe /?
عارض ذاكرة التخزين المؤقت للتجميع
الواجهة الأحدث، عارض ذاكرة التخزين المؤقت للتجميع، مدمجة في مستكشف Windows . [2] التصفح %windir%\assembly\(على سبيل المثال، C:\WINDOWS\assembly) أو ، يعرض التجميعات الموجودة في ذاكرة التخزين المؤقت مع إصداراتها وثقافتها ورمز المفتاح العام وهندسة المعالج. يتم تثبيت التجميعات عن طريق السحب والإفلات وإلغاء تثبيتها عن طريق تحديد مفتاح الحذف %WINDIR%\Microsoft.NET\assembly والضغط عليه أو استخدام قائمة السياق .
مع إطلاق .NET Framework 4، أصبح ملحق Assembly Cache Viewer shell قديمًا. [3]
مثال على الاستخدام
يحتوي الكمبيوتر على مجموعتين CLI ، كل منهما تحمل اسم AssemblyA ، ولكن إحداهما بإصدار 1.0 والأخرى بإصدار 2.0. ونظرًا لأنه من المطلوب تجميع كل منهما في ملف يحمل اسم AssemblyA، فلا يمكن أن توجد المجموعتان في نفس الدليل داخل نظام الملفات FAT32 . وبدلاً من ذلك، يمكن استخدام نظام الملفات الافتراضي لـ GAC بواسطة البرامج التي تحتاج إلى استخدام كل إصدار من التجميع على وجه التحديد.
تطبيق
لا يوجد GAC كبنية فعلية داخل نظام التشغيل Windows. يتم تنفيذه وإدارته بواسطة CLI. تحتوي المجلدات الموجودة داخل %systemroot% المسماة assembly و Microsoft.NET\assembly (بالنسبة إلى .NET 4.0) على جميع التجميعات المتاحة عالميًا بأسماء ملفات مُدارة بحيث يمكن تضمين الإصدار ورموز المفتاح العام. وبالتالي يمكن أن يوجد كل إصدار داخل نفس الموقع ويتم استدعاؤه دون الحاجة إلى الإصدارات اللاحقة للحفاظ على مواقع نقطة إدخال التعليمات البرمجية كما هو معتاد. يسمح Windows Explorer بتثبيت التجميعات عن طريق السحب والإفلات في هذا المجلد فقط إذا كان من المسموح بخلاف ذلك بتثبيتها من سطر الأوامر.
قد يقوم تطبيق الاستدعاء بتحديد إصدار التجميع عند الإشارة إليه، وبالتالي يمكن لوقت التشغيل ببساطة الرجوع إلى اسم الملف لاستخدام الاسم الصحيح.
المزالق
تساعد آلية Global Assembly Cache في تجنب جحيم DLL القديم ، ولكنها لا تزال تعاني من بعض العيوب، مثل: [4]
- بشكل افتراضي، سيتم تشغيل التطبيقات فقط باستخدام إصدار .NET Framework المستخدم لتجميعها، مما قد يؤدي إلى فشل التطبيق على الأجهزة التي تم تثبيت إصدارات أحدث من .NET Framework عليها — حتى عندما يعمل التطبيق بشكل صحيح عادةً مع الإصدار الأحدث.
- من الضروري في بعض الأحيان استخدام التجميع الشرطي إذا كانت بعض مكالمات .NET الأساسية (المستخدمة في التطبيق) مدعومة فقط لبعض إصدارات الإطار.
- تتعرض تطبيقات .NET التي تعتمد على الكود الأصلي لمخاطر عدم التوافق، حتى مع آلية GAC.
- يجب تسمية كل مجموعة يتم إضافتها إلى GAC بشكل قوي . قد تكون عملية جعل مجموعة "مسمية بشكل قوي" مؤلمة للغاية في بعض المواقف. على سبيل المثال، إذا كانت مجموعة تعتمد على مجموعة أخرى ليست مسماة بشكل قوي، فلا يمكن تسجيلها في GAC. في الحالات التي لا يكون فيها كود المجموعة الخارجية في حوزة المبرمج، فقد يكون تحويل المجموعة إلى مجموعة مسماة بشكل قوي مستحيلًا في الواقع.
- لا يسمح التصفح بحثًا عن الملفات باستخدام واجهات برمجة تطبيقات Windows القياسية باختيار مكتبات DLL الموجودة ضمن مجلد "التجميع" عندما يعرض المستكشف عرضًا سهل الاستخدام لـ GAC.
انظر أيضا
مراجع
- ^ "Global Assembly Cache Tool (Gacutil.exe)". ريدموند، واشنطن : شركة مايكروسوفت . مؤرشف من الأصل في 2013-07-17 . تم الاسترجاع في 2010-05-27 .
- ^ "Assembly Cache Viewer (Shfusion.dll)". ريدموند، واشنطن : شركة مايكروسوفت . مؤرشف من الأصل في 2013-07-30 . تم الاسترجاع في 2010-05-27 .
- ^ "كيفية: عرض محتويات ذاكرة التخزين المؤقت للتجميع العالمي". ريدموند، واشنطن : شركة مايكروسوفت . مؤرشف من الأصل في 2013-07-19 . تم الاسترجاع في 2010-07-22 .
- ^ جون، مولر (2005-02-11). "عشرة فخاخ في التطبيقات المدارة تقتل توافق الإصدارات". devsource.com. مؤرشف من الأصل في 2013-01-21 . تم الاسترجاع في 2008-01-26 .
روابط خارجية
- دليل مطور .NET Framework محفوظ في 2008-10-06 على موقع Wayback Machine
- أداة Global Assembly Cache Tool (gacutil.exe) مؤرشفة في 2008-10-15 على موقع Wayback Machine
- كشف غموض ذاكرة التخزين المؤقت لتجميع .NET Global Assembly Cache محفوظ في 22 سبتمبر 2017 على موقع Wayback Machine
