Co dalej? WinForms, WPF, UWP, Xamarin?

0

Witam.
Zanim tu napisałem przeczytałem już istniejące tutaj posty na interesujący mnie temat. Niestety odpowiednie tematy są już zamknięte i nie mogłem tam zapytać. Wygooglałem co mogłem i nadal nie znam odpowiedzi więc postanowiłem stworzyć nowy temat.

Powyższy wstęp dla osób lubiących pouczać komentarzami typu to już było, albo spytaj wujka Google.

Przechodząc do meritum. Uczę się C#. Piszę sobie proste aplikacje konsolowe jednak chciałem też napisać daną aplikację w formie okienkowej. Niby można wykorzystać do takich aplikacji cokolwiek: WinForms, WPF, UWP. Jednak nie chcę brnąć w danym kierunku tylko po to by brnąć. Naczytałem się, że WinForms już nie na te czasy, WPF niby OK, ale UWP mnie bardziej przekonywało, by później się skłonić w kierunku Xamarina. Tylko dziś czytam, że UWP umiera śmiercią naturalną przez śmierć W10 Mobile i brak dalszego sensu tworzenia uniwersalnych aplikacji. Czy rzeczywiście nie ma znaczenia co wybiorę? Czy XAML jest wart uwagi? Tak jest namieszane w tym dotnecie, że się już zgubiłem. Zaraz pewnie ktoś napisze pewnie, że tylko ASP.NET MVC itp. Jest tu ktoś znający na tyle temat by mi naświetlić drogę jaką powinienem obrać podczas nauki .net?

0

Ja przygodę z C# zaczynałem od Winformsa, ale to było powiedzmy 2007-2008r. Wcześniej C++ builder. I ciężko mi było przejść na weba. Ale teraz nie wyobrażam sobie wrócić do Winformsa. (Wpf niegdy nic konkretnego nie napisałem). Zresztą zobacz na oferty pracy, zdecydowanie web. Bierz się za .net cora,(api, mvc)

0

Tak od razu Web? Z pominięciem wszystkiego innego? Z aplikacji konsolowych przeskoczyć od razu na ASP.NET?

1

Jeżeli umiesz/rozumiesz jak działa web, kojarzysz HTML/CSS/JavaScript i myślisz o nauce technologii do podjęcia pracy w przyszłości to tak, ASP.NET będzie najbardziej przyszłościowe.

WPF/UWP/Xamarin są do siebie dość podobne na początku - XAML, MVVM działają tak samo albo bardzo podobnie.
WPF jest sensowne, jeżeli chcesz się nauczyć, i jest w tym trochę kodu napisanego, więc przyda się też w pracy. Z UWP gorzej, bo na desktopie nie jest jakoś spektakularnie popularne i rzeczywiście, ze śmiercią W10M straciło trochę zalet.
Xamarin (konkretnie Xamarin.Forrms) jest fajny, jest używany, działa na wielu platformach, co chwila go rozwijają, więc możliwe że będzie najwygodniejszy - ale tutaj już wchodzisz w aplikacje mobilne i warto też ogarnąć jak to działa "pod spodem" (Androidowe aktywności/intencje i inne takie).

0

Z moją aktualną wiedzą i miejscem zamieszkania do podjęcia pracy daleko. Póki co bardziej dla siebie to robię, w sumie to głównie. Chciałbym zrozumieć dobrze OOP i pisać coś co wygląda i ma sens, a nie w konsoli pobieranie danych z klawiatury i operacje na tych danych. Jeśli to by się zmieniło kiedyś w pracę to fajnie, jak nie to trudno przynajmniej mózg poćwiczę. Młody mocno już nie jestem. UWP chciałem użyć, ale nie wiem czy WPF nie jest "bardziej" do desktopu jednak na dzień dzisiejszy.

0

Na dzień dzisiejszy pod względem użycia komercyjnego kolejność jest następująca :

  1. WPF
  2. WinForms
  3. Xamarin
  4. UWP

aczkolwiek właśnie poszła plota że w Microsoft trwają prace nad tym by UWP działało na Androida:
https://mspoweruser.com/evidence-microsoft-may-be-working-to-port-the-uwp-runtime-to-android/

0

Jeżeli zastanawiasz się nad WPF czy UWP to zdecydowanie polecam WPF. Na pewno dużo łatwiej znajdziesz w tym pracę, jeżeli stosujesz MVVM to w WPF pisze się dość przyjemnie.

0

Dużo prościej zacząć w Winforms. I jeśli nie miałeś do tej pory do czynienia z GUI, być może to będzie dla Ciebie łatwiejsza droga. Napisać kilka prostych aplikacji w Winforms (Notatnik, Odtwarzacz Mp3 z playlistami, odtwarzacz filmów), a potem to samo zrobić w WPF.

Teoretycznie zarówno WPF, jak i WInforms już nie żyją. W tym sensie, że MS nie dokłada tam niczego nowego. Jednak komercyjnie patrząc, to tego właśnie powinieneś się uczyć. Podsumowując:

Przejście z konsoli do WPF - trudne
Przejście z konsoli do UWP - porównywalne z powyższym
Przejście z konsoli do Winforms - łatwe
Przejście z Winforms do WPF - łatwe/średnie
Przejście z WPF do UWP - łatwe.

Każde przejście jednak będzie wymagało od Ciebie trochę czasu i nauki. Tylko pamiętaj, że to NIE będzie zmarnowany czas.
Więc wg mnie powinieneś napisać sobie te 3 aplikacje wymienione wyżej w kolejności na Winforms, WPF, UWP. Czwartą może być baza danych (np. baza "muzyki" - gatunki, wykonawcy, albumy).

0

Dziękuję wszystkim za podpowiedzi. Jeśli ktoś ma coś jeszcze do dodania, swoją opinię to bardzo proszę. Tak mi się wydawało, że póki co WinForms będzie najłatwiejszy choć bardziej mnie WPF i UWP ciągnęło. Tylko skakać na główkę na nieznaną wodę to chyba faktycznie bez sensu. Bo albo się uda i jakoś to ogarnę albo złamię sobie kręgosłup i zakończę karierę.
Skoro WPF nie jest rozwijany to dlaczego dominuje? Bo nie powstało nic lepszego? Skoro nie powstało to trzeba było się skupić na WPF i jego rozwijać. Microsoft namieszał pewnie jak zwykle i dlatego bo UWP się nie przyjął?

0

WPF jest tylko na jedną platformę. UWP jest w zamyśle uniwersalny, czyli działa wszędzie tam, gdzie jest zainstalowany Windows - telefony, desktopy, hololensy, jakieś inne urządzenia IoT. W związku z tym ma jednak pewne ograniczenia w porównaniu do WPF, czy WinForms. Biorąc pod uwagę dodatkowo wielkość rynku telefonów z Windowsem, większość robi w WPF. Chociaż UWP to teoretycznie sposób, w jaki powinno się pisać dzisiaj aplikacje. MS bardzo próbuje promować tą technologię.

0

Skoro WPF nie jest rozwijany to dlaczego dominuje? Bo nie powstało nic lepszego? Skoro nie powstało to trzeba było się skupić na WPF i jego rozwijać. Microsoft namieszał pewnie jak zwykle i dlatego bo UWP się nie przyjął?

Trochę namieszał. Microsoft bardzo chciał, aby wszyscy weszli w UWP, ale na początku było to wredne i trudne (bo zanim zrobili tego UWP to zrobili Silverlight i WinRT), a aplikacjom UWP brakowało niektórych rzeczy (a pewne rzeczy robi się inaczej - a ludzie nie lubią zmian). Śmierć W10M dobiła koncepcję UWP. Więc teraz jest "w tył zwrot" i zarówno UWP, jak i WPF są powiedzmy, że first-class - znaczy np. WPF można używać w .NET Core 3.0, WPF dostał parę ulepszeń (m.in. dla HiDPI), mamy XAML Islands do osadzania elementów UWP w aplikacjach WinForms/WPF i tak dalej.

Aczkolwiek, zwróć uwagę, że trend pisania aplikacji jest taki, że w ogóle aplikacje desktopowe stają się coraz mniej popularne i dlatego Microsoft zdecydowanie bardziej inwestuje w ASP.NET i Blazora.

@Juhas:

Biorąc pod uwagę dodatkowo wielkość rynku telefonów z Windowsem

Windows 10 Mobile jest martwy. Jest mi strasznie przykro to pisać, ale nie ma już rynku telefonów z Windows. Po prostu.

0

Dochodząc do Blazora, który jest jeszcze chyba w wersji preview wychodzi na to, że najlepiej to wcale nie uczyć się C# bo i tak wszystko się sprowadza do aplikacji webowych, a do nich są lepsze rozwiązania.
VisualStudio 2019 jest zrobione w WPF?
Czy jeśli w powyższym IDE chcę zrobić okienkową aplikację WinForms to mam korzystać z .Net Core czy Framework? W przypadku jedno platformowej aplikacji ma to znaczenie?
Czy w WinForms da się napisać ładnie (współcześnie) wyglądającą aplikację czy będzie wyglądała jak rodem z WinXP?

0

Dochodząc do Blazora, który jest jeszcze chyba w wersji preview wychodzi na to, że najlepiej to wcale nie uczyć się C# bo i tak wszystko się sprowadza do aplikacji webowych, a do nich są lepsze rozwiązania.

Nie ma ;) JavaScript ssie ;)

VisualStudio 2019 jest zrobione w WPF?

Tak.

Czy jeśli w powyższym IDE chcę zrobić okienkową aplikację WinForms to mam korzystać z .Net Core czy Framework? W przypadku jedno platformowej aplikacji ma to znaczenie?

chyba (nie jestem pewien) nie ma designera do formatek w WinForms dla .NET Core, więc będzie ci tylko trudniej. Potem, gdy będziesz chciał wykorzystać pewne rzeczy, które są tylko w Core to już będziesz wiedział, że potrzebujesz Core :)

Czy w WinForms da się napisać ładnie wyglądającą (współcześnie) aplikację czy będzie wyglądała jak rodem z WinXP?

WinForms korzysta z natywnych kontrolek systemu, więc po napisaniu aplikacji ona się dopasuje stylem do twojego systemu po prostu. I pewnie są też możliwości stylowania kontrolek i aplikacji, jeśli chcesz aby wyglądała "ładnie" (aczkolwiek IMO najlepiej, gdy aplikacje "pasują" do systemu).

0

Dzięki za szybką odpowiedź.
Już widzę właśnie że w .NET Core nie można wizualnie edytować formatek oraz, że okno dopasowuje się do systemu. Chyba najpierw podziobię w tym WinForms coś. Jakieś proste aplikacje, by się trochę oswoić i wdrożyć w ogóle w C#, a później będę się zastanawiał co dalej. Bez jakichkolwiek fundamentów to będzie mi trudno we wszystkim więc trzeba zacząć od czegoś prostego, by się nie zniechęcić.

0

Dochodząc do Blazora, który jest jeszcze chyba w wersji preview wychodzi na to, że najlepiej to wcale nie uczyć się C# bo i tak wszystko się sprowadza do aplikacji webowych, a do nich są lepsze rozwiązania.

dlaczego tak sądzisz? jakie technologie masz na myśli?

0
WeiXiao napisał(a):

Dochodząc do Blazora, który jest jeszcze chyba w wersji preview wychodzi na to, że najlepiej to wcale nie uczyć się C# bo i tak wszystko się sprowadza do aplikacji webowych, a do nich są lepsze rozwiązania.

dlaczego tak sądzisz? jakie technologie masz na myśli?

Myślałem o PHP i Laravel czy frameworki JSa jak Angular, React czy też Pythonowe Django albo Ruby'owe Railsy.

0

Ale C# (backend) też możesz łączyć z Angularem i Reactem(front).

0
WeiXiao napisał(a):

Ale C# (backend) też możesz łączyć z Angularem i Reactem(front).

A można zrobić C# full stack?
ASP.NET na to pozwala?

0

ASP.NET Core (webówka C#) nie jest "100 lat za murzynami", serio.

Tak, możesz.

0
WeiXiao napisał(a):

ASP.NET Core (webówka C#) nie jest "100 lat za murzynami", serio.

Tak, możesz.

Nie mówię, że jest. Dlatego tu jestem bo niewiele wiem i chcę dopytać osób, które wiedzą o wiele więcej ode mnie.
Taki mi wniosek się wysnuł, że ten C# i asp.net to jest na siłę do zastosowań webowych. Widać się myliłem.

1
andijaw napisał(a):
WeiXiao napisał(a):

Ale C# (backend) też możesz łączyć z Angularem i Reactem(front).

A można zrobić C# full stack?
ASP.NET na to pozwala?

Asp.net core + Blazor (serwer side jest już oficjalnie dostepny w asp.net core 3.0. client side przewidzisny jest na maj 2020) możesz " w c# zrobić Full stack". Blazor pozwala na pisanie frontu w c# bez użycia js. Tylko jest to nowa technologia i raczej nikt do pracy jeszcze z jej znajomością nie szuka. I długo szukał nie bedzie

0

Co tu wszyscy tak o tej pracy? Nie można się pouczyć dla siebie? :-)

0

Oczywiście, że można dla siebie. Ale większość uczy się jednak w celu wykorzystania znajomości technologii w przyszłości. Ja też zaczynam właśnie w celu przebranżowienia się i wejścia w IT. Miło mi, że inni też zaczynają :)

0

Ja też się uczę w celu wykorzystania technologii w przyszłości jednak zmiana pracy nie jest priorytetem.
Za mało wiem i nie chcę wdepnąć w coś co mnie zniechęci, dlatego pytam tutaj co dalej żeby zrobić krok do przodu i podołać temu.

0

WinForms, a później WPF? Czy wg Was lepiej uderzać od razu w WPF? I najważniejsze - czy docelowo .Net Core czy Framework?

0

Od razu WPF i od razu Core.

0

A czy znacie jakieś dobre materiały do nauki WPF i Core? Chętnie tutoriale video + oczywiście korzystanie z dokumentacji.

0

WPF to XAML, nie lepiej najpierw w WinForms robić aby się wdrożyć w obiektówkę i ogólne koncepcje programowania?

0

Będzie łatwiej ale czy lepiej to nie wiem. Obiektówka, jak piszesz, nijak się nie ma do Winforms czy wpf. Standardowe kompnenety WinForms są można upośledzone ale już z DevExpress czy Telerikiem da się zrobić wszystko tylko trzeba wydać te 2k usd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1