Справа проти .NET (звіра) чи проти нього [закрито]


92

Компанія, в якій я працюю, використовує 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, повернувшись у рідну землю, де все ще було «просто» з точки зору встановлення. Ось де одна частина мене хоче заступитися за .NET, пояснюючи переваги в загальній картині, покращений досвід розробки, спрощення обслуговування та загальну якість коду. Інша частина мене погоджується з ними від усього серця! Розробка в .NET просто вимагає встановлення забагато інших передумов, що ускладнює встановлення.

Так, деякі прихильники .NET стверджуватимуть, що все слід встановлювати на виправлену та оновлену операційну систему. Це правда, але не у всіх клієнтів це є, і просто сказати «Вибачте, спочатку оновіть» це просто не виріже. Пам’ятайте, ми пишаємось загальним досвідом роботи користувачів.

Зараз ми розглядаємо можливість написання власного коду ще раз, і я знаю, що ми втрачаємо з точки зору швидкості розробки та всіх приємностей .NET. Але ми отримуємо виграш у цій галузі, будь то незначний, якщо ви дивитесь на загальну картину чи ні. Оскільки ми маємо власні навички розробки коду, а .NET насправді є новим майданчиком, навіть є сенс повернутися назад.

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


23
+1 за чудову історію.
jgauffin

25
Чи не існує програм для встановлення .net, які завантажують компоненти за потреби? Групування повних інсталяторів є правильним для випуску DVD, але якщо вони завантажили оцінку, ви можете реально припустити, що вони в мережі для встановлення .net в Інтернеті.
Rup

4
Як не дивно, але в деяких книгах .NET, про які я дізнався під час навчання в коледжі, згадування XCOPY згадувалось як одна з головних його переваг :)
Мадхур Ахуджа,

25
Ви забули включити свою залежність від Windows. Це ще пара гігабайт. Використовуйте завантажувачі.
Ганс Пасант,

13
Цікава історія має бути під назвою: "Як НЕ змінити спосіб ведення бізнесу всією компанією на основі прочитання деяких маркетингових матеріалів та перед тим, як дізнатися, що вам дійсно потрібно буде зробити, щоб правильно використовувати нову структуру"
Ендрю Барбер,

Відповіді:


50

Це є причиною того, чому багато компаній перейшли на веб-інсталятори, які завантажують усі передумови на ходу з вашої домашньої сторінки. Оскільки в більшості випадків ОС має 99% необхідного (якщо вони були оновлені за допомогою служби Windows Update).

Я б не ставлю все для x64 та x32 в один інсталятор. Створіть два інсталятори, по одному для кожної архітектури.


2
Я не вірю, що ви можете отримати інсталяційні пакети x64 та x86 в єдину базу даних MSI.
Девід Хеффернан,

Правда. Я щойно відповів наSuddenly, our installer is massive. All the prerequisites for .NET, not even talking about 64 bit support which has a whole seperate range of EXEs to install
jgauffin

6
БУДЬ-ЯКЕ програмне забезпечення вимагає окремих установників x86 та x64!
Ниття

4
abatishchev: Якби програмне забезпечення було просто .NET-двійковим файлом, скомпільованим для архітектури "Any", не було б необхідності в окремих встановленнях x86 та x64. Тільки тоді, коли вам потрібно встановити саму платформу .NET, вам потрібні окремі інсталятори.
Гейб,

Якщо ви пишете веб-інсталятор, будь ласка, пам’ятайте про людей, які живуть за проксі. Навіть Microsoft часто не пам'ятає про людей, які живуть за власною ISA (я дивлюсь на вас, хто встановлює веб-розробника).
Єгор Павліхін

39

Paint.NET прекрасно завершує встановлення передумов, не поєднуючи за замовчуванням платформу .NET. Кінцевим результатом є некерований виконуваний файл, який перевіряє наявність платформи .NET та деяких інших речей і тримає вас під рукою під час встановлення; всі завантажуються на льоту, коли вони потрібні. Потім вони запускають програму WinForms, яка запускає 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/ (спасибі Руп!)

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


Дякую за посилання. Друга частина - blog.getpaint.net/2008/08/25/… (я не міг побачити посилання з першої на сторінці, хоча насправді там є в заголовках)
Rup,

