Вопрос

Есть ли какие-нибудь советы о том, как перенести существующее бизнес-приложение Delphi 7 на .NET 2.0 в Visual Studio 2005?

Visual Studio 2005 уже куплена, компания хочет отойти от инструментов Borland/Codegear.

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

Существует обширная бизнес-логика, распределенная по типам Delphi в пользовательском интерфейсе, а также во многих хранимых процедурах SQL Server 2000.Еще одной целью является перемещение большей части хранимой логики процедур в классы .NET.

Чтобы уменьшить влияние на клиентов, по возможности предпочтительнее использовать поэтапный подход, а не полное переписывание/преобразование.Заранее спасибо.

[Обновление] Был ли у кого-нибудь опыт (хороший, плохой или неприятный) использования Managed VCL для сценариев такого типа?

Это было полезно?

Решение

Я работал в компании, которая переходила с Delphi на WPF/.Net примерно в 2007 году.Мы попробовали поэтапный подход.Было больно.Мы всегда сталкивались с тонкими ошибками во взаимодействии.Вызов из Delphi в WPF или Winforms и обратно является болезненным.Если различные элементы управления пользовательского интерфейса и окна вашего приложения часто взаимодействуют друг с другом, я думаю, вы испытаете серьезные проблемы роста.

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

Я бы также предложил перейти на .Net 2008.Почему вы выбираете технологию, которой почти 4 года (VS 2005)?Я считаю, что переход на .Net 2.0, когда .Net 3.5 очень стабилен, является очень и очень плохим бизнес-решением.Единственная веская причина, по которой я когда-либо мог бы представить руководству поддержку .Net 2.0, — это поддержка Windows 2000.У вас еще есть клиенты на Win2k?Будут ли у вас еще клиенты на Win2k к моменту завершения преобразования?Есть ли у вас клиенты, которых вы не можете убедить перейти на XP или Vista?.Net 3.0 и 3.5 не поддерживаются в Win2k.Это единственный недостаток, о котором я могу думать.

.Net 3.5 и C# 2008 предлагают значительные преимущества для вашей компании.У вас есть ряд возможностей языка, которые ускорят время разработки по сравнению с C# 2.0.У вас есть WPF, который значительно превосходит Winforms.Я бы сказал, что вы можете разработать ту же серую Windows, которую вы получили бы в Winforms с WPF, разрабатывать их быстрее, а когда вам захочется чего-то приятного для глаз, вы будете использовать технологию, которая может легко его предоставить.Если вы изучаете новую оконную платформу для этого преобразования, почему бы не инвестировать в изучение новых вещей?

Также скажите, пожалуйста, что вы на самом деле не покупали VS 2005.Вы можете купить MSDN универсальный лицензию примерно по той же цене и получите все продукты Microsoft, связанные с разработкой.Купите его у стороннего производителя и получите хорошую скидку.

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

Другие советы

Это звучит как действительно плохая идея мне.

Есть ли какое-либо технологическое преимущество для вашего продукта в .NET, или стать магазином Microsoft — это в основном политическое решение?С точки зрения клиент-сервера Delphi довольно сложно превзойти.Я использовал VS2005/8, и он действительно не так хорош, как Delphi, для разработки Win32.Но если вы собираетесь в будущем перейти на Интернет, у VS есть определенные преимущества.

Если упрямые бизнесмены просто отказываются больше использовать Delphi, то KiwiBastard прав, IMO.Сначала преобразуйте в Delphi.NET, а затем перейдите оттуда на VS2005.Или 2010 год, поскольку это более реалистичный график :)

Раньше я работал в компании, которая хотела перейти с Delphi на C#.NET, потому что .NET — это все крутой и блестящий.Они привлекли еще несколько разработчиков с большим опытом работы с C#, и в итоге портирование приложения на C# заняло в три раза больше времени, чем написание его в первый раз на Delphi с очень небольшой дополнительной окупаемостью (несколько в процессе были добавлены новые функции).Плюс клиенты были недовольны производительностью приложения или пользовательским интерфейсом.

Исследование за примером показывает, что переписывать — плохая идея.(Наконечник шляпы когус)

Если вам необходимо перейти на .NET (да, я знаю, это не вы принимали решение, кто-то с меньше информации сделал), то я бы предложил использовать Делфи для .NET или RemObjects Кислород.Последний является плагином Visual Studio.Но даже Марк Хофман, главный архитектор программного обеспечения RemObjects Oxygene сказал, что мигрировать прекрасно работающее приложение на .NET «просто так» — плохая идея.

Если вы можете дождаться Delphi Prism, который также является надстройкой для Visual Studio и, как ожидается, выйдет позднее в этом году.

Частичное преобразование будет означать изменение собственного кода Delphi для использования COM, чтобы сторона .NET могла сосуществовать с Delphi (или, возможно, с использованием какой-либо другой технологии - трудно сказать).

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

Просто мысль.

Отказ от инструментов CodeGear/Borland по сути исключает любое решение на основе Delphi .NET и полностью переписывает ваше приложение.

