في غمضة عين، مرت 4 سنوات منذ أن أطلقت Microsoft النظام الأساسي .net، وقد شهد .net أيضًا ترقيات من 1.0 إلى 1.1 إلى 2.0. نظرًا لجاذبية الميزات المتميزة المتنوعة لـ asp.net 2.0 وVs 2005 IDE، فإن الجميع مشغولون بتعلم 2.0 وترقية المشروع إلى vs 2005 من أجل التطوير. لكن في الواقع، لا يمكن ترقية العديد من المشاريع إلى إصدارات جديدة لأسباب مختلفة. مع مرور الوقت، تصبح مشكلة صيانة المشروع للإصدارات القديمة مزعجة أكثر فأكثر. على الرغم من أن .net قد ولد منذ وقت ليس ببعيد، إلا أن 4 سنوات كافية لتجميع عدد كبير من المشاريع.
لدي مشروع تم تطويره باستخدام vs.net 2002، ولم تتم ترقيته لأسباب مختلفة (أساسًا لأن المشروع كان يعمل بشكل جيد لفترة من الوقت قبل ظهور vs.net 2003، وبرامج asp.net الأخرى على الخادم غير قادرة للتكيف مع متطلبات الأمان الخاصة بـ .net 1.1).
عندما تمت ترقية منصة التطوير الخاصة بالشركة، تم تثبيت vs.net 2002 وvs.net 2003 على الكمبيوتر في نفس الوقت، مما أدى إلى حل مشكلة صيانة الإصدارات المختلفة من المشروع مؤقتًا. في وقت لاحق، مر المشروع بفترة الصيانة ولم يتم تحديثه لفترة طويلة، كما تمت إعادة تثبيت جهاز الكمبيوتر الخاص بي، وتم حذف vs.net 2002 بالكامل. ولكن بحلول عام 2005، كان العملاء يطلبون إجراء تعديلات كل شهر أو شهرين، وكان عليهم أن يكونوا سريعين. ولم تكن هناك طريقة أخرى. وكان العملاء رائعين للغاية لدرجة أنهم اضطروا إلى إجراء تغييرات حتى بعد فترة الصيانة. ولكن هنا تأتي المشكلة، بدون مقابل 2002، لا يمكن تجميعها.
من الصعب جدًا تثبيت .net Framework 1.0 على الكمبيوتر واستدعاء CSC يدويًا لتجميع التعليمات البرمجية المعدلة. يحتوي المشروع على الكثير من المراجع وكتابة سطر الأوامر معقدة للغاية. وهذا أمر مؤلم بشكل خاص عندما يحتوي المشروع على العديد من المجلدات. لقد أجريت أيضًا الاختبار وكتبت برنامجًا لتجميعه، لكنني كنت كسولًا ولم أدرك ذلك أبدًا.
أحتاج اليوم إلى تعديل البرنامج مرة أخرى، وفجأة تذكرت أنني استخدمت سمة Src الخاصة بتوجيه @Page مرة واحدة في وقت مبكر جدًا (في عام 2002)، سيستخدم asp.net نموذج التجميع الخاص به بدلاً من استخدام CodeBehind من vs.net IDE بهذه الطريقة، يمكن نشر التعليمات البرمجية دون تجميعها في ملف dll. عند الوصول إلى الموقع، سيقوم asp, net تلقائيًا بتجميع ملف aspx وملف .aspx.vb معًا. هناك عيبان رئيسيان لهذه الطريقة: 1. يجب نشر ملف التعليمات البرمجية (.vb) على الخادم، 2. لا يدعمه vs.net IDE. وبسبب المشكلة الثانية توقفت عن استخدامه ونسيته. الآن أنا قلق بشأن عدم القدرة على تجميع البرنامج وطالما أن الكود المعدل يمكن أن يصبح ساري المفعول، فلن يتم النظر في أوجه القصور الأخرى. على أية حال، يتم نشر كافة التعليمات البرمجية المصدر إلى الخادم. لقد أضفت سمة Src إلى توجيه @Page، باستخدام نفس قيمة سمة CodeBehind، للإشارة إلى ملف التعليمات البرمجية. ثم قم بتعديل التعليمات البرمجية في ملف .vb. قم بالتحديث، وستدخل التعديلات حيز التنفيذ، واكتملت عملية الصيانة. رائع جدا. وهذا ما سأفعله من الآن فصاعدا. نظرًا لأن vs.net IDE لا يدعمه وهو مذكور على MSDN، فقد لا يعرف الكثير من الأشخاص أن .net لديه نموذج التجميع هذا. شاركها الآن. إذا كان أي شخص يعاني من نفس الألم الذي أعانيه، يمكنك أيضًا محاولة إضافة Src إلى الصفحة، فهو بسيط وسريع بمجرد تغيير الرمز، لن يكون هناك حاجة لإرهاق عقلك للعثور على أدوات لتجميعها.
ملخص: يفضل العديد من الأشخاص، بما فيهم أنا، تجميع البرنامج في ملف dll، والذي يبدو وكأنه برنامج تم إصداره. في الواقع، فإن طريقة "نشر جميع التعليمات البرمجية المصدر إلى الخادم وتجميع التعليمات البرمجية بالكامل أثناء وقت التشغيل" جيدة جدًا وتبسط أعمال الصيانة المستقبلية بشكل كبير. تقوم العديد من الشركات بتنفيذ مشاريع للعملاء لا يحتاجون فعليًا إلى إخفاء كود المصدر عن العملاء. في هذه الحالة، سيؤدي استخدام هذه الطريقة إلى تحقيق فوائد كبيرة لأعمال الصيانة المستقبلية. بغض النظر عما إذا كان قد تم ترقية .net عدة مرات أو ما إذا كان الإصدار المقابل من أدوات التطوير مثبتًا على جهاز الكمبيوتر الخاص بك، فلا داعي للقلق التعامل مع كل شيء.
ملاحظة: تدعم جميع إصدارات asp.net وضع الترجمة هذا، لكن IDE الخاص بـ vs.net 2002 و2003 لا يدعمه ولا يمكنه فتح عرض التصميم. يدعم الإصدار الجديد مقابل 2005 IDE وضع الترجمة هذا. عند استخدام سمة Src، لم تعد سمة CodeBehind مطلوبة، ولكن من المستحسن أن تستمر في الاحتفاظ بها، ويمكن أن تساعدك أيضًا إذا كنت بحاجة فجأة إلى العودة إلى طريقة عرض الحساب. السمة Inherits غير مطلوبة، ولكن يوصى بشدة بعدم حذفها، لأنه إذا قمت بربط الحدث مباشرة في إعلان التحكم لملف aspx (مثل: OnClick=....")، فسيكون هناك خطأ بدون سمة الوراثة.
المصدر: مدونة cwbboy