Лучшие Средства разработки для Обновления от [закрытого] VB6.0

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

Модели User < - - (Многие ко многим) -> Уровни < - - ( Много ко многим)

protected $appends = ['skills_levels'];

public function getSkillsLevelsAttribute()
{

    $skills = // query to get all skills ->pluck('skill','id');

    $this->load('levels.skills')
    $levels = $this->levels->groupBy('skills.skill_id')->toarray();
    $output = [];

    foreach ($skills as $id => $skill) {
        $output[$skill] = [];
        if (isset($levels[$id])) {
            $output[$skill] = $levels[$id] // all levels user have for this skill
        }
    }
    return $output
}
5
задан MarkJ 26 March 2009 в 12:31
поделиться

6 ответов

Вот адаптация нескольких моих ответов на подобные вопросы.

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

... и вот сообщение в блоге Микрорастяпой, которая соглашается со мной:

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

Эта превосходная страница Microsoft рекомендует два сторонних инструмента миграции как лучше, чем (больше не доступный) встроенный мастер обновления VB.NET - Artinsoft и CodeArchitects VBMigration. Я полагаю, что у них есть некоторая поддержка общих сторонних средств управления и DLLs - Artinsoft поддерживала они. Стоило бы связаться с ними со списком Ваших зависимостей. VBMigration имеет бесплатный инструмент, который перечислит зависимости по просто этой причине. Также стоящий контакта с исходными поставщиками в надежде на эквивалентную.NET.

Страница Microsoft также говорит:

Выполнение полного переписывает к.NET, является намного более дорогостоящим и трудным преуспеть [чем преобразование]... мы только рекомендовали бы этот подход для небольшого количества ситуаций.

Существует намного больше разработчиков C#, чем разработчики VB.NET на Переполнении стека, таким образом, Вы, вероятно, получите несколько ответов, рекомендующих C#. Также исторически Microsoft была склонна поддерживать C# более с энтузиазмом с точки зрения примеров кода для новых частей.NET и так далее. Но Microsoft действительно теперь уверяет нас что:

И [C# и VB.NET] являются первоклассными языками программирования, которые основаны на Microsoft.NET Framework, и они одинаково мощны.

Таким образом, это - персональное решение, хотите ли Вы выбрать C# или VB.NET. Инструмент Artinsoft утверждает, что может преобразовать VB6 в C#.


Править: Я просто нашел другое предложение - NewCode - через рекламу на веб-сайте программирования!

Мое поспешное решение состоит в том, что веб-сайт столь не детализирован как эти два конкурента, которых я записал о вышеупомянутом. Это может быть несправедливо. Некоторый парень в Microsoft Ireland, занесенной в блог о них - я думаю, что они базируются в Ирландии. По-видимому, инструмент преобразовывает Ваш VB6 в DSL и затем на VB.NET Winforms, C#, WPF, Java...

7
ответ дан 18 December 2019 в 10:49
поделиться

Я предложил бы, чтобы Вы 'частично переписали' Вас приложение. Необычное название этого подхода дросселирует (http://martinfowler.com/bliki/StranglerApplication.html).

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

Мое другое предположение - то, что, так как это - VB6, это не имеет очень хорошего разделения UI/BusinessLogic. Именно поэтому автоматическое обновление не получит Вас слишком много.

Возможно, я был неправ относительно Вашей ситуации. Необходимо спросить Вас, насколько действительно можно выйти из существующего кода. Покупайте/Читайте книгу Унаследованного кода Michael Feather также.

2
ответ дан 18 December 2019 в 10:49
поделиться

Обновление; даже если механические инструменты будут существовать, то это действительно не сделает многого для Вас. Это не сделает его волшебно подходящим к.NET или сделает много достойного использования платформы. Я всегда предпочитал бы переписывание в этом сценарии, но это действительно имеет сопутствующие риски / затраты. Например, некоторые мои коллеги в настоящее время переписывают некоторый код VB6/ASP/COM +/xslt для использования ASP.NET MVC - большая часть "интересного" кода является на самом деле бизнес-логикой, которая не в широком масштабе трудна к порту (прием тестирует его;-p). Помогает, что расположение нашего кода VB6 детализировано, позволяя нам переместить отдельные части, не имея необходимость продвигать всех сразу.

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

Выбор между C# и VB.NET в основном вторичен. У обоих есть некоторые незначительные преимущества, но в целом можно сделать большинство вещей с также. Если Вам нужно взаимодействующий с COM, то VB.NET мог бы быть полезен (или для всего, или для просто определенного блока) - но C# 4.0 (в VS2010) включит этот разрыв через новое dynamic ввод и никакие-PIA изменения. В целом, я значительно предпочитаю C#, но это должно быть локальным решением.

3
ответ дан 18 December 2019 в 10:49
поделиться

Я говорю об этой проблеме здесь

Первый и самый важный шаг, подают Вашу существующую заявку, как.NET как Вы может. Что-либо конкретное VB6 или полагается на стороннее управление, получают такое количество его позади интерфейсов, как Вы можете. Интерфейс покажет точно, что Вы используете сторонний материал для и что поведения сначала. Путем выполнения этого в VB6 сначала можно работать, модульные и интеграционные тесты удостоверяются, что поведение СОХРАНЯЕТСЯ. То, что основной элемент, что поведение Вашего приложения сохраняется.

Что касается проблемы между C# и VB.NET. Существует функционально мало различия между этими двумя языками. Один из моего проекта преобразования назад в 90-х брал приложение CAD/CAM моей Компании с ОСНОВНОГО диалекта, известного как Rocky Mountain, ОСНОВНОЙ в Visual Basic 3. У нас были некоторые неудачное начало перед этим, и это чувствовали и позже доказали нам, что намного легче сохранить поведение путем переключения на другой ОСНОВНОЙ язык семейства, чем преобразовать по совершенно другой языковой семье как C.

Поймите при нашем обстоятельстве, у нас есть много математики, тяжелые подпрограммы и математика являются одной из нескольких областей, которая остается относительностью, последовательной по ОСНОВНОЙ языковой семье. Так мой опыт мой не быть на 100% применимым к Вашему случаю.

Это - мое мнение, что краткость языков стиля C является вредом к долгосрочной пригодности для обслуживания (десятилетия). Однако для ярмарки это - деталь в лучшем случае У меня есть обширный опыт на обоих языках, как я пишу и поддерживаю моделирование Меркурия и Капсулы Пространства Близнецов, записанной в C++ с некоторыми утилитами, записанными в C# в дополнение к программе CAD/CAM в VB6/VB.NET для моей компании.

Прямо сейчас наше преобразование.NET фокусируется на VB.NET. Я нашел автоматизированные инструменты почти бесполезными, поскольку мы - ориентированная программа тяжелой графики. К счастью мы не используем Графические вызовы VB непосредственно, но помещаем все позади интерфейса холста. Для печати совместимости мы пользуемся Библиотекой Совместимости Принтера от Блока питания VB как начальная точка.

У нас есть инструмент, который мы выполняем, наш код через это преобразовывает все целые числа в тип Int16 и весь longs к типу Int32 плюс некоторые другое обычно делавшееся преобразование. Затем мы помещаем преобразованный класс или стандартную программу в нашу библиотеку.NET и выполняем модульные тесты. Результаты сравниваются с теми же тестами, работал на исходном VB6 коде.

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

2
ответ дан 18 December 2019 в 10:49
поделиться

Вы не собираетесь любить мой ответ, но здесь идет.

a) Наймите кого-то с существенным количеством опыта в создавании больших приложений .NET, чтобы прибыть и вести проект и учить Вас.

b) Извлеките бизнес-требования из своего текущего приложения и заморозьте их.

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

P.S. В этой точке я не обеспокоился бы Winforms. Я перешел бы прямо к WPF, Вы будете благодарить меня позже.

P.P.S язык действительно не имеет значения (C# или VB.Net). Усилие будет тем же.

0
ответ дан 18 December 2019 в 10:49
поделиться

Я начал переделывать одно из приложений своей компании, записанных в VB6 в VB.NET. И C# и VB.NET полагаются на платформу.NET, и различия между приложением, скомпилированным в любом, незначительны. Выберите язык, с которым Вы и другие, работающие над проектом, чувствуете себя более комфортно. Одно преимущество для использования VB.NET (хотя я не решаюсь называть его таким) является Вами, может использовать функцию "Upgrade Visual Basic 6 Code" в Visual Studio. Существуют некоторые вещи, которые чинит преобразователь, и много он не делает. Если Вы хотите попробовать это, необходимо будет очистить код VB6:

  • Все массивы должны быть базирующимся нулем
  • Избегайте использования строк фиксированной длины если вообще возможный. Этот код должен будет быть изменен для использования Массивов символов в vb.net
  • Явно объявите все переменные. Используйте Опцию, Явную, если Вы уже не делаете
  • Избегайте вариантов как чумы, если Вы абсолютно не должны использовать один для вызова API
  • Укажите ByRef или ByVal, когда передающие параметры, не полагайтесь на поведение по умолчанию для этого
  • Всегда указывайте, какое свойство Вы изменяете, свойства по умолчанию не существуют в vb.net. Например, "txtName = strName" становится "txtName. Текст = strName"
  • Намного более подробный список этих различий может быть найден здесь

Даже после чистки существующего кода лучшее Вы можете, преобразование все еще не составляет 100%. Вы могли попробовать это в отдельном проекте только для наблюдения то, что Вы получаете, чтобы дать Вам идеи о том, как должны быть переделаны вещи. Иногда формы выглядят ужасными после преобразования также, и для некоторых вещей можно закончить тем, что восстановили их с нуля так или иначе.

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

1
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: