Случай за или против .NET(зверя)

Я разработчик .NET, и у меня нет перхоти. Компания, с которой я работаю, использует С++ Builder 6. Мы разрабатываем собственный код с момента создания. Наш флагманский продукт полностью написан в собственном коде.

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

На этом этапе я начинаю разрабатывать свое первое приложение .NET. Все идет так, как планировалось. Проект является лишь одним из компонентов нашего продукта. И поэтому я дошел до создания установщика для этого нового компонента. Как компания мы гордимся тем, что делаем вещи для пользователя как простой как возможно. Даже Microsoft с тысячами разработчиков не создает установщиков, как мы. Когда вы устанавливаете Microsoft CRM, например, вы получите список отказов и предварительных условий, которые необходимо установить, прежде чем вы сможете продолжить. Не нам. Никогда. Если вам что-то нужно, мы установим его для вас. Представь это.

Нас, запуская EXE, для вас...

Это делает наши установки такими легкими..NET Framework не установлен? Нет проблем! Мы сделаем это за вас. Нужен клиент SQL Native? Отлично!

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

  • Определите, установлено ли предварительное условие.

  • Установите его, если он не

  • Убедитесь, что он был успешно установлен

  • Следующее предварительное условие

Для установки .NET Framework сначала нужен установщик Windows 4.5. Но для разных ОС существуют разные версии, поэтому я добавляю обнаружение ОС и запускаю правильный EXE. О,.NET framework уже упакован с 2k8, и exe-программа установки не может работать на нем, вам нужно запустить OCSetup.exe с параметрами для его установки. Вздох.

И так оно продолжается. Затем необходимо установить SQL Express 2005. Зависимости снова увеличиваются.

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

Внезапно наш установщик массивный. Все предпосылки для .NET, даже не говоря о 64-битной поддержке, которая имеет целый ряд EXE для установки. Таким образом, теперь он доходит до того момента, когда мы хотим, чтобы пользователи могли загрузить "быструю" оценку. Ну и шутка. Вам нужно загрузить 500 МБ, чтобы запустить 30-мегабайтное приложение. Магистрат установочного пакета является предпосылкой.

Руководство считает, что у нас слишком много зависимостей/предварительных условий. Я полностью понимаю. Они предлагают нам отойти от платформы .NET, вернуться на родину, где вещи все еще "легки" с точки зрения установки. Именно здесь одна часть меня хочет поддержать .NET, объясняя преимущества в общей картине, улучшенный опыт разработки, упрощение обслуживания и общее качество кода. Другая часть меня полностью согласна с ними! Для разработки в .NET просто требуется установить слишком много других предварительных условий, которые усложняют установку.

Да, некоторые сторонники .NET заявляют, что все должно быть установлено на исправленной и обновленной операционной системе. Это правда, но не все клиенты имеют это, и просто говорят: "Извините, сначала обновите", просто не сократит. Помните, мы гордимся общим опытом пользователей.

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

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

Ответ 1

Именно по этой причине многие компании перешли на веб-инсталляторы, которые загружают все предварительные условия "на лету" с вашей домашней страницы. Поскольку в большинстве случаев ОС имеет 99% того, что необходимо (если они были обновлены с помощью Центра обновления Windows).

Я бы не поставил все на x64 и x32 в один и тот же установщик. Создайте два установщика, по одному для каждой архитектуры.

Ответ 2

Paint.NET автоматически завершает установку предпосылок, не привязывая к ней платформу .NET по умолчанию. Конечным результатом является неуправляемый исполняемый файл, который проверяет платформу .NET и некоторые другие вещи и держит вашу руку по мере ее установки; все они загружаются на ходу, поскольку они необходимы. Затем они запускают приложение WinForms, которое pInvokes в MSI для дальнейшей упаковки в вату.

Стоит Google.

Вероятно также, что на многих клиентских машинах уже установлена ​​некоторая версия .NET Framework, поскольку она входит в состав Microsoft Update, что делает ее более доступной в деловом мире.

Сообщения о блоге Paint.NET об установке:

http://blog.getpaint.net/2008/08/24/the-paintnet-install-experience-part-1-version-3xx/

http://blog.getpaint.net/2008/08/25/the-paintnet-install-experience-part-2-version-40/ (спасибо Rup!)

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

Ответ 3

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

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

Для всех будущих приложений вы будете использовать почти идентичный установщик; вы все равно выполнили все предварительные проверки, но вместо копирования файлов в C:\Foo вы копируете несколько файлов на C:\bar.

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

Ответ 4

Я чувствую, что мне нужно ответить на это утверждение:

Да, некоторые сторонники .NET заявляют, что все должно быть установлено на исправленной и обновленной операционной системе. Это правда, но не все клиенты имеют это, и просто говорят: "Извините, сначала обновите", просто не сократит. Помните, мы гордимся общим опытом пользователей.

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

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

Ответ 5

В любом приложении Visual С++ есть предпосылки и внешние зависимости: runtime 6.0, 2003, 2005, 2008 или 2010? нет SP, SP1 или SP2? x86 или x64? Какая версия установщика Windows требует 2005 SP2? А что 2008 SP1? И так далее, и так далее.

Таким образом, надуманные аргументы! Как Joel ворчания о .NET. И посмотрите, что сейчас!

Ответ 6

Я не вижу, как есть значительно больше предварительных условий для .net над С++ Builder. Вы жалуетесь на SQL Server, но игнорируете тот факт, что вам нужно также установить некоторую базу данных с помощью С++. Вы жалуетесь на x64 vs x32, но .NET не требует каких-либо изменений.. тот же exe работает на обоих (и сам компилирует оптимально для любой среды). То же самое нельзя сказать о С++ Builder. Возможно, вам понадобятся отдельные версии SQL-сервера, но снова это применимо к строителю С++ (если вы просто не установите x32 на все).

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

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

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

То, что вы считаете "облегчением" для менее осведомленных людей, на самом деле делает вещи намного сложнее для тех, кто знает, что они делают.

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

Ответ 7

Если ваше приложение работает под Mono, то отправка вашего приложения со временем выполнения Mono может быть менее болезненным.