Какие существуют инструменты для преобразования приложения Delphi 7 в C# и инфраструктуру .Net?[закрыто]
Вопрос
Я поддерживаю старое приложение только для ПК, написанное на Delphi 7.Хотя в прошлом Delphi мне очень хорошо служил, сейчас я использую его только для этого одного приложения и чувствую, что мои навыки в этом языке ухудшаются.Его синтаксис слишком отличается от моих «повседневных» языков Java/Ruby, поэтому мне требуется больше времени, чтобы освоиться в написании нового кода, к тому же он настолько старый, что я не использовал много интерфейсИтак, код не управляется, и теперь он кажется мне древним!
Многие из моих пользователей переходят на Vista, которая может запускать приложение в режиме совместимости или может иметь проблемы с GPF в зависимости от того, как их компьютер настроен их ИТ-отделом, поэтому мне приходится проводить некоторое обслуживание приложения.Мне интересно, стоит ли мне перейти к более знакомому стеку.
Существует ли автоматизированный инструмент, который выполнит всю работу по преобразованию базы кода в C#, оставив мне возможность сконцентрироваться на преобразовании любых нестандартных компонентов?Я использую встроенный компонент базы данных под названием Абсолютная база данных который совместим с BDE и использует стандартный SQL, а также собственный компонент HTML-браузера Delphi, который можно заменить чем-то из мира Microsoft.
Насколько хороши эти инструменты преобразования?
Решение
Мне неизвестны какие-либо автоматизированные инструменты для такого преобразования.Лично я бы посоветовал вам придерживаться Delphi, возможно, просто обновиться до новой версии.Я видел пару DOM-кодов, которые пытались преобразовать Delphi в C#, но это не решает проблему библиотеки.
CodeGear (формально Borland) имеет инструмент для переход с C# на Delphi это работает нормально.Я предполагаю, что инструменты, работающие в другом направлении, будут работать так же (требуя большого количества редактирования).Вот шведский инструмент, который работает по тому же принципу CodeDOM. Delphi на C# (и ряд других языков).Есть и другие, я просто сейчас не могу их найти.
Другой вариант — перейти на более новую версию Delphi для .NET и таким образом перенести свой код на .NET.Как только вы заработаете в Delphi для .NET (что будет довольно просто, за исключением встроенной БД, если у них нет версии .NET), вы можете использовать .NET-отражатель и Дизассемблер файлов переверните IL на C#.Вы по-прежнему будете использовать VCL, но вместо Object Pascal можете использовать C#.
Другим аналогичным решением было бы портировать его на Кислород от RemObjects.Я считаю, что у них есть путь миграции Delphi Win32 на WinForms.Затем используйте .NET-отражатель и Дизассемблер файлов переверните IL на C#.
Короче говоря, простых ответов нет.Языковая миграция проще, чем миграция библиотек.Во многом это зависит от того, какие сторонние компоненты вы использовали (помимо AbsoluteDatabase) и выполняли ли вы какие-либо вызовы Windows API непосредственно в своем приложении.
Другой совершенно другой вариант — поиск оффшорной команды для поддержки приложения.Вероятно, они смогут сделать это дешево.Вы могли бы найти кого-то внутри страны, но это, без сомнения, обойдется вам дороже (хотя, учитывая падающий доллар и плохой рынок труда, никогда не знаешь наверняка…..)
Удачи!
Другие советы
Был научный отчет Джона Бранта об успешном преобразовании проекта Delphi объемом 1,5 миллиона строк в C#.Он написал парсер Delphi, генератор C# и множество правил преобразования для AST.Постепенное расширение набора правил, ежедневная сборка, множество модульных тестов и некоторое переписывание сложных частей Delphi позволили ему с командой из четырех человек, среди которых были некоторые первоначальные разработчики с глубокими знаниями Delphi и C#, перенести программное обеспечение за 18 месяцев.Поскольку Джон Брант является первоначальным разработчиком браузера для рефакторинга и комплекта компилятора SmaCC, вы вряд ли сможете двигаться так быстро.
Многие из моих пользователей переезжают в Vista, которая может запустить приложение в режиме совместимости или могут иметь проблемы с GPF в зависимости от того, как их компьютер настроен их ИТ -отделом, поэтому я должен выполнять некоторое обслуживание в приложении.Мне интересно, стоит ли мне прыгнуть в более знакомый стек.
Если вы не делаете что-то нестандартное, приложения D7 должны нормально работать в Vista.
Что касается преобразования в C#, я думаю, что большинство инструментов преобразования будут пустой тратой времени.Лучшим подходом может быть переписать приложение с нуля.
Простого ответа нет, но имейте в виду, что вариант языка Delphi.net предназначен для среды выполнения .net и что разные языки в .net могут тесно взаимодействовать.
Вы можете попробовать скомпилировать его в Delphi.Net, разбивая его на разные сборки, а затем конвертируя сборки вручную одну за другой.Reflector может помочь в обратном проектировании скомпилированного кода в скелет кода C# - эквивалент, но без комментариев, имен внутренних переменных и т. д.
С другой стороны, Delphi.net может подойти для этого проекта.
Но если у вас нет хорошего набора тестов (думаю, что нет, учитывая современное состояние Delphi 7), вы будете вносить ошибки.