Перенос большого приложения vb6 в веб или winforms. Вам решать!

Я работаю над переносом большого приложения vb6 на .NET. Текущее приложение - это настольное приложение, которое взаимодействует с набором локальных баз данных доступа. В приложении около 200 форм и около 100 таблиц. Экраны в основном сложные. Большинство из них демонстрируют отношения «главный-элемент», множество строк во встроенной электронной таблице и динамически генерируемые элементы управления редактированием.

Они перенесут его на .NET. Я не уверен, захотят ли они это в Интернете или в winforms. Мне кажется, что приложение лучше подходит для winforms. К счастью, базы данных доступа будут заменены сервером sql независимо от выбора.

Мои причины для winforms:

  • Более богатый интерфейс.
  • Кеширование клиента
  • Более быстрое развитие. Winforms для меня продуктивен, хотя ASP.NET на световые годы производительнее классического ASP. Я бы предпочел работать в winforms.
  • Может отображать больше данных и тратить меньше времени на управление состоянием.

Я планирую выделить уровень бизнеса / данных в отдельную библиотеку. Бизнес-объекты в библиотеке смогут использоваться Winforms или веб-приложением.

Я думаю, что если мы сначала перенесем на winforms и четко разделим UI и бизнес-логику, я смогу повторно использовать бизнес-логику в веб-версии позже. Учитывая, что уровень бизнеса / данных находится в отдельной библиотеке без зависимостей пользовательского интерфейса.

В конце концов, это не мое решение, но я хотел бы услышать ваш опыт переноса больших приложений Windows на asp.net.

Каким был ваш опыт переноса большого настольного приложения на asp.net? Как бы вы подошли к такому проекту? Вы бы предпочли перенести это приложение на winforms или asp.net? Почему?

Спасибо! Стив


person Steve    schedule 28.02.2009    source источник


Ответы (5)


Я бы посоветовал вам делать перенос поэтапно, чтобы облегчить переход. Первым этапом будет перенос с рабочего стола VB6 на рабочий стол .NET (формы выигрыша).

Затем, на втором этапе, если все еще необходимо, вы перемещаете весь рабочий стол .NET или его части в графический интерфейс ASP.NET.

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

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

Например, у вас могут быть все более простые экраны, представленные на веб-сайте ASP.NET, с дополнительным приложением WindowsForms, содержащим более сложные экраны, которые пользователи могут загружать по мере необходимости. Важно отметить, что оба они будут использовать одни и те же библиотеки бизнес-логики, в основном это просто разные интерфейсы для одного и того же приложения.

ASP.NET (или веб-разработка в целом) требует совершенно другого мышления разработчика при работе с состоянием, кроссбраузерностью, html / css и т. Д.

Недавно я работал над переносом / миграцией большого настольного приложения Delphi на .NET. Целью было перейти на ASP.NET, однако это полностью провалилось, потому что существующая команда имела ограниченный опыт веб-разработки и пыталась просто повторно реализовать приложение dektop с помощью ASP.NET. Я бы сказал, что это гораздо больший риск по сравнению с повторным созданием экранов в Windows Forms, по крайней мере, конечный результат будет пригоден для использования и принесет конечным пользователям некоторую ценность.

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

Таким образом, «идеальным» является перенос бизнес-логики и правил в .NET таким образом, чтобы впоследствии вы могли просто «подключить» пользовательский интерфейс. Это может быть намного проще сказать, чем сделать, но это цель, к которой я обычно стремлюсь.

person Ash    schedule 28.02.2009
comment
Я не согласен с переносом сначала на winform, а затем на веб. У кого будет бюджет, и если вы знаете, что ваша цель - ASP.NET, идите туда напрямую. - person Mitch Wheat; 28.02.2009
comment
Мы не знаем, что целью является ASP.NET, вот в чем суть вопроса! Кроме того, приложение для форм выигрыша кажется лучшим выбором, судя по деталям, предоставленным SteveB. - person Ash; 28.02.2009
comment
Кроме того, если у вас есть инкапсулированные бизнес-правила, это вообще не будет переносом с Winndows Forms на APS.NET. У вас есть набор сборок бизнес-логики, которые затем могут использоваться любым интерфейсом .NET, включая ASP.NET, если хотите. - person Ash; 28.02.2009
comment
Идея Эша состоит в том, чтобы снизить риск, что почти всегда является хорошей идеей в большом проекте. Конверсии и миграции часто сопряжены с риском, поскольку люди склонны оценивать их очень оптимистично. - person MarkJ; 23.07.2009

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

При переходе на winforms возникнет большое искушение и давление просто «перенести экран на экран», тогда как если вы перейдете в Интернет, у вас будет возможность провести рефакторинг и улучшить его на более фундаментальном уровне.

Моя компания в настоящее время переносит довольно большое устаревшее приложение VB6 / Access на ASP.Net, и с помощью AJAX (а теперь и Silverlight) в наши дни можно получить действительно высокий уровень визуального качества и сложности пользовательского интерфейса в Интернете. Есть очевидные преимущества с точки зрения доступа пользователей и развертывания.

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

person Guy Starbuck    schedule 28.02.2009
comment
Это зависит от опыта и качества команды. Переход с рабочего стола VB6 на Web / Silverlight - большой скачок. Я видел это, когда работал над переходом с настольного приложения Delphi на .NET. Сначала они пошли по веб-маршруту, но результат был ужасен, они попытались применить графический интерфейс рабочего стола к сети. - person Ash; 28.02.2009

