Подтвердить что ты не робот

Рекомендации по рефакторингу классического ASP?

Мне нужно сделать какое-то значительное развитие в большой, старой, спагетти-системе ASP. Я давно ушел из ASP, сосредоточившись на развитии Rails.

Одним из основных шагов, которые я предпринял, является рефакторинг страниц в подсистемы и функции со значимыми именами, так что, по крайней мере, это легко понять @в верхней части файла, что обычно происходит.

Есть ли подходящая MVC-инфраструктура для ASP? Или лучшая практика в том, как, по крайней мере, вывести бизнес-логику из представлений? (Я помню, что многие из них включены в этот день - это еще способ сделать это?)

Мне бы хотелось получить часть модульного тестирования для бизнес-логики, но, возможно, я слишком много спрашиваю?

Обновление:

В проекте более 200 сценариев ASP, несколько тысяч строк;) UGH!

Мы можем выбрать "большой переписать", но до тех пор, когда я меняю страницу, я хочу потратить немного дополнительного времени на очистку спагетти.

4b9b3361

Ответ 1

Предположения

Документация для классической системы ASP довольно легкая.

Руководство не ищет перезаписи.

Поскольку вы делаете рубины на рельсах, ваш (VB/С#) ASP.NET в лучшем случае проходит.

Мой опыт

Я тоже унаследовал классическую систему ASP, которая во всех отношениях использовалась ex excel-vba. Было много этого материала <font size=3>crap</font> (а иногда и отсутствующих закрывающих тегов, Argggh!). В течение 2,5 лет я добавил систему безопасности, общую библиотеку, CSS + XHTML и смог убедить эту вещь в проверке xhtml1.1 (например, без надлежащего типа mime) и построил довольно надежную и ajaxy систему отчетности, которая ежедневно используется 80 пользователями.

Я использовал jEdit с cTags (как упоминалось выше jamting) и связкой других плагинов.

Мой совет Попробуйте создать главный файл include, из которого можно импортировать все, что обычно используется. Такие вещи, как вход/выход из системы, доступ к базе данных, веб-службы, javascript-библиотеки и т.д.

Использовать классы. Они ультра-примитивны (нет наследования), но, как говорится, они могут быть удобными.

Отметьте сценарии правильно.

Комментарий

Запись внешнего документа архитектуры. Я лично использую LyX, потому что это мозг мертв, чтобы создать красиво отформатированный pdf файл, но вы можете использовать все, что вам нравится. Если вы используете wiki, установите надстройку graphviz и используйте ее. Это очень легко сделать быстрыми диаграммами, которые можно легко модифицировать.

Поскольку я понятия не имею, насколько существенны улучшения, я предлагаю, чтобы хороший документ высокого уровня для среднего уровня архитектуры был весьма полезен при планировании улучшений.

В тестах модульной бизнес-логики единственное, что я нашел, - это настроить слушателя xml-rpc в asp, который импортирует основную библиотеку и предоставляет функции (не подпрограммы) в любой из основных вспомогательных библиотек, а затем создайте отдельно систему unit test на языке с лучшей поддержкой материала, который вызывает функции ASP через xml-rpc. Я использую python, но я думаю, что Ruby должен сделать трюк. (Имеет ли это смысл?). Самое приятное в том, что человеку, написав единично-тестовую часть программного обеспечения, не нужно даже смотреть на код ASP, если у них есть достойные описания функций для вызова, поэтому они могут быть кем-то рядом с вами.

В sourceforge есть проект под названием aspunit, но последний релиз был в 2004 году и отмечен как неактивный. Никогда не использовал его, но он был чистым vbscript. Беглый взгляд на код говорит мне, что, похоже, авторы знали, что они делают.

Наконец, если вам нужна помощь, у меня есть доступность для работы по удаленной работе по контракту (возможно, максимум 8 часов в неделю). Следуйте по ссылке для контактной информации.

Удачи! НТН.

Ответ 2

Поскольку полная переработка рабочей системы может быть очень опасной, я могу дать вам небольшой совет: настройте буйные теги, ctags, в свой проект. Таким образом, вы можете перейти к определению функции и sub easy, что, по моему мнению, помогает.

Отделить логику от "представлений". VBScript поддерживает некоторую OO с классами. Я склонен писать классы, которые выполняют логику, которую я включаю в asp-страницу, которая действует как "представление". Затем я соединяю представление с классом, например Username: <% = MyAccount.UserName% > . Класс MyAccount также может иметь такие методы, как MyAccount.Login() и т.д.

Вид примитива, но по крайней мере вы можете капсулировать некоторый код и скрыть его из HTML.

Ответ 3

Моим советом было бы продолжать рефакторинг, классический ASP поддерживает классы, поэтому вы должны иметь возможность перемещать все, кроме кода отображения, в включенные ASP файлы, которые просто содержат классы. См. Эту статью о переходе от старомодного asp к ASP.NET

Рефакторинг ASP

Что касается будущего направления, я бы не стремился к веб-формам ASP.NET, вместо этого я бы пошел на новую платформу MVC для Microsoft - надстройку ASP.NET). Это будет намного проще переноситься на это из классического ASP.

Ответ 4

Я использую ASPUnit для модульного тестирования некоторых наших классических ASP и считаю, что это полезно. Он может быть старым, но также ASP. Это просто, но он работает, и вы можете его настроить или расширить, если это необходимо.

Я также нашел Эффективно работая с устаревшим кодом Майкла Перса, чтобы быть полезным руководством для поиска способов получить часть этого старого проверяемый код.

Включение файлов может помочь, пока вы держите его простым. В какой-то момент я попытался создать include для каждого класса, и это не получилось слишком хорошо. Мне нравится, что пара основных включает в себя общую бизнес-логику, а для сложных страниц иногда включает логику для каждой из этих страниц. Я полагаю, вы могли бы сделать MVC с аналогичной настройкой.

Ответ 5

Есть ли вероятность, что вы можете перейти от ASP к ASP.Net? Или вы смотрите на сохранение его в классическом ASP, но просто чистите его. Если это вообще возможно, я бы рекомендовал перемещать как можно больше, перейдя на .Net. Похоже, вы все равно можете переписывать/реорганизовывать много кода, поэтому переход на .Net может не быть большим количеством дополнительных усилий.

Ответ 6

Предположительно, кто-то написал большую или всю систему, которую вы сейчас поддерживаете. Ищите обычные вредные привычки (повторный код, переменные, которые слишком широко охвачены, вложенные операторы и т.д.) И рефакторинг, как и любой другой язык. Следите за повторяющимися вещами в одном файле или в разных файлах и отвлеките их на функции.

Если код был написан/поддерживается различными людьми, могут возникнуть некоторые проблемы с непоследовательным стилем кодирования. Я считаю, что возвращение кода обратно в линию облегчает просмотр вещей, которые можно реорганизовать.

"Тысячи строк длиннее" вызывает подозрение, что могут быть ситуации, когда на одной странице отображаются похожие вещи. И снова вы хотите отвлечь их на отдельные подпрограммы.

В конце концов вы хотите писать объекты, чтобы помочь инкапсулировать такие вещи, как подключение к базам данных, но до того, как вы туда доберетесь, пройдет некоторое время.

Ответ 7

Это очень старый, но не смог удержаться от добавления двух центов. Если вы должны переписать и продолжать использовать классический ASP:

  • используйте JScript! гораздо более мощные, вы получаете наследование, и есть некоторые хорошие побочные преимущества, такие как использование тех же методов для проверки на стороне сервера, как вы используете для клиентской стороны
  • вы можете абсолютно выполнить MVC - я написал структуру MVC, и это было не так много строк кода
  • вы также можете автоматически генерировать классы моделей с небольшим количеством работы. У меня есть код для этого, который работал достаточно хорошо.
  • убедитесь, что вы выполняете параметризованные запросы и всегда возвращаете отключенные записи.

Ответ 8

Разработка программного обеспечения. Практика управления проектами указывает на то, что такие программы требуют ухода на пенсию.

Я знаю, как тяжело это делать правильно, даже больше, когда ответственный менеджер знает sht и боится всего, кроме как возможно.

Но все же. Необходимо начать работу над разработкой нового программного обеспечения. Просто невозможно поддерживать этот навсегда, а лотерее они ждут отставки, тем хуже.

Если у вас нет надлежащей документации по спецификациям/требованиям (я думаю, что ни одно программное обеспечение asp в мире не делает, учитывая хаотичность этих программ для noobatry), вам понадобится группа пользователей, которые знают функции программного обеспечения и менеджер должен отвечать за проверку требований. Вам нужно будет просмотреть каждую функцию и документировать ее требования.

Во время этого процесса вы узнаете больше о программном обеспечении и его бизнесе. Когда у вас будет достаточно информации, вы можете начать разработку нового.