Firma, w której pracuję, korzysta z C ++ Builder 6. Od momentu powstania projektujemy kod natywny. Nasz flagowy produkt jest napisany w całości w kodzie natywnym.
Wchodzi do .NET Framework z jego dzwonkami i gwizdkami. Upadam, haczyk, linka i ciężarek. Przekonuję kierownictwo, że .NET powinien absolutnie być naszym nowym frameworkiem dla całego nowego oprogramowania i że powinniśmy jak najszybciej rozpocząć migrację naszego istniejącego kodu. Przy wszystkich zaletach nie trzeba wiele przekonywać. Przyjmują moją propozycję jak zwykle.
W tym momencie rozpoczynam tworzenie mojej pierwszej aplikacji .NET. Wszystko idzie zgodnie z planem. Projekt jest tylko jednym z elementów naszego produktu. I tak przechodzę do punktu tworzenia instalatora dla tego nowego komponentu. Jako firma jesteśmy dumni z tego, że robimy wszystko dla użytkownika tak łatwo, jak to tylko możliwe. Nawet Microsoft z tysiącami programistów nie tworzy instalatorów tak jak my. Na przykład podczas instalowania programu Microsoft CRM zostanie wyświetlona lista błędów i wymagań wstępnych, które należy zainstalować, zanim będzie można kontynuować. Nie my. Nigdy. Jeśli czegoś potrzebujesz, zainstalujemy to dla Ciebie.
To sprawia, że nasze instalacje są tak łatwe. .NET Framework nie jest zainstalowany? Nie ma problemu! Zrobimy to za Ciebie. Potrzebujesz natywnego klienta SQL? W porządku!
Problem w tym, że teraz, gdy jeden komponent naszego rozwiązania jest napisany w .NET, bardzo komplikuje to proces instalacji. Zanim będę w stanie zainstalować nasz produkt, muszę wykonać następujące czynności:
Wykryj, czy wymaganie wstępne jest zainstalowane
Zainstaluj go, jeśli nie jest
Sprawdź, czy została pomyślnie zainstalowana
Następny warunek wstępny
Aby zainstalować .NET Framework, potrzebuję najpierw Instalatora Windows 4.5. Ale są różne wersje dla różnych systemów operacyjnych, więc dodaję wykrywanie systemu operacyjnego i uruchamiam poprawny plik EXE. Aha, .NET framework jest już spakowany z 2k8 i instalator exe nie może na nim działać, musisz uruchomić OCSetup.exe z parametrami, aby go zainstalować.
I tak to trwa. Następnie należy zainstalować SQL Express 2005. Zależności ponownie rosną.
Spieram się z kierownictwem, że nawet Microsoft nie ułatwia tego użytkownikowi. Odpowiadają, że nie ma powodu, abyśmy nie byli lepsi od nich w ten sposób. Nie mogę się z tym kłócić, poza tym, że uważam, że są bardzo dobre powody, dla których poszli z takim podejściem.
Nagle nasz instalator jest ogromny. Wszystkie wymagania wstępne dla .NET, nawet nie wspominając o obsłudze 64-bitowej, która ma całą osobną gamę plików EXE do zainstalowania. Więc teraz dochodzi do punktu, w którym chcemy, aby użytkownicy mogli pobrać „szybką” ocenę. Co za żart. Aby uruchomić aplikację o wielkości 30 MB, musisz pobrać 500 MB. Większość pakietu instalacyjnego to wymagania wstępne.
Kierownictwo uważa, że mamy zbyt wiele zależności / wymagań wstępnych. Rozumiem całkowicie. Sugerują, abyśmy odeszli od frameworka .NET i powrócili do rodzimej krainy, gdzie wszystko było „łatwe” pod względem instalacji. W tym miejscu jedna część mnie chce stanąć w obronie platformy .NET, wyjaśniając korzyści z szerszej perspektywy, ulepszone środowisko programistyczne, łatwiejszą konserwację i ogólną jakość kodu. Druga część mnie w pełni się z nimi zgadza! Programowanie w .NET wymaga po prostu zainstalowania zbyt wielu innych wymagań wstępnych, co komplikuje instalację.
Tak, niektórzy zwolennicy .NET twierdzą, że wszystko powinno być zainstalowane w załatanym i zaktualizowanym systemie operacyjnym. To prawda, ale nie wszyscy klienci to mają i zwykłe powiedzenie „Przepraszam, najpierw zaktualizuj” po prostu nie wystarczy. Pamiętaj, że jesteśmy dumni z ogólnego doświadczenia użytkownika.
Obecnie rozważamy ponowne napisanie kodu natywnego i wiem, że tracimy pod względem szybkości programowania i wszystkich zalet .NET. Ale zyskujemy w tej dziedzinie, czy to mała, jeśli spojrzeć na szerszą perspektywę, czy nie. Ponieważ mamy umiejętności programowania natywnego, a .NET jest dla nas nowym gruntem, warto nawet cofnąć się.
Moje pytanie jest następujące: jakie jest zdanie Twojej firmy na ten temat, jeśli w ogóle jest to problem i jak będzie wyglądać uzasadnienie biznesowe, które proponuję zarządowi, zakładając, że chcę kontynuować migrację wszystkich naszych produktów do .NET?