Синтаксический анализ HTML-кода, созданного в устаревшем приложении ASP, для создания страниц ASP.NET 2.0. - PullRequest
0 голосов
/ 19 февраля 2009

Один из моих друзей работает над созданием хорошего решения для генерации aspx-страниц из html-страниц, сгенерированных из устаревшего приложения asp.

Идея состоит в том, чтобы запустить старое приложение, захватить вывод html, очистить html с помощью какого-либо инструмента (например, HtmlTidy) и проанализировать его / преобразовать в aspx (используя Xslt или пользовательский инструмент), чтобы существующие элементы html, div , изображения, стили и т. д. аккуратно преобразуются в aspx-страницы (слишком много;)).

Существуют ли какие-либо инструменты / скрипты / утилиты для того же?

Ответы [ 3 ]

2 голосов
/ 19 февраля 2009

Вот что вы делаете.

  1. Определите, что должно делать устаревшее приложение. Запишите сценарии получения страниц, размещения форм, навигации и т. Д.

  2. Написание скриптов, подобных юнит-тестам, для различных сценариев.

  3. Используйте клиентскую библиотеку Python HTTP , чтобы использовать устаревшее приложение в различных сценариях.

  4. Если ваши сценарии работают, вы (а) действительно понимаете устаревшее приложение, (б) можете заставить его выполнять различные действия, которые оно должно делать, и (в) вы можете надежно захватывать страницы ответов HTML.

  5. Обновите ваши скрипты для захвата ответов HTML.

У вас есть страницы. Теперь вы можете думать о том, что вам нужно для ваших страниц ASPX.

  • Отредактируйте HTML вручную, чтобы превратить его в ASPX.

  • Напишите что-нибудь, что использует Beautiful Soup для преобразования HTML в форму, подходящую для ASPX. Это может быть некоторая замена текста или тегов <asp:... тегами.

  • Создайте некоторую другую, более полезную структуру данных из HTML - такую, которая отражает структуру и смысл страниц, а не только теги HTML. Создайте страницы ASPX из этой более полезной структуры.

0 голосов
/ 03 ноября 2009

Я знаю, что это старый вопрос, но в аналогичной ситуации (50 000+ устаревших ASP-страниц, которые должны отображаться в .NET Framework), я сделал следующее.

  1. Создан механизм перезаписи (HttpModule), который перехватывает все входящие запросы и ищет все, что есть на старом сайте.

  2. (в отдельном классе - держите все в порядке!) Используйте WebClient или HttpRequest и т. Д., Чтобы открыть соединение со старым сервером и загрузить обработанный HTML.

  3. Используйте набор инструментов HTML agility ( очень slick), чтобы извлечь интересующий меня контент - в нашем случае это всегда внутри div с классом "bdy".

  4. Добавьте это в кеш - таблицу SQL в этом примере.

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

  1. Страница aspx, созданная специально для отображения устаревшего контента, получает запрос на перезапись и отображает соответствующий контент со старой страницы внутри литерального элемента управления asp.

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

Это становится грязно, когда вам приходится работать с формами, файлами cookie и т. Д., Но все они могут храниться в вашем кэше и передаваться на старый сервер с каждым запросом, если это необходимо. Я также храню даты истечения срока действия контента и другие заголовки, которые я получаю с устаревшего сервера, и обязательно передаю их обратно в браузер при рендеринге кэшированной страницы. Просто не забывайте придерживаться максимально независимого от контента подхода. Вы эффективно создаете веб-прокси на странице, который позволяет IIS отображать старый ASP так, как он хочет, и манипулируете выводом.

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

Удачи!

0 голосов
/ 20 февраля 2009

Только что нашел, что пакет agility для HTML достаточно полезен, так как он понимает C # лучше, чем python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...