Миграция приложения из Microsoft Access в VB или C#.NET

в настоящее время я пытаюсь убедить руководство в необходимости переноса одного из наших приложений .Сеть. Приложение стало немного монстром в Access (backend в SQL), с 700 связанными таблицами, 650 формами/подформами, 130 модулями и 850 запросами.

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

Итак, мой план состоял в том, чтобы преобразовать запросы в хранимые процедуры и / или представления на бэкэнде и повторная запись форм в WPF или WinForms.

теперь, код, где я отклеился. Можно ли упаковывать код и модули в DLL и потреблять их, пока он медленно портируется на VB/C#?

то, что мы не можем оставить, - это половина приложения в VB/C# и половина в доступе, она должна "казаться" всем одним приложением, даже на полпути через миграцию.

спасибо продвижение.

EDIT: просто еще немного информации о том, что мы делаем и почему мы смотрим на уход от доступа.

мы по существу ISV и приложение доступа является нашим основным продуктом. Это приложение было разработано в течение 15 лет, многими, многими разработчиками на специальной основе. Для этого приложения нет документации.

У нас также есть проблемы с получением ветвления в SCC для правильной работы, поэтому в настоящее время у нас есть 4 или 5 кодовых баз для полдюжины наших клиентов. Кроме того, все тесты, которые мы делаем, полностью ручные, что, как вы можете себе представить, очень трудоемко, и только царапает поверхность того, что действительно нужно протестировать.

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

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

Так, по сути, он пришел вплоть до двух вариантов, основная работа рефакторинга в Access, чтобы попытаться "организовать" код немного лучше, и те из вас, кто предложил отбраковку частей, скорее всего, правы; я уверен, что есть части, которые больше не используются. Тем не менее, я боюсь, что если мы останемся в доступе, мы все равно не сможем построить эффективное тестирование, и у нас все равно не будет надлежащего ветвления SCC, что приведет к поддержке, которая продолжает быть кошмаром, и любые будущие разработки на этом продукте делают вещи хуже. В любом случае есть много работы, которую мы собираемся начать, которая либо будет выполнена в Acces, либо .Сеть.

5 ответов


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

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

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

возможно, вы захотите прочитать эту замечательную статью Джоэла о программном обеспечении (Джоэл, кстати, разработал и создал этот форум Stack overflow – и я был модератором некоторых из его дискуссионных форумов почти 10 лет). В этой статье Джоэл предупреждает и предостерегает от того, чтобы просто переписать отличное программное обеспечение, которое не ржавеет и не изнашивается.

Вещи, Которые Вы Никогда Не Должны Делать, Часть I

Джоэл Спольски

Они сделали. Они сделали это, сделав самая страшная стратегическая ошибка что любая компания программного обеспечения может сделать:

Они решили переписать код с нуля.

статья здесь:http://www.joelonsoftware.com/articles/fog0000000069.html

Джоэл продолжает отмечать, что за последние 10 лет эта статья по-прежнему остается одной из его самых популярных (и несколько спорно)

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

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

Я могу только сказать, что это редко можно увидеть приложение с таким количеством столов. На самом деле этот вопрос вызывает тревогу сразу же.

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

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

в ироническом повороте судьбы это уловка 22, потому что, вероятно, если бы эта система имела действительно фантастические отличные модели данных, вы могли бы даже нет необходимости перепроектировать и перенести это .сеть. Доступ и SQL server могут масштабироваться до 100 пользователей с легкостью anway. Кроме того, access поддерживает использование объектов класса и даже управление исходным кодом.

другими словами, имейте в виду, что люди могут попросить переписать это в .net, потому что они считают, что приложение затем волшебным образом увеличит гибкость и сможет быть изменено быстрее, чем их изменяющиеся бизнес-правила. На самом деле часто наоборот происходит, потому что access-это очень рад инструмент. Это означает, что люди frontline часто могут вносить изменения из-за изменения бизнес-правил быстрее, чем ИТ-отдел и их команда разработчиков, работающих над следующей отличной версией приложения. И хуже того, вы не хотите седлать, что ИТ-отдел и те разработчики с плохой моделью данных.

Я имею в виду, теперь вы нанимаете ИТ-отдел для создания каждой таблицы и excel для людей, потому что это текущий бизнес процессы недостаточно гибки? Было бы замечательно, если бы ИТ-отдел подошел к каждому столу, взял его за руку и построил листы excel правильно для всех, но это не практично в реальном мире. Таким образом, в дополнение к тому, чтобы отнять доступ у этих людей, вы также можете отнять у них excel.

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

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

Так что прямо сейчас на рынке, эти системы самообслуживания клиентов веб-портал позволяют клиентам войти и использовать и получить на их информация вместо вызова некоторых занятых в организации, которые затем поворачивается и запускает приложение, а затем манипулирует информацией для этого клиента по телефону. С таким же успехом можно позволить клиенту делать эту работу! Таким образом, от статуса заказа, до остатков, до банковского дела, или что бы это ни было, настоящий билет cherry model сегодня должен позволить клиенту использовать на веб-портале cell serve, который представляет всю ценную информацию, которую это внутреннее приложение творящий.

Как уже упоминалось, вы должны спросить, где рабочая сила и персонал собираются прийти, чтобы построить и поддерживать это приложение? Очевидно, что существующая система с огромным количеством форм и таблиц, которые вы выбрасываете, должна быть каким-то образом создана и представляет собой значительные инвестиции времени и усилий . Ключевая концепция, которую вы должны спросить, заключается в том, откуда поступали эти значительные инвестиции и ресурсы для создания этого существующего приложения? Кто собирается поддерживать новую систему? Другими словами, вам нужно разработать новую систему для снижения затрат на техническое обслуживание. (новые версии моего программного обеспечения могут уменьшить обслуживание на 10 или 15 часов в год для клиента ).

в конце концов, хорошая разработка программного обеспечения и хорошие проекты-это хорошие проекты. Использование Access, или VB6, или vb.net не имеет значения, удовлетворяет ли система ваши бизнес-потребности сейчас.

Я должен также указать, что новая версия access 2010 может создавать.веб-форма. Они в XAML (заммл .чистых форм). Я указываю на это, потому что изменение внешнего интерфейса от доступа к .net дает вам очень мало, если базовые структуры данных и проекты также не будут изменены, чтобы воспользоваться преимуществами новых возможных бизнес-процессов, которые могут быть выполнены с помощью новых технологий (таких как веб-порталы cell serve). Просто перекрасить шрифт заканчивается .net forms действительно очень много составляет пустую трату денег на мой скромный взгляд, если другие рассматриваются такие вопросы, как модель данных или какой-либо веб-портал, который повысит гибкость.

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

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


вместо того, чтобы сказать вам, как это трудно - что, я уверен, вы уже понимаете - я попытаюсь выбросить некоторые намеки:

1) Начните с перемещения всего, что вы можете из MS Access и в MS SQL. Это означает таблицы, хранимые процедуры,представления и т. д. Если вы сделаете этот шаг правильно, ваше приложение MS Access станет интерфейсом для реальной базы данных, что уже является победой.

2) Подумайте о том, чтобы сдаться, прежде чем начать. Вместо того, чтобы переносить все, может быть, имеет смысл распознавать какие функции можно просто оставить в покое, в то время как новые получают интерфейсы WCF или MVC.

3) заманчиво портировать с VBA на VB.NET, по теории, что это больше похоже, но я не рекомендую это.


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

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

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

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

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

с технической точки зрения это проект, как и любой другой, за исключением нескольких отличий:

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

650 форм / подформ большие по любым стандартам. Это представляет собой крупный проект преобразования, и "медленный" порт будет кошмаром.

Я бы предложил разработать новое приложение .NET 'spike', которое содержит основные функции, которые абсолютно необходимы, а затем построить на нем. В то же время заморозьте приложение Access от всех, кроме основных исправлений.

есть несколько инструментов, которые преобразуют формы MS Access в .NET, но они, вероятно, не удастся сложные формы с подформами.

'Effortlessly' конвертировать формы доступа к объектам VB


Итак, если пользователь находится в доступе, и они предпринимают действие, чтобы открыть форму, которая является другим исполняемым файлом, написанным на C#, не будет ли это "казаться" тем же приложением?

есть группа пользователей, которые хотели бы отдельное приложение, которое имеет только 5-10 форм, которые они используют.

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