@Rup приємна знахідка! Я коротко подивився і не помітив. Я зміню свою відповідь, щоб показати її.
Адам Голдсворт,

Цікаво, чи існує програма встановлення з відкритим кодом, подібна до версії 4.0 для Paint.net. Це було б надзвичайно корисно для всіх, хто розповсюджує програми .net.
dbkk

1
@dbkk ти мені кажеш! Paint.NET використовував для випуску код програми та інсталятора, але з тих пір він був відредагований через те, що програми copy-cat не надавали автору кредиту.
Адам Гоудсворт

1
Якщо ви встановите / оновите Paint.NET із відкритою візуальною студією, це може пошкодити Visual Studio. Тож я б сказав, що їх установник потребує ще роботи.
Грег

37

Повернемося до того, чому ви спочатку хотіли перейти з власного коду на код .NET: це ефективніше для вас, як для програміста. Багато речей простіше в .NET, ніж у C ++ (або будь-якій рідній мові, яку ви використовуєте), і тому ви можете набагато швидше розробляти свої програми.

Тоді, як час, витрачений на розробку програми, порівнюється з часом, витраченим на розробку програми встановлення? Навіть якщо вам доведеться витратити пару тижнів, щоб прибити програму встановлення (зокрема, частину налаштування фреймворку), це має бути більш-менш єдиним часом, коли вам доведеться це пройти.

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

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


1
+1 хороший досвід встановлення в .NET важко визначити, але, як ви кажете, це має бути лише один раз. Перевага наявності більшості зразків, які вам коли-небудь знадобляться, - це System.Something.Class майже безцінний і вартий головного болю, спричиненого установщиком.
Адам Голдсворт,

2
Я з нетерпінням чекаю випуску Wix Burn , першого тоді завантажувача, який насправді працює (сподіваюся). Наразі я використовую DotNetInstaller разом із NSIS. Але це обробка UAC ще далеко не ідеальна.
Уве Кейм,

1
@Uwe Здається, Wix Burn вийде приблизно в той самий час, що і Duke Nukem Forever .
dbkk

Було б чудово. Я вже бачив попередні перегляди скріншотів Duke Nukem Forever . Тож незабаром він повинен бути там ;-)
Уве Кейм,

17

Я відчуваю, що мені потрібно відповісти на це твердження:

Так, деякі прихильники .NET стверджуватимуть, що все слід встановлювати на виправлену та оновлену операційну систему. Це правда, але не у всіх клієнтів це є, і просто сказати «Вибачте, спочатку оновіть» це просто не виріже. Пам’ятайте, ми пишаємось загальним досвідом роботи користувачів.

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

Я вважаю, що клієнтам програмного забезпечення дозволено залишатись необізнаними досить довго, і що тепер від них слід вимагати, щоб вони зрозуміли, що саме вони купують. Експлуатувати корпоративне ІТ-середовище, яке неправильно виправлено, - це те саме, що продовжувати керувати транспортним засобом, який підлягав відкликанню виробником - пакет оновлень для Windows багато в чому еквівалентний відкликанню. Ви юридично не зобов’язані подавати заяву про відкликання, але це відповідає вашим інтересам як бізнесу, і ви можете нести відповідальність за збитки, заподіяні вашим ухиленням від відповідальності.


2
Я міг би стверджувати, що відкликання виробника є трохи надмірним з точки зору аналогії - я б сказав, це більше схоже на керування автомобілем, який попередньо датує подушки безпеки або ABS - з'явилися нові функції, покращуючи якість та підвищуючи бар якості. Старі речі не стають раптово зламаними або небезпечними, зараз це просто прийнято вважати нижче рівня в сучасних стандартах, я впевнений, що команда Windows 95 буде стверджувати, що на той час вони вважали, що планка досить висока! :-) І все-таки я з вами згоден, незнання прогресу якості - це не чеснота.
Адам Голдсворт,

11
Я не згоден на 100%. Клієнти повинні були бути занадто обізнаними занадто довго. Чому я повинен знати, чи є я x86 чи x64? Чому я повинен знати, який пакет оновлень я використовую? Дозвольте мені придбати ваше програмне забезпечення, і ви зрозумієте, що має статися, щоб його запустити. Споживче програмне забезпечення невблаганно рухається до моделі iOS / Android / AppStore, і будь-який розробник, який вимагає, щоб користувачі знали що-небудь, крім самих основних деталей про свій пристрій, залишиться позаду.
кубі

1
@kubi, звичайно, аналогія iOS поставляється з припущенням, що обладнання не змінюється, оскільки воно контролюється постачальником. ПК повністю налаштовуються, тому потрібні певні знання або усвідомлення вимог - або принаймні усвідомлення необхідності мати когось, хто знає, що вони роблять. Я або знаю розмір своїх шин, або віддаю свою машину тому, хто знає, чи збираюся я міняти свої шини.
Адам Голдсворт,

3
@kubi: Я згоден з вами щодо моделі випадкового користувача - різниця тут полягає в тому, що немає жодної причини для того, щоб користувач не делегував усі технічні проблеми, такі як версія платформи, ні i) виробнику, ні ii) мені як розробнику. Тому вони не є проблемою. Користувач, який має проблеми, - це корпоративний користувач, який необов’язково має право висловлюватися щодо своєї конфігурації, і кому для оплати цих питань повинен платити компетентний ІТ-провайдер.
Tom W

4
Користувачам байдуже жоден з наших аргументів, хоч і звучних. Вони хочуть використовувати ваше програмне забезпечення ... але можуть відмовитись, якщо установка занадто болюча. Їм менше може бути все одно, хто винен - ​​Microsoft, постачальники чи їх власні.
dbkk

7

Будь-яка програма Visual C ++ також має передумови / зовнішні залежності: час виконання 6.0, 2003, 2005, 2008 або 2010? немає SP, SP1 або SP2? x86 чи x64? Яку версію інсталятора Windows вимагає 2005 SP2? А який 2008 SP1? І так далі, і так далі.

Отже, це надумані аргументи! Як і бурчання Джоела про .NET. І подивіться, що зараз !


3
+1 за посилання на веб-сайт Джоела
Гонча охорони

-1 за посилання на веб-сайт Джоелса.
Phill

Ви можете статично посилатись на час виконання, щоб вам не були потрібні ці залежності.
Тоні Еджкомб

1
@Tony: Статичні зв'язки в 10-х роках 21 століття? Absolute mauvais ton ;)
абатищев

+1 за посилання на веб-сайт Джоела
Shahid M Zubair

3

Я не бачу, як існує значно більше передумов для .net через C ++ Builder. Ви скаржитеся на SQL Server, але ігноруєте той факт, що вам також доведеться встановити деяку базу даних за допомогою конструктора C ++. Ви скаржитеся на x64 проти x32, але .NET не вимагає жодних змін .. той самий exe працює на обох (і компілює себе оптимально для будь-якого середовища). Цього не можна сказати про C ++ Builder. Можливо, вам знадобляться окремі версії SQL-сервера, але знову ж це стосується і конструктора C ++ (якщо ви просто не встановите x32 на все).

Так, є проблеми з новою версією інсталятора, але ці компоненти не дуже великі. І ви дійсно можете змусити програму встановлення завантажувати та встановлювати лише ті необхідні програми.

Конструктор C ++ для вас, мабуть, простіший, оскільки ви вже витратили час на створення хорошого інсталятора. Вам потрібно зробити те саме для .NET, і тоді ви можете вибирати, виходячи з реальних проблем .. а не цього.

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

Те, що ви розглядаєте як "полегшення" для менш знаних людей, насправді ускладнює речі НАБАГАТО для тих, хто знає, що робить.

Ось хороший приклад. Одне я абсолютно зневажаю , коли встановлюю програму, яка потребує SQL Server, і вона встановлює власний екземпляр SQL Server, хоча я вже маю кілька екземплярів, якими вона могла б скористатися. Початківцю легко, болю в дупі, щоб я спробував змусити ваш додаток працювати з моїм єдиним екземпляром.


1

Якщо ваш додаток працює під управлінням Mono, тоді доставка програми з виконанням Mono може бути менш болючою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.