L'azienda per cui lavoro utilizza C ++ Builder 6. Abbiamo sviluppato codice nativo sin dal concepimento. Il nostro prodotto di punta è scritto completamente in codice nativo.
Entra in .NET Framework con i suoi campanelli e fischietti. Cado, gancio, lenza e piombino. Convinco il management che .NET dovrebbe assolutamente essere il nostro nuovo framework per tutto lo sviluppo di nuovi software e che dovremmo iniziare a migrare la nostra codeline esistente al più presto. Con tutti i vantaggi non ci vuole molto per convincere. Accettano la mia proposta come al solito.
A questo punto inizio a sviluppare la mia prima applicazione .NET. Sta andando tutto come previsto. Il progetto è solo una componente del nostro prodotto. E così arrivo al punto di creare un programma di installazione per questo nuovo componente. Come azienda, siamo orgogliosi di rendere le cose per l'utente il più semplici possibile. Anche Microsoft con migliaia di sviluppatori non crea programmi di installazione come noi. Quando installi Microsoft CRM, ad esempio, otterrai solo un elenco di errori e prerequisiti che devono essere installati prima di poter continuare. Non noi. Mai. Se hai bisogno di qualcosa, lo installeremo per te.
Questo rende le nostre installazioni così facili. .NET Framework non è installato? Nessun problema! Lo faremo per te. Hai bisogno di un client SQL Native? Bene!
Il problema è questo, ora che un singolo componente della nostra soluzione è scritto in .NET, complica incredibilmente il processo di installazione. Prima ancora di poter installare il nostro prodotto, devo fare quanto segue:
Rileva se il prerequisito è installato
Installalo se non lo è
Verifica che sia stato installato correttamente
Prerequisito successivo
Per installare .NET Framework, ho bisogno prima di Windows Installer 4.5. Ma ci sono diverse versioni per i diversi sistemi operativi, quindi aggiungo il rilevamento del sistema operativo e lancio l'EXE corretto. Oh, .NET framework è già fornito con 2k8 e l'exe di installazione non può essere eseguito su di esso, devi eseguire OCSetup.exe con i parametri per installarlo.
E così va avanti. Quindi è necessario installare SQL Express 2005. Le dipendenze aumentano ancora una volta.
Sostengo con la direzione che anche Microsoft non lo rende così facile per l'utente. La loro risposta è che non c'è motivo per noi di non essere migliori di loro in questo modo. Non posso discuterne, tranne che ritengo che ci siano ottime ragioni per cui hanno scelto il loro approccio.
All'improvviso, il nostro programma di installazione è enorme. Tutti i prerequisiti per .NET, nemmeno parlando del supporto a 64 bit che ha un'intera gamma separata di EXE da installare. Quindi ora si arriva al punto in cui vogliamo che gli utenti siano in grado di scaricare una valutazione "rapida". Che scherzo. È necessario scaricare 500 MB per eseguire un'applicazione da 30 MB. La maggior parte del pacchetto di installazione è costituita da prerequisiti.
La direzione ritiene che abbiamo troppe dipendenze / prerequisiti. Capisco perfettamente. Suggeriscono di allontanarci dal framework .NET, tornando alla terra natia dove le cose erano ancora "facili" in termini di installazione. È qui che l'unica parte di me vuole difendere .NET spiegando i vantaggi nel quadro generale, l'esperienza di sviluppo migliorata, la manutenzione più semplice e la qualità complessiva del codice. L'altra parte di me è d'accordo con loro di tutto cuore! Lo sviluppo in .NET richiede semplicemente l'installazione di troppi altri prerequisiti che complicano l'installazione.
Sì, alcuni dei sostenitori di .NET affermeranno che tutto dovrebbe essere installato su un sistema operativo aggiornato e aggiornato. Questo è vero, ma non tutti i clienti lo hanno e semplicemente dicendo "Mi dispiace, aggiorna prima" semplicemente non lo taglierà. Ricorda, siamo orgogliosi dell'esperienza utente complessiva.
Stiamo ora valutando la possibilità di scrivere di nuovo codice nativo e so che stiamo perdendo in termini di velocità di sviluppo e tutte le chicche di .NET. Ma stiamo guadagnando in quest'area, sia essa piccola se guardi al quadro generale o no. Poiché abbiamo capacità di sviluppo di codice nativo e .NET è in realtà un nuovo terreno per noi, ha senso anche tornare indietro.
La mia domanda è questa: qual è il punto di vista della tua azienda su questo problema se si tratta di un problema e quale sarà il caso aziendale che propongo al management supponendo che voglia continuare a migrare tutti i nostri prodotti a .NET?