Надеюсь, мой ответ ниже поможет вам принять решение.

По опыту (после переписывания приложения Delphi с командой людей) все сводится к одному из двух вариантов, представленных ниже.

Но сначала предупреждение:вы потратите, по крайней мере, все усилия на разработку, необходимые для написания вашего текущего приложения Delphi.

В нашем случае эти усилия были оправданы, поскольку старое приложение Delphi (которое на самом деле было Kylix) по разным причинам прекратило свое существование.Наше переписывание состояло из двух частей:переписать с ограниченным дополнительным функционалом, за которым следует много дополнительного функционала (дизайн первой части уже учитывал вторую часть).

Вернемся к вашему выбору:

1- полная перезапись на C# или VB.NET в Visual Studio.

2- частичное повторное использование существующего кода бизнес-уровня Delphi с использованием Oxygene из RemObjecs (плагин Visual Studio с синтаксисом, очень похожим на синтаксис Delphi).CodeGear скоро (вероятно, до конца 2008 года) предложит Prism, которая также будет интегрирована в Visual Studio.

Поскольку доступ к данным и пользовательский интерфейс .NET полностью отличаются от Delphi, вам придется делать это с нуля (как для сценария 1, так и для сценария 2).Visual Studio 2008 предлагает множество преимуществ по сравнению с Visual Studio 2005.

Невозможно выполнять эту миграцию постепенно, поскольку здесь вы выполняете полную смену платформы, это подход «все или ничего».

Оба сценария потребуют значительного количества времени (даже если у вас есть опыт работы с Delphi, привыкание к миру .NET займет время).

Visual Studio может взаимодействовать с Crystal Reports и хорошо сочетается с SQL Server.

Поскольку Visual Studio 2008 предлагает множество преимуществ (не только .NET 3.5, но и производительность), вам лучше использовать именно это.Что касается пользовательского интерфейса, вам необходимо сделать сбалансированный выбор между WinForms (также известным как Windows Forms) и Windows Presentation Foundation (также известным как WPF).

Если это переписывание 1 к 1, возможно, вы захотите использовать WinForms, поскольку он знаком вам.Вам, вероятно, придется использовать некоторые сторонние компоненты, чтобы ваш пользовательский интерфейс работал;DevExpress здесь является хорошим выбором, поскольку у них есть схожие компоненты в Delphi и Visual Studio.

Но если вы хотите получить удовольствие от будущего, вы можете рассмотреть WPF.Будьте готовы к более сложному обучению, чем WinForms, поскольку он сильно отличается от того, к чему вы привыкли.

Если вы решите остаться с Delphi, возможно, вам захочется изучить VCL для Интернета (также известный как IntraWeb) и Delphi 2009 (в мире Delphi многое изменилось с тех пор, как 6 лет назад был анонсирован Delphi 7).

Удачи вам в выборе!

--джероен

Я бы предложил посмотреть Hydra от RemObjects.По сути, он использует для вас com-интерфейс и предоставляет шаблон наблюдателя для взаимодействия между вашим приложением Delphi и .Net.Вы можете отображать формы .Net на панелях внутри вашего приложения Delphi.Это обеспечивает удобный путь миграции, при котором вы постепенно заменяете свой код Delphi по мере переноса функций в .Net.

Для меня вопрос будет таким:какой язык вы бы использовали?Я надеюсь, что C#, а не VB.Net.(При всей этой неуклюжей политике в этом варианте использования это никоим образом не ясно.)

Следующее, что вы, вероятно, услышите, это то, что существуют конвертеры, которые помогут вам в этом.Мы только что провели оценку таких преобразователей (из Delphi 7 в C#) и остались очень довольны!расстроенный.

Могу ли я предложить компромисс?А как насчет Delphi Prism?Это Delphi в VS2008.Конечно, у вас все еще есть Delphi и, следовательно, Codegear, но у вас также есть VS (как и ожидает от вас ваша компания).

Был научный отчет Джона Бранта, Дона Робертса и др. об успешном преобразовании проекта Delphi объемом 1,5 миллиона строк в C#.Он написал парсер Delphi, генератор C# и множество правил преобразования для AST.Постепенное расширение набора правил, ежедневная сборка, множество модульных тестов и некоторое переписывание сложных частей Delphi позволили ему с командой из четырех человек, среди которых были некоторые первоначальные разработчики с глубокими знаниями Delphi и C#, перенести программное обеспечение за 18 месяцев.Поскольку Джон Брант и Дон Робертс являются первоначальными разработчиками браузера для рефакторинга и комплекта компилятора SmaCC, вы вряд ли сможете двигаться так быстро.

Хотя это были значительные инвестиции, они далеко не «того же размера, что и первоначальная застройка».Авторы отмечают, что прямое переписывание без инструментов или с помощью одноразового инструмента, как отмечает Йерун, с большой вероятностью приведет к такому результату, особенно если принять во внимание новые требования.

Авторы провели масштабный рефакторинг, оставаясь на той же платформе для другого проекта, полностью заменив инфраструктуру персистентности.Это может быть актуально для старых проектов (BDE?).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top