Миграция (монолитный) классический ASP на ASP.Net - PullRequest
4 голосов
/ 12 ноября 2009

В течение многих лет у меня была цель перейти с ASP / VBScript на «лучший» язык - я бы предпочел C #, поскольку у меня есть навыки в C - но я бы тоже рассмотрел другие языки (включая PHP и т. Д., Поэтому не только DotNet)

Цель состоит в том, чтобы иметь кодовую базу на языке, который делает для нас больше. Я ненавижу отсутствие типизации данных в VBScript, я хотел бы иметь ряд различных «контейнерных объектов» - а не просто объект Dictionary и т. Д. - на самом деле, я удивляюсь, почему, перейдя с Basic на C в 80-х годах, и затем через C ++ через некоторое время мне удалось переместиться «назад» в Basic на 00.

(Я мог бы запрограммировать объекты-контейнеры в VBScript, но мой инстинкт заключается в том, что они будут работать медленно; у нас есть значительный кэш «фрагментов» HTML, используемых при рендеринге страницы, объект приложения ASP является довольно тупой инструмент!)

Мой ASP / VBScript - это одно большое приложение, которое по сути является «движком» для доставки веб-контента.

Прошло много лет, и теперь код ASP меняется редко. (Так что мне вообще нужно оправдать его перемещение или просто жить с VBScript «навсегда»)

Управляется данными из базы данных MS SQL.

Существует только одна страница .ASP (составленная из нескольких включаемых файлов).

На основе параметров строки запроса шаблоны скинов и CMS для страницы загружаются из базы данных и запускаются подходящие базы данных Sprocs для сбора данных, которые объединяются в шаблоны CMS.

Данные о странице (методы использования и т. Д.) Также извлекаются из базы данных, вместе с информацией о правах доступа и т. Д.

Из того, что я прочитал, некоторые вещи могут облегчить миграцию:

Сеансы ASP не используются - cookie-файл сеанса используется для извлечения данных сеанса из БД (поэтому я мог бы легко разделить сессию пополам с ASPX

VBScript использует OPTION EXPLICIT, поэтому все переменные предопределены.

Весь вывод осуществляется через Response.Write (фактически большая часть содержимого объединяется в одну переменную, а затем выводится). Нет никакого сочетания HTML и <% кода сервера%>.

У меня есть несколько классов VBScript, но их немного.

У меня есть много функций VBScript и несколько подпрограмм.

У меня есть набор тестов. Это захватывает снимки экрана из браузера и графически сравнивает их с основными изображениями - таким образом, у меня есть возможность сделать регрессионный тест.

У меня нет ресурса для полной перезаписи; поддержка существующего кода должна продолжаться во время миграции; но, сказав, что 99% нашей работы выполняется в CMS или SQL Sprocs, поэтому изменения в коде ASP происходят нечасто.

Я прочитал об утилите MS для переноса ASP-кода в VB.NET. Учитывая, что мой код на 100% состоит из VBScript и не содержит смеси HTML / Script, я был бы признателен за мнение о том, поможет ли это мне много или мало?

Я был бы рад провести рефакторинг STAYING IN VBscript с целью облегчения перехода на DotNet в дальнейшем (но мне нужно знать, каковы были мои цели в этом :)). Я мог бы, например, переместить некоторые / все функции в COM-объект и, возможно, сделать это по частям?

Спасибо за вашу помощь

Ответы [ 2 ]

5 голосов
/ 12 ноября 2009

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

PHP даст вам ту же проблему вариантов типов, но даст вам мир вариантов и вариантов, которые делают ASP classic похожим на детскую игрушку. Из коробки PHP делает все, что мне когда-либо нужно было делать.

ASP.net - БОЛЬШАЯ платформа. Понимание этого правильно и полностью не легкая задача, и это очень часто удивляет меня. он пытается сделать что-то для разработчиков, поступающих из среды форм, автоматически, что становится очень навязчивым, когда вы используете очень точную методологию рендеринга, как вы это делаете. Я постоянно сражался с этой технологией, пока не появился ASP.net MVC. Это лучше подходило мне из-за того, как оно работало и делало то, что я просил, и ничего более. C # - это потрясающий язык, с блестящими функциями и каркасом DOT.net, который позволяет вам делать все что угодно, если вы можете просто найти нужные части. Его так много, что вы будете время от времени писать что-то, что уже было сделано во фреймворке, только для того, чтобы найти его сразу после завершения собственной реализации.

На самом деле миграция может привести к некоторым интересным проблемам. Даже если вы МОЖЕТЕ запустить страницу ASP.net, очень похожую на классическую страницу ASP, вы потеряете многие преимущества среды, как это задумано. При этом я провел некоторый тест на предмет миграции рассматриваемого сайта на ASP.net и сумел обойти большинство камней преткновения и пришел к выводу, что такая миграция на самом деле будет «простой работой». Огромное количество человеко-часов, которое потребовалось бы для такой миграции, хотя сделало обязательство невыполнимым.

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

Я не видел инструмента конвертации ASP в ASP.net, о котором вы говорите, но хотел бы получить ссылку на него.

Если вы остаетесь в VBScript и не знаете о проекте AX (ASP Xtreme Evolution) здесь Я настоятельно рекомендую изучить его для того, чтобы преодолеть некоторые из классических "ограничений ASP" "и для библиотеки функций, которые она предоставляет.

1 голос
/ 13 ноября 2009

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

Хотя я ничего не слышал от Microsoft, не может пройти много лет, прежде чем они решат полностью отказаться от классического ASP.

...