Все, что я могу сказать, это то, что вам не следует НЕ начинать заново! В одном из подкастов StackOverflow речь шла о том, следует ли переписывать приложение, чтобы получить преимущества нового языка, - нет! В качестве примера Джоэл Спольски привел Borland C ++ Builder. Они проиграли Microsoft VC ++, потому что начали с нуля. Затем Джефф Этвуд сказал, что, хотя WordPress написан на PHP (на мой взгляд, это не очень хороший язык), общая идея сработала.

Главный момент:
Не начинайте заново, потому что вы потеряете весь опыт, который приобрел, опираясь на прочный фундамент.

person Kredns    schedule 28.02.2009

Во-первых, Winforms мертв. Зачем кому-то начинать новую настольную программу с WinForms, мне непонятно, когда WPF отсутствует почти два года. Зачем переводить клиента с одной технологии (VB6), которая очень и очень устарела, на другую, которая очень скоро устареет? Пожалуйста, не поймите это неправильно, но если вам не нужно поддерживать более старые версии Windows, чем XP, я думаю, что на самом деле безответственно начинать проект WinForms в 2009 году. Вот недостатки по сравнению с WPF:

  1. XAML, WPF и Silverlight находятся в центре внимания, а Microsoft.
  2. WPF намного мощнее с графической точки зрения, чем Winforms (по крайней мере, в том, что касается простоты разработки очень богатого пользовательского интерфейса).
  3. Привязка данных в WPF - это качественный скачок вперед по сравнению с Winforms; это сэкономит ваше время.
  4. WPF стабилен, и его производительность значительно выросла по сравнению с несколькими последними SP и версиями.
  5. Как и все старые технологии MS, Winforms рано или поздно умрет. Очевидно, теперь это старая технология.

Теперь об ASP.Net. Похоже, что вы конвертируете довольно простое внутреннее приложение. ASP.Net подходит именно для этого. Хотя ASP.Net MVC почти вышла из стадии бета-тестирования, у него еще нет аргументов против ASP.Net, которые есть у WPF против WinForms. Мы используем ASP.Net + jQuery на работе, и он работает очень хорошо. Мы также делаем Silverlight, и вы можете изучить его. Мне очень понравилось работать в нем. Если это внутреннее приложение, вы, вероятно, можете рассчитывать на то, что плагин Silverlight будет установлен во всех ваших браузерах.

Теперь для общих плюсов перехода на WPF vs ASP.Net:

WPF

  1. Упрощенная миграция кода с рабочего стола VB6 в другую среду рабочего стола. Возможно, вы сможете сэкономить большую часть своей логики, хотя ее нужно будет перевести на VB.Net или C #. Вы переходите из одной среды с сохранением состояния в другую. Не так с ASP.Net.
  2. Легче протестировать (особенно если вам нужно поддерживать несколько браузеров).
  3. Возможно, быстрее разрабатывать (особенно если вам нужно поддерживать несколько браузеров).

ASP.Net

  1. Распространять обновления проще, чем настольное приложение (все, что вам нужно сделать, это обновить свой веб-сервер).
  2. При правильном написании может использоваться на самых разных настольных компьютерах и даже на мобильных устройствах.
  3. Может обеспечить большую часть динамической природы настольного приложения с дополнительными усилиями по разработке.
  4. Может использоваться для будущих продуктов, которые могут быть общедоступными.

Удачи с проектом!

person Jason Jackson    schedule 28.02.2009
comment
Потому что они до сих пор не могут заставить шрифты правильно отображаться на 95% используемых сегодня мониторов. - person leppie; 26.03.2009
comment
@leppie, какого черта это имеет отношение к ценам на чай в Китае? Я все равно не уверен, что получу ваш комментарий ... - person Jason Jackson; 31.03.2009
comment
безответственно начать проект WinForms в 2009 году кому, вашим клиентам / пользователям, будущим разработчикам вашего босса? Дай мне передохнуть! Вы когда-нибудь слышали о понимании того, что нужно вашим клиентам на самом деле? Это движет всем остальным, а не выбором новой технологии. Если клиенту требуется графический интерфейс, который может предоставить только WPF, используйте его во что бы то ни стало, в противном случае ответственный шаг - использовать технологию, в которой вы имеете опыт и которую можете использовать для доставки реального продукта вовремя и в пределах затрат. WinForms мертв только в твоих мыслях, друг мой. - person Ash; 24.07.2009
comment
Дай мне передохнуть, Ash1! В то время как потребности клиентов должны быть главной заботой, любой программист, работающий в реальном мире, понимает, что может потребоваться разработать продукт, который отличает вашу компанию, который легче поддерживать в будущем, который легче улучшать и т. Д. не гонять все. Почему stackoverflow не написан на ASP.Net вместо MVC? Нам, как программистам, очевидно, необходимо принимать во внимание множество факторов, в первую очередь, это потребности клиентов и рынка, а многие другие - технические. Мы не принимаем решения в вакууме. Я стою за своим постом. - person Jason Jackson; 25.07.2009

Если вы действительно хотите сойти с ума и не против использовать новейшие технологии, обратите внимание на ASP.NET и Silverlight 3. Посмотрев видео о Mix 09, можно увидеть несколько отличных примеров, касающихся этого.

Кроме того, приложение Silverlight можно запускать из браузера, таким образом, обеспечивая возможность работы с рабочим столом, но с преимуществами обновления при каждом обновлении кода и т. Д. И я лично считаю, что приложения типа Windows (включая Silverlight) подходят. лучше для ввода данных, чем веб-приложения (хотя использование Ajax действительно помогает)

person Gideon    schedule 28.03.2009