Wpis z mikrobloga

Potrzebuję napisać przenośną aplikację desktopową, która będzie działać zarówno pod Windowsem jak i Linuksem. Program ma obserwować folder i jak pojawi się w nim odpowiedni plik, to sparsować go i dane wysłać socketem. Ponieważ nie będzie interakcji z użytkownikiem oprócz konfiguracji folderu i adresu IP, tylko działanie w tle, zapewne pojawi się wymaganie żeby działał jako serwis. I teraz pytanie: lepiej wybrać #dotnet czy #java ? Nie chodzi o języki ani samo pisanie programu, który będzie bardzo prosty, ale o wdrożenie i utrzymanie. Jeśli np. klient zainstaluje ten program na 50 Windowsach i 50 Linuksach, to w którym przypadku będzie miał mniej kłopotów? Że np. potrzebna jest taka wersja Javy, ale na tej i tej dystrybucji Linuksa trzeba ją ściągać z jakiegoś dziwnego miejsca i potem coś przestawiać jakimś pliku konfiguracyjnym. Albo żeby program działał jako usługa to trzeba jakichś magicznych sztuczek w rejestrze. W tej chwili skłaniam się ku .NET, bo Java sama z siebie nie daje nawet .exe, tylko trzeba użyć wrappera i raczej nie używa się jej do aplikacji desktopowych. #programowanie
  • 21
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@zarowka12: ja bym wybrał Javę. Nie trzeba utrzymywać kodu x2. Instalujesz jre w tej samej wersji na windows i Linux. Potem skrypt sh pod Linuxa bat pod windę do zrobienia serwisu. Można wtedy w jednym ZIP się zmieścić.
  • Odpowiedz
@zarowka12: ".NET Core"/".NET 5" nie ma jeszcze żadnego wyłonionego kandydata do pisania aplikacji okienkowych, działających w stylu one-code run-everywhere jakbyś planował np. rozwój appki.
Sama obsługa Tray by wymagała pisania z użyciem bibliotek "frameworkd-specific".

Jeżeli chodzi o serwisy, to .NET Core/.NET 5 jest tutaj już niezłym wyborem. Jeżeli chcesz przenośności, to po prostu w każdym języku ją uzyskasz, byleś użył uniwersalnego protokołu do komunikacji.

.NET od wersji 3.1 Core umie tworzyć "single-file-executable" i umie targetować i Windowsy, i Linuxy - działa to nieźle (jednak binarki trochę ważą - bo pliki do Runtime
  • Odpowiedz
@zarowka12: to co opisujesz to nie aplikacja desktopowa, bo z tego co pisze nie ma żadnej interakcji z desktopem. Co do najłatwiejszej technologii i łatwości wdrażenia to na pewno wspomniany Golang, bo prosty, a wdrożenie to wrzucenie statycznej binarki, która działa na każdym linuxie i windowsie bez problemów z zależnościami. .Net Core też brzmi fajnie, ale jak nie umiesz żadnych z tych technologii to golang będzie najprostrzy
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@zarowka12: ja bym wybrał to co znam czyli .Net core i warpowal, zalaczasz runtime w jeden plik wykonywalny. Więc do dystrybucji masz jeden plik, wystarczy ogarnąć tylko żeby na Windows i Linux startowało z systemem jeśli trzeba i już.
  • Odpowiedz
@Saly: desktopowa w sensie, że nie webowa. A interakcja będzie, bo użytkownik będzie wyklikiwał ścieżkę i adres IP. Golang nie znam zupełnie, za to pisałem zarówno w C# jak i Javie.
  • Odpowiedz
@inny_89: @zarowka12: np. projekt Syncthing (polecam) jest napisany w GoLang, a GUI udostępnia przez localhost WWW.

Oczywiście to wiąże się z "zarezerwowaniem" portu, które to mają pojemność 16 bitów, z tego pierwsze 1024 jest nieużywalne + to też trochę loteria, czy sobie zarezerwujesz jakiś port bez kolizji :P

Osobiście uważam, że najlepszym rozwiązaniem byłoby robić GUI w technologiach webowych + zapytania pchane przez jakiś socket, ale niekoniecznie po
  • Odpowiedz
@patrolez: jakie plusy to będzie miało nad tym co ja zaproponowałem? Oczywiście oprócz zasobożerności w przypadku Electrona (chociaz proces, kóry chce uruchomić OP nie powinien stanowić problemu) w przypadku Avalonii + Net Core w ogole ten problem będzie znikomy.

Pytam bo serio mnie to interesuje. O Go wiele dobrego słyszałem ale bardziej w kategorii mikroservisów na chmurze.
  • Odpowiedz
@patrolez:
No właśnie wszystko zależy jak długo i jak skomplikowane procesy bedą potrzebne po stronie GUI. Wychodzi na to, że w przypadku OPa interakcja w "okienku" użytkownika będize trwała 10 minut i potem o niej zapomni na zawsze.

@zarowka12: W ogóle tak teraz sobie myślę, że w ogole czy użytkownik na pewno potrzebuje graficznego "okienka" ?
Przecież jeśli ma podać Ci jedynie path do folderu oraz IP to
  • Odpowiedz