Портирование приложения PowerBuilder в .NET - PullRequest
16 голосов
/ 05 мая 2009

У кого-нибудь есть советы по переносу бизнес-приложения PowerBuilder 10 на .NET?

Моя компания рассматривает вопрос о переносе устаревшего приложения PB на .NET (C #), и мне просто интересно, есть ли у кого-нибудь опыт - хороший или плохой - которым вы бы хотели поделиться.

Приложение довольно большое с 10 библиотеками PBL, некоторыми PFC, а также пользовательскими инфраструктурами. Также выполняется большое количество вызовов DLL. Наконец, он использует базу данных Microsoft SQL Server.

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

Ответы [ 9 ]

23 голосов
/ 07 мая 2009

Когда я увидел название, я просто собирался скрыться, будучи известным фанатом PB. Ну что ж. Спасибо за вотум доверия, Бернард.

Моим первым предложением было бы отказаться от языка самообмана. Если я съем половину "облегченного" чизкейка, я все равно потеряю свой пояс. Миграция может занять всего 10 минут. То, что вы будете делать, это переписать . Время должно быть измерено как перезапись. риск должен быть измерен как перезапись. И проектное усилие должно быть измерено как переписывание.

Да, я сказал, что усилия по проектированию. «Миграция» вызывает в воображении образы прокачки кода через какой-то черный ящик с переводом, отражающим оригинал, выходящий с другой стороны. Хотите повторить те же ошибки дизайна, которые были допущены в 1994 году, когда вы жили с в течение многих лет? Даже с кодом отличного качества, я предполагаю, что отличный выбор дизайна в PowerBuilder может быть ужасным выбором дизайна в C #. Пропускает ли прямое преобразование мощь и сильные стороны платформы? Будете ли вы жить с последствиями пренебрежения хорошим дизайном C # в течение следующих 15 лет?


Этот спор в сторону, поскольку вы не упоминаете свою мотивацию для перехода "в .NET", трудно предложить, какие варианты вам могут понадобиться, чтобы снизить риск переписывания. Если ваше руководство просто решило, что разработчики PowerBuilder плохо пахнут и должны быть удалены из офиса, тогда удачи в переписывании.

Если вы просто хотите развернуть Windows Forms, Web Forms, Assembly или Web-сервисы .NET или использовать библиотеки .NET, то, как упоминал Пол, переход на 11.0 или 11.5 может привести вас к этому с усилием, близким к миграция. (Я бы рекомендовал еще раз проверить и убедиться, что у вас есть хороший дизайн для новой платформы, особенно с веб-формами, но это усилие должно быть значительно меньше, чем переписывание.) Если вы хотите развернуть приложение WPF, я знаю, год - это достаточно долгое время, но, возможно, стоит взглянуть на PowerBuilder 12. Правильное использование WPF может поставить PowerBuilder в уникальное и мощное положение.

Если гарантированная перезапись будет в вашем будущем (ливни кажутся более дешевыми), возможно, вы захотите поэтапно преобразовать. DataWindow.NET позволяет взять ваши DataWindows с собой. (Моя любимая теория недели заключается в том, что разработчики PowerBuilder принимают DataWindow как должное до тех пор, пока им не придется воспроизводить все встроенные функции.) Возможность добавления уже существующих, предварительно протестированных, многорядных, прокручиваемых, минимальных Огромный ресурс, печатный, динамический пользовательский интерфейс с привязкой к данным, генерирующий минимальный SQL со встроенной блокировкой логических записей и преобразованием ошибок базы данных в события, в новом приложении - большая задача.

Вы также можете поэтапно выполнить переход, преобразовав код PowerBuilder во что-то, что может быть использовано приложением .NET. Как уже упоминалось, вы можете создавать COM-объекты с PB 10, который у вас есть, но для получения сборок придется перейти на 11.0 или 11.5. Значение этого может зависеть от того, насколько хорошо разделено ваше приложение. Если ваша бизнес-логика проходит через события и функции GUI, а не разделяется на невизуальные объекты (например, пользовательские классы), значение этого может быть сомнительным. Тем не менее, это дизайн faux pas , который, вероятно, следует исправить до полного преобразования в C #; это то, что можно сделать, сохраняя приложение PowerBuilder в качестве предварительного шага к поэтапному, а затем и к полному преобразованию.

Без сомнения, я бы предпочел, чтобы вы остались с PowerBuilder. Если это не удастся, я бы хотел, чтобы у вас все получилось. Просто помните, как только вы сделаете первый укус, вам придётся закончить его .

Удачи в поиске этого ремня,

Терри.


Я вижу, что вы упомянули о переносе "основных компонентов" в .NET для запуска. Как вы уже догадались, я думаю, что поэтапный подход - мудрое решение. Теперь определение «ядро» может быть спорным, но как насчет противоположной точки зрения. Пища для размышлений? (Очевидно, что это была неправильная неделя для начала диеты.) Исходя из того, где сейчас находится PB, было бы трудно разделить ваше приложение между PB и C # по функциональности приложения (например, счета к получению в PB, счета к оплате в C #). Подразделение, которое может работать, - это GUI против бизнес-логики. Как упоминалось ранее, выкачивание бизнес-логики из PB в исполняемые файлы C # уже возможно. Как насчет создания графического интерфейса в C #, когда DataWindows копируется из PB, а бизнес-логика откачивается как COM-объекты или сборки? Иначе говоря, для использования сборок .NET в PB вам придется либо перейти на уровень 11.x и перейти на Windows Forms, либо поместить их в COM-вызываемую оболочку .

.

Или просто обучите своих разработчиков на C # PowerBuilder. Это может быть просто слух, но я слышу, что новая маркетинговая линия PowerBuilder будет «настолько простой, что даже разработчик C # может использовать ее». ; -)

6 голосов
/ 05 мая 2009

Я думаю, что gbjbaanb дал вам хороший ответ выше.

Некоторые другие вопросы, заслуживающие рассмотрения:

  • Является ли это приложение PB10 новым, хорошо написанным приложением PB10, или оно было создано в 1998 году в PB4, а затем постепенно преобразовано в PB10 за эти годы? Хорошо написанное приложение должно иметь приличное разделение между бизнес-логикой и графическим интерфейсом, и вы сможете систематически переносить свой код на .Net. По крайней мере, это должно быть намного проще, чем если бы это было традиционное PB-приложение, и в этом случае вполне вероятно, что у вас будут тонны логики в кнопках, окнах данных, меню и кто знает, что еще. Не невозможно, но труднее переделать.
  • Насколько хорошо работает приложение? Если все в порядке и стабильно, и не нужно много новых функций, то, возможно, не нужно переписывать. Или, как сказал gbjbaanb, вы можете обернуть .Net-обертки вокруг некоторых частей, а затем раскрыть нужную вам функциональность без полного переписывания. Если, с другой стороны, ваше приложение является странным, неприятным, не совсем удовлетворяющим бизнес-потребностям и делает ваших пользователей неэффективными, то у вас может быть необходимость переписать или, возможно, провести серьезный рефакторинг, а затем внести некоторые улучшения. Есть ребята из ПБ, отбывающие наказание, я имею в виду, зарабатывая на жизнь вторым сценарием.

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

Кроме того, не оставляйте залог в этой теме до тех пор, пока не будет опубликован пост Терри Вота. Он в StackOverflow и один из лучших ребят из PB.

4 голосов
/ 05 мая 2009

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

Если вы используете PB 9 или выше, вы можете генерировать COM или .NET библиотеки , которые затем можно использовать в графическом интерфейсе C #. Я бы рекомендовал это переписать на любом новом языке.

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

3 голосов
/ 11 июня 2009

PHB в крупных корпорациях считают, что Powerbuilder - это игрушечный язык, и переход на новый язык, такой как C #, тривиален и может быть осуществлен при низких затратах. Фактически, перенос приложения PB на любой другой язык будет стоить как минимум столько же, сколько разработка совершенно нового приложения на новом языке. Получающееся приложение обычно теряет функциональность по сравнению с оригиналом и приводит к неудовлетворенности пользователя. Я видел несколько попыток - все они провалились из-за сложности и проблем пользователя.

Если это не сломано, не чините.

3 голосов
/ 13 мая 2009

Я думаю, что любой, рассматривающий это для большого приложения, был бы довольно сумасшедшим, если бы не очень серьезно подумал об использовании DataWindow.NET, чтобы не потерять свои инвестиции в DW.

3 голосов
/ 08 мая 2009

Моя любимая теория недели заключается в том, что разработчики PowerBuilder принимают DataWindow как должное до тех пор, пока им не придется воспроизводить все встроенные функции.

Я бы поддержал эту теорию. Несколько лет назад я предпринял попытку преобразования из PB8 в Java в проекте, который с треском провалился, даже с использованием HTML-окна первого поколения HTML. Мой нынешний работодатель одержим желанием перейти на C #, не используя Datawindow.NET, несмотря на> 2K DWO в нашем текущем продукте. Я не с нетерпением жду того дня, когда начнется реализация. (Весь продукт состоит из нескольких пользовательских приложений, более десятка сервисов и использует около 70 PBD)

OP - если ваше приложение необычно хорошо структурировано (возможно, изначально написано для EA Server?), Это не будет порт. В средах PB & .NET все работает по-разному, чтобы обычный порт работал удовлетворительно. Я не могу подчеркнуть это достаточно - если вы действительно используете модель событий PB, «порт», скорее всего, будет неудачей.

Вам необходимо взглянуть на логический поток (взаимосвязанный пользовательский интерфейс и процесс), поток управления (которому принадлежит процесс или данные прямо сейчас ), доступ к данным (пользовательский интерфейс, уровень данных и т. Д.) И детали модели событий DW, которую вы используете из кода. Если вы думаете о ASP.NET (как и мы), весь ваш опыт взаимодействия с пользователем должен измениться, и это отразится на других соображениях.

Не связанная напрямую с кодом, автоматизация сборки изменится (мы используем PowerGen для согласованных сборок PB; MSBuild сильно отличается), как и ваша установка и настройка.

3 голосов
/ 07 мая 2009

Я не знаю, хорошо это или нет, но проверьте этот (коммерческий) продукт: PB.Net

3 голосов
/ 05 мая 2009

Возможно, вы захотите потратить некоторое время на изучение PowerBuilder 11.5 (недавно выпущенный), который добавляет значительную интеграцию .NET.

Миграция в PowerBuilder 11.5 для использования нового кода .NET, безусловно, будет намного проще, чем полное переписывание всего приложения на C #.

0 голосов
/ 19 марта 2018

Да, теперь это возможно без переписывания периода сервисных компонентов.

PB 12,5>

И целевые миграции и интеграции GUI и сервисных компонентов в c #.

Стратегия миграции / интеграции может варьироваться в зависимости от масштаба вашего проекта, масштабируемости, ресурсов и сроков.

Вы можете использовать эти типы целей и проектов в PowerBuilder .NET. Перейдите по этой ссылке Sybase_PB .Net

  • Приложение окна WPF Приложение окна WPF, клиентский прокси WCF или клиентский прокси REST
  • PB Assembly Клиентский прокси WCF, REST Client Proxy или PB Assembly
  • .NET Assembly Клиентский прокси WCF, REST Client Proxy или .NET Assembly
  • Служба WCF Клиентский прокси WCF, Клиентский прокси REST или Служба WCF
...