إذا تقرر هذا النظام يحتاج إلى إصلاح شامل ، ما هي أفضل طريقة للذهاب نحو ذلك ؟

StackOverflow https://stackoverflow.com/questions/87522

  •  01-07-2019
  •  | 
  •  

سؤال

نحن mainting تطبيق ويب التي بنيت على الكلاسيكية ASP باستخدام VBScript كلغة أساسية.نحن في الاتفاق أن الخلفية (الإطار إذا كنت سوف) هو مؤرخ و لا توفر لنا الأدوات المناسبة للمضي قدما بطريقة سريعة.لدينا الكثير جدا احتضنت الحالي webMVC النمط الذي هو في كل مكان, و لا يمكن أن تفعل ذلك بطريقة معقولة ، مع التكنولوجيا الحالية.كبيرة من الميزات في عداد المفقودين السليم إيفاد والنموذجيه مع الميراث ، من بين أمور أخرى.

حاليا هناك نوعان من المسارات التي يجري مناقشتها:

  1. ميناء القائمة تطبيق ASP الكلاسيكية باستخدام JScript, والتي سوف تسمح لنا أن نأمل أن تذهب من هناك .صافي MSJscript دون الكثير من المتاعب ، و في نهاية المطاف على .صافي منصة (ويفضل MVC الاشياء سوف يتم بحلول ذلك الوقت ، ASP.NET ليست أفضل بكثير مما نحن عليه الآن في آرائنا).وقد قيل مثل طريق أكثر أمانا مع خطر أقل من الخيار التالي ، وإن كان ذلك قد يستغرق وقتا أطول قليلا.
  2. تماما إعادة كتابة التطبيق باستخدام بعض التقنيات الأخرى, الآن زعيم حزمة بايثون WSGI مع الإطار العرف ، ORM جيد النموذجيه الحل.هناك مساحة كبيرة للمناورة هنا حتى جانغو وغيرها بنيت قبل حلول.هذا الأسلوب من المؤمل أن تكون أسرع حل ، كما أننا على الأرجح تشغيل بيتا بجوار المنتج الفعلي ، ولكن لديها إمكانات كبيرة مضيعة للوقت إذا لم نستطع/لا الحق في الحصول عليها.

هذا لا يعني أن المنطق هو ذهب ، ما بنيناه على مدى السنوات مستقرة إلى حد ما ، كما لوحظ فقط من الصعب التعامل مع.أنها بنيت على SQL Server 2005 مع الثقيلة استخدام الإجراءات المخزنة و التي نشرت على IIS 6, فقط القليل من الخلفية.

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

هل كانت مفيدة؟

المحلول

لا رمي بعيدا الخاص بك التعليمات البرمجية!

إنه أسوأ خطأ يمكن أن تقوم (على تعليمات البرمجة الأساسية).انظر أشياء يجب عليك القيام به أبدا ، الجزء 1.

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

عن وظائف جديدة في التطبيق الخاص بك ، كتابتها في C# و ندعو من الكلاسيكية ASP.سوف تضطر إلى أن وحدات عند كتابة هذا الرمز الجديد.عندما يكون لديك الوقت ، ريفاكتور أجزاء من القديم الخاص بك التعليمات البرمجية في C# وكذلك العمل على البق كما تذهب.في نهاية المطاف, يجب استبدال التطبيق الخاص بك مع رمز جديد.

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

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

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

نصائح أخرى

استخدام هذا كفرصة إزالة الميزات غير المستخدمة!بالتأكيد الذهاب مع اللغة الجديدة.نسميها 2.0.سيكون أقل بكثير من العمل على إعادة بناء 80% من الذي كنت حقا بحاجة.

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

(أنا أحب أن حذف رمز.)

أنها تعمل على نحو أفضل مما كنت أعتقد.

في الآونة الأخيرة لم الكبيرة الهندسة العكسية عمل البشعة القديمة مجموعة من التعليمات البرمجية C.وظيفة من خلال وظيفة أنا تخصيص الميزات التي كانت لا تزال ذات الصلة في دروس, كتب وحدة اختبارات دروس و بناء ما يشبه استبدال التطبيق.وكان بعض من الأصلي "تدفق المنطق" من خلال الطبقات ، وبعض فصول سوء تصميم [في الغالب هذا كان بسبب مجموعة من المتغيرات العالمية التي كان من الصعب جدا أن ندف بعيدا.]

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

العام الماضي كتبت خطة مشروع استبدال 30 عاما COBOL.العميل كان يميل نحو جافا.أنا نموذج أولي المنقحة نموذج البيانات في بيثون باستخدام جانغو كجزء من جهود التخطيط.يمكنني demo جوهر المعاملات قبل أن يتم التخطيط.

ملاحظة:كان أسرع إلى بناء نموذج واجهة المشرف في جانغو من خطة المشروع ككل.

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

كما فعلت الشيء نفسه الأساسية "النموذج في جانغو" ل VB تطبيقات سطح المكتب التي تحتاج إلى أن تصبح تطبيق ويب.لقد بنيت هذا النموذج في جانغو, تحميل البيانات القديمة ، وتشغيلها في غضون بضعة أسابيع.اعتدت أن نموذج العمل لتحديد بقية تحويل الجهد.

ملاحظة:كان لدي عمل جانغو تنفيذ (نموذج مشرف صفحات فقط) التي اعتدت على خطة تبقى من الجهد.

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

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

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

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

المبادئ العامة التي عملت بالنسبة لي:

  1. رمي بعيدا من التعليمات البرمجية التي لا تستخدم أو علق بها
  2. رمي بعيدا كل التعليقات التي ليست مفيدة
  3. تعريف طبقة الهرمي (نماذج منطق الأعمال ، عرض/تحكم المنطق, عرض المنطق ، إلخ.) التطبيق الخاص بك.هذا قد لا يكون واضحا جدا قطع العمارة بل ينبغي أن تساعدك على التفكير في أجزاء مختلفة من التطبيق الخاص بك وتساعدك على أفضل تصنيف التعليمات البرمجية الخاصة بك.
  4. إذا كان هناك شيء صارخ ينتهك هذا التسلسل الهرمي ، تغيير الإساءة إلى رمز.نقل التعليمات البرمجية حولها ، رمز في مكان آخر ، إلخ.في نفس الوقت ضبط بقية التطبيق الخاص بك لاستخدام هذا الرمز بدلا من القديم.رمي القديم بعيدا اذا لم تستخدم بعد الآن.
  5. تبقى لكم واجهات برمجة التطبيقات بسيطة!

تقدم يمكن أن تكون شديدة البطء ، ولكن ينبغي أن يكون يستحق كل هذا العناء.

لا أنصح JScript التي هي بالتأكيد الطريق أقل سافر.ASP.NET MVC تنضج بسرعة, و أعتقد أنك يمكن أن تبدأ الهجرة إلى ذلك ، في الوقت نفسه تكثف على ASP.NET إطار MVC كما استكماله يأتي من خلال.وثمة خيار آخر هو استخدام شيء من هذا القبيل ASP.NET ث/دون سرعة الصوت أو NHibernate.

لا تحاول أن تذهب 2.0 ( المزيد من الميزات ثم موجود حاليا أو المقرر) بدلا من بناء منصة جديدة بهدف حل القضايا الراهنة مع رمز قاعدة (الصيانة/السرعة/wtf) والذهاب من هناك.

مكان جيد للبدء إذا كنت تفكر في الانتقال إلى الثعبان هو كتابة الخاص بك واجهة المسؤول في جانغو.هذا وسوف تساعدك على الحصول على بعض مكامن الخلل عملت بها من حيث الحصول على الثعبان في تشغيل IIS (أو إلى الهجرة إلى أباتشي).من الذي يتكلم, أوصي isapi-wsgi.انها أسهل طريقة للحصول على وتشغيلها مع IIS.

أنا أتفق مع مايكل بريور " و " جويل أنها دائما فكرة أفضل لمواصلة تطوير البرمجية الموجودة في قاعدة بدلا من إعادة كتابة من الصفر.وعادة ما تكون هناك فرص فقط إعادة كتابة أو إعادة العامل بعض مكونات الأداء أو المرونة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top