Компания, в которой я работаю, использует C ++ Builder 6. Мы разрабатываем собственный код с момента зачатия. Наш флагманский продукт полностью написан на нативном коде.
Входит в .NET Framework со своими наворотами. Я падаю, крюк, леска и грузило. Я убеждаю руководство, что .NET должна стать нашей новой структурой для разработки всего нового программного обеспечения и что мы должны как можно скорее начать миграцию существующей кодовой строки. При всех преимуществах этого не нужно много убеждать. Мое предложение они принимают как обычно.
На этом этапе я начинаю разработку своего самого первого .NET-приложения. Все идет по плану. Проект - это только одна составляющая нашего продукта. Итак, я подошел к созданию установщика для этого нового компонента. Как компания, мы гордимся тем, что делаем вещи для пользователя максимально простыми. Даже Microsoft с тысячами разработчиков не создает установщиков, как мы. Например, при установке Microsoft CRM вы получите только список сбоев и предварительных условий, которые необходимо установить, прежде чем вы сможете продолжить. Не нам. Никогда. Если вам что-то нужно, мы вам это установим.
Это делает наши установки такими простыми. .NET Framework не установлен? Нет проблем! Мы сделаем это за вас. Нужен собственный клиент SQL? Отлично!
Проблема в том, что теперь, когда один компонент нашего решения написан на .NET, это невероятно усложняет процесс установки. Прежде чем я смогу даже приступить к установке нашего продукта, мне нужно сделать следующее:
Определите, установлен ли предварительный компонент
Установите, если это не так
Убедитесь, что он был успешно установлен
Следующее предварительное условие
Для установки .NET Framework мне сначала понадобится установщик Windows 4.5. Но есть разные версии для разных ОС, поэтому я добавляю определение ОС и запускаю правильный EXE. О, .NET framework уже упакован с 2k8, и установщик exe не может работать на нем, вам нужно запустить OCSetup.exe с параметрами для его установки.
И так продолжается. Затем необходимо установить SQL Express 2005. Зависимости снова увеличиваются.
Я спорю с руководством, что даже Microsoft не упрощает задачу для пользователя. Их ответ состоит в том, что у нас нет причин не быть лучше их в этом отношении. Я не могу с этим спорить, за исключением того, что чувствую, что есть очень веские причины, по которым они выбрали свой подход.
Внезапно наш установщик стал огромным. Все предварительные требования для .NET, даже не говоря о поддержке 64-битной версии, которая требует установки целого ряда EXE-файлов. Итак, теперь мы подошли к тому моменту, когда мы хотим, чтобы пользователи могли загрузить «быструю» оценку. Ну и шутка. Вам необходимо загрузить 500 МБ, чтобы запустить приложение 30 МБ. Большая часть установочного пакета требует предварительных условий.
Руководство считает, что у нас слишком много зависимостей / предпосылок. Я полностью понимаю. Они предлагают нам отойти от .NET framework, вернуться на родину, где все еще было «легко» с точки зрения установки. Именно здесь одна часть меня хочет встать на защиту .NET, объясняя преимущества в целом, улучшенный опыт разработки, более легкое обслуживание и общее качество кода. Другая часть меня полностью с ними согласна! Для разработки в .NET просто требуется установить слишком много других предварительных условий, что усложняет установку.
Да, некоторые сторонники .NET будут утверждать, что все должно устанавливаться в исправленной и обновленной операционной системе. Это правда, но не у всех клиентов это есть, и просто сказать «Извините, сначала обновите» ничего не выйдет. Помните, мы гордимся общим пользовательским интерфейсом.
Сейчас мы снова рассматриваем возможность написания нативного кода, и я знаю, что мы теряем с точки зрения скорости разработки и всех преимуществ .NET. Но мы выигрываем в этой области, будь она небольшая, если смотреть на картину в целом или нет. Поскольку у нас есть навыки разработки нативного кода, а .NET - фактически новая область для нас, имеет смысл даже вернуться.
У меня такой вопрос: каково мнение вашей компании по этому поводу, если это вообще проблема, и как будет выглядеть бизнес-модель, которую я предлагаю руководству, если я хочу продолжить миграцию всех наших продуктов на .NET?