Windows GUI: WPF lub WinRT (2015+)

94

Próbuję uzyskać przegląd różnych technologii do wykorzystania podczas tworzenia GUI w świecie Windows.

Dla kontekstu buduję małą platformową grę wieloosobową 2D. (Tylko do celów edukacyjnych ...)

Mój nauczyciel mówi, że uważa, że ​​WPF jest właściwą drogą, ale wydaje się, że porównuje go tylko do Windows Forms.

Rozumiem, że tutaj w 2015 roku Windows Forms jest całkowicie martwy?

W tych innych pytaniach dotyczących stackover mówią, że WinRT + XAML służy do budowania interfejsu GUI Metro (rzecz z kafelkami w oknie 8!) I wydaje się, że WPF jest używany tylko na pulpicie w oknie 7/8 i jest blisko związany z Silverlight.

Jak wypada Windows 8 Runtime (aplikacje WinRT / Windows Store / Windows 10 Universal App) w porównaniu z Silverlight i WPF?

  • Pulpit to miejsce, w którym żyją stare aplikacje (czerwony. WFP).
  • Nowa klasa aplikacji, aplikacje Metro, może być budowana na wiele sposobów, w tym za pomocą VB.NET, C # lub C ++. Te trzy opcje językowe mogą używać XAML do tworzenia interfejsu użytkownika. Alternatywą jest użycie JavaScript / HTML5 / CSS do tworzenia zarówno interfejsu użytkownika, jak i kodu aplikacji.

Moje prawdziwe pytanie brzmi: czy nie ma JEDNEGO dobrego sposobu na budowanie GUI w świecie okien?

A jeśli nie, jakich technologii należy użyć w Windows 7, Window 8 (Desktop i Metro), Window Phone (i Windows 10!), A nawet x-box.

Czy w ten sposób można porównać różne technologie?

Jak myślisz, w co warto zainwestować czas?

Alf Nielsen
źródło
5
„WPF czy WinRT?”. Naucz się zarówno WPF dla komputerów stacjonarnych, jak i środowiska wykonawczego systemu Windows dla urządzeń mobilnych. Te technologie mają wiele cech wspólnych, takich jak XAML i bardzo podobna struktura. Możesz nawet napisać kod obsługujący obie platformy, jako przenośne biblioteki klas.
Clemens
2
@Clemens Ostatni fragment jest nieco mylący. Standardowe biblioteki .NET muszą zostać przebudowane / przeznaczone do pracy z aplikacjami WinRT, co może wymagać zmiany kodu dla niektórych klas.
BradleyDotNET
3
Windows Forms nie jest całkowicie martwy, ale prawdopodobnie nie chcesz go używać, chyba że już go znasz.
Casey
2
Twój cel, jakim jest „pozostanie na bieżąco w interfejsie GUI systemu Windows”, jest moim zdaniem raczej szkodliwy. W perspektywie długoterminowej dla przeciętnego dewelopera jest to niewielka przyszłość. MS wiele razy zmieniało swoje narzędzia dla GUI, podczas gdy JavaScript i HTML5 zdobywały popularność. Jeśli zarabiasz na życie, zapomnij o wszystkim innym. Kilka wyjątków od tego, jeśli pracujesz dla MS lub zewnętrznego dostawcy GUI lub chcesz utknąć w utrzymaniu starego kodu.
NoChance
3
Nawet MFC nie jest całkowicie martwy, podobnie jak Win32. Ale MFC na mecze jest tym, co wybiorą szaleńcy
Lothar

Odpowiedzi:

132

Jest tu dużo, ale tutaj idzie:

  • Czy Windows Forms (Winforms) jest martwy ? Nie. Jest nadal aktywnie wspierany. To powiedziawszy, jest to okropna technologia do pracy (przynajmniej jeśli znasz magię WPF)
  • Jeśli chcesz zbudować dobrze wyglądającą, dobrze zaprojektowaną aplikację desktopową (klasyczną, a nie Metro), WPF jest odpowiedzią w czystym rozumieniu .NET. Państwo może używać WinRT API (takie jak ich klas gniazdo), ale nie można ich uruchomić na systemach operacyjnych przed systemem Windows 8. UI jest nadal WPF.
  • Aplikacje WinRT są przeznaczone dla Sklepu Windows 8 (są również dostępne w Sklepie Windows 10). Nie możesz użyć WPF tutaj ani WinRT na pulpicie, więc miejsce wdrożenia określa, czego używasz. Masz rację w zakresie zrozumienia dostępnych języków / technologii.
  • Windows Phone 8 (obecnie przestarzały) używa zmodyfikowanego środowiska wykonawczego WinRT (zmieniło się to w systemie Windows 10). W przypadku Win8 / WP8 można używać aplikacji „Universal”, aby udostępniać większość kodu między standardową aplikacją WinRT a aplikacją dla systemu Windows Phone.
  • System Windows 10 korzysta z platformy Universal Windows Platform (UWP) opartej na platformie .NET Core. Kod opracowany dla systemu Windows 10 może być również używany na Xbox One, Windows Phone 10 i HoloLens. WPF jest nadal dla „standardowych” aplikacji komputerowych.
  • XBox jest trudny. XNA odeszło, a Microsoft wydaje się odchodzić od treści tworzonych przez społeczność dla platformy. To powiedziawszy, Unity3D można wdrożyć na XBox i uważam, że standardowy programowanie DirectX (C ++) działa na to. Aplikacje Universal Windows Platform można również wdrażać na Xbox One i wydaje się, że jest to strategia Microsoftu na przyszłość.

Jeśli chodzi o to, na co spędzać czas, to zależy od tego, na co się wybierasz :). Nauka WPF / UWP + XAML przyniesie Ci wiele korzyści, jeśli chcesz pozostać „na bieżąco” w tworzeniu GUI .NET, więc to właśnie wybrałbym. WPF ma najwięcej funkcji, więc zaczynając od tego, wystarczy znaleźć obejścia tego, czego brakuje w UWP (lub dowolnej innej technologii opartej na XAML).

Jeśli to zrobisz, upewnij się, że nauczyłeś się wzorca MVVM (Model-View-View Model). Działa bardzo dobrze z technologiami opartymi na XAML i umożliwia udostępnianie dużej ilości logiki między aplikacjami WPF i UWP. Ta sama logika może być również używana, jeśli ostatecznie opracujesz aplikacje Xamarin na iOS / Android itp.

Pamiętaj, że do tworzenia prawdziwych gier będziesz potrzebować rzeczywistego szkieletu gry (takiego jak Unity3D lub nawet XNA). Możesz to zrobić w WPF i jest to lepszy wybór niż Winforms, ale żaden z nich nie jest tak naprawdę przeznaczony do gier.

BradleyDotNET
źródło
Dzięki za odpowiedź, moja mini gra zaczęła się od XNA, więc przykro mi, że ją usuną. Ale nie mogę się doczekać, aby zobaczyć, co przyniesie nam system Windows 10.
Alf Nielsen,
@AlfNielsen Nie jestem pewien, kiedy nastąpi koniec wsparcia, ale z pewnością wydaje się, że nie będą go aktualizować w najbliższym czasie.
BradleyDotNET,
2
Wygląda na to, że VS będzie w pełni wspierać Unity, więc chwała za przewidzenie tego! :)
BK
2
Szybkość renderowania WPF przy użyciu klas WPF, takich jak Visual, jest straszna dla gier lub czegokolwiek w czasie rzeczywistym.
Skrzydłowy Sendon
2
@WingerSendon Spójrz RenderTransform, Viewport3Di tym podobne. Są przyspieszane sprzętowo.
BradleyDotNET
26

To dość stary wątek, ale tak jak natknąłem się na to przez Google (z powodu zainteresowania), może ktoś inny też mógłby tu dotrzeć. To jest pytanie, które jest ciągle zadawane przez nowych programistów. Więc chciałbym również odpowiedzieć na kilka rzeczy, teraz, gdy Windows 10 jest oficjalnie wydany.

Po pierwsze, nie należy już zaczynać od Windows Forms. Na razie jest to najbardziej dojrzała technologia, ale nie będzie dalszego rozwoju Windows Forms, jest tylko w fazie konserwacji. WPF jest aktywnie rozwijany (ostatnio czytałem). Ale teraz aplikacje Windows Universal Apps (WinRT) nie muszą już być używane na pełnym ekranie i mogą być używane w trybie okienkowym, podobnie jak inne aplikacje komputerowe (WPF i WinForms). Zwiększa to znacznie ich użyteczność na komputerach innych niż tablety. Wierzę, że będzie to również przyszłość aplikacji komputerowych. Chociaż oprogramowanie WPF jest tradycyjnymi aplikacjami komputerowymi (bez uprawnień, tylko UAC). Tak czy inaczej, bez względu na to, czy uczysz się programowania WPF czy WinRT (używając .Net), w końcu nauczysz się obu. Oba są XAML + C # (lub innym językiem .Net). Właśnie uczyłem się WPF, kiedy pojawił się WinRT z Windows 8. Czułem się jak w domu, tylko kilka drobnych zmian, do których bardzo szybko się przyzwyczaiłeś. Nie mam pewności co do scenariusza MVVM (powiązanie danych) w WinRT. Wciąż sam uczę się tego aspektu WPF.

Window 10 właśnie został uruchomiony. Windows 8 / 8.1 nie odniósł takiego sukcesu jak Windows 7. Więc jeśli chcesz zbudować aplikację, która ma szersze grono odbiorców, powinieneś na razie skorzystać z WPF. Ale w niedalekiej przyszłości WinRT będzie właściwą drogą.

Na pytanie „jakich technologii należy używać w systemach Windows 7 , Window 8 (Desktop i Metro), Window Phone (i Windows 10!), A nawet x-box” ”, jedyną odpowiedzią są aplikacje uniwersalne systemu Windows. To jest dokładny powód, dla którego ta struktura została stworzona. Jedna technologia do tworzenia aplikacji na wszystkie urządzenia. Komputer stacjonarny, tablet, telefony (w tym Android korzystający z platformy Xamarin w pakiecie z programem Visual Studio 2015), Xbox i IoT (Internet rzeczy).

Prateek Jain
źródło
19
Wydaje się, że aplikacje uniwersalne nie działają w systemie Windows7 lub Windows8. „Aplikacje uniwersalne” są „uniwersalne” tylko dla urządzeń z systemem Win10.
Dragontamer5788
Xamarin to nadal osobna rzecz (nie ma aplikacji Universal Apps) i nie jestem pewien, czy można je również wdrożyć na Xbox.
BradleyDotNET
2
@PrateekJain: NIE w zakresie uruchamiania aplikacji UWP w systemie Windows 8: stackoverflow.com/a/30317960/199364
ToolmakerSteve
6
WinForms jest nadal świetny dla szybkich i brudnych GUI - WPF jest fajny, ale wymaga dużo standardowego kodu (i stromej krzywej uczenia się), aby używać "poprawnie", nawet bez MVVM. Szkoda, że ​​WPF nie ma prawdziwych możliwości RAD - a XAML jest po prostu tak gadatliwy .
Dai
1
Na wszystkie urządzenia mojego tyłka. To znowu Microsoft Speak w najlepszym wydaniu. Tak jak za dawnych czasów, kiedy nazywano go wieloplatformowym, ponieważ działał na Windows95 i Windows2000. Inną rzeczą jest to, że nigdy nie chcę, aby aplikacje komputerowe miały te same brzydkie rozmiary przycisków, a zwłaszcza drzew i list, których muszę używać do obsługi dotykowej. Dlatego nie ma dla mnie UWP
Lothar
23

Spróbuję odpowiedzieć tylko na jedno z Twoich pytań:

Czy Windows Forms jest całkowicie martwy?

Nie, technologia Windows Forms nie umarła. Powiem wam dlaczego. WPF i XAML to bardzo wszechstronna i złożona technologia, dzięki której można zbudować bardzo ładny interfejs użytkownika. Ale! Ta technologia wymaga głębokiej wiedzy. W przypadku podstawowych układów nie potrzebujesz tak dużej wiedzy, ale w przypadku niektórych zaawansowanych układów powinieneś mieć głęboką wiedzę, a kiedy zacząłem z tą technologią i spędziłem dużo czasu, szukając wskazówek w google. Kiedy więc potrzebuję prostych formularzy do wprowadzania danych przez użytkownika, zawsze wybieram technologię Windows Forms, która jest bardzo prosta i bezpośrednia. Jest to również powód, dla którego ta technologia odniosła duży sukces, gdy przyszła na świat. Kiedy zaczynasz od WPF, musisz również wiedzieć, czym jest wzorzec projektowy MVVM, a niektórzy nie doświadczeni programiści są z tym myleni.

Tomáš Opis
źródło
3
To moja ulubiona odpowiedź. W przypadku małych aplikacji używam Windows Forms, ponieważ jest to tak szybkie i łatwe do rozpoczęcia. Do skomplikowanego kodu produkcyjnego używam C ++ (z WTL) i w całości .NET.
Robinson
8
Dla czytelników, którzy nie są zaznajomieni z WPF, pewne wyjaśnienie - dla podstawowych układów aplikacji WPF wymaga mniej więcej takiego samego wysiłku. Domyślny szablon aplikacji VS WPF zapewnia ten sam punkt początkowy co WinForms. MVVM wcale nie jest obowiązkowe do pracy z WPF, ale w rzeczywistości używanie Binding bez żadnej struktury MVVM jest również łatwe w przypadku prostych aplikacji. Platforma WPF jest technologicznie bliższa WinRT i UWP, więc dla własnego dobra załóżmy, że Windows Forms jest martwy dla czegokolwiek innego niż utrzymywanie starszych aplikacji.
za
3
Winforms doskonale nadaje się do tworzenia aplikacji konsolowych nowej ery. Np. Niezwykle podstawowe sterowanie zakładkami z wieloma przyciskami i danymi wejściowymi użytkownika, które skutecznie nakładają skórkę na to, co normalnie byłoby aplikacją konsolową.
rolki
16

Jest kwiecień 2016 r. I nadal nie ma na to jednoznacznej odpowiedzi. Opracowujemy bardzo nowoczesną aplikację komputerową do monitorowania wydajności w czasie rzeczywistym, która musi renderować wiele wykresów i ekranów, zmieszanych z tekstem i różnymi innymi grafikami. Nasza aplikacja jest C #, WPF z .NET Framework 4.5.2, ale nadal piszemy niektóre komponenty przy użyciu WinForms i GDI +, aby uzyskać akceptowalną wydajność. Po prostu nie osiągnęliśmy tego z WPF. Stworzyliśmy nawet kilka wyświetlaczy w aplikacji z DirectX, ale to dodaje dużo złożoności, którą może obsługiwać tylko kilku członków zespołu. Prostota i czysta prędkość, jaką możemy uzyskać dzięki hostowaniu wyświetlacza WinForms w ramach WPF i szybkości GDI +, daje nam to, czego potrzebujemy, kosztem czystej struktury View / ViewModel, a także radzenia sobie z różnymi problemami z przestrzenią powietrzną. Nasza aplikacja jest dość specjalistyczna i chciałbym całkowicie pozbyć się WinForms, ale niestety nie jest to jeszcze możliwe w naszym przypadku. Aby uzyskać czystą wydajność, musisz wybrać DirectX lub WinForms.

Gareth
źródło
1
Powiem ci, że niektóre rzeczy są bardziej wydajne w WinForms. Są inne rzeczy (w szczególności animacje), w przypadku których jest odwrotnie. To prawda, przejście na DirectX prawdopodobnie byłoby jeszcze lepsze, ale nikt nie chce tego robić, jak wskazałeś.
BradleyDotNET
1
Po WinRT postanowiłem zacząć szukać gdzie indziej. Moi klienci i ja nie możemy zbytnio polegać na tym, czego chce Microsoft, ponieważ wpływa to na wyniki finansowe moje i moich klientów. Patrzę teraz na aplikację hostowaną samodzielnie, która wykorzystuje lokalny serwer sieciowy do obsługi stron aplikacji lokalnie w przeglądarce użytkownika lub wbudowanej kontrolce przeglądarki w aplikacji WinForm / WPF. Upraszcza to programowanie, przybliża mnie do kompatybilności między platformami i oczywiście zmniejsza koszty.
TheLegendaryCopyCoder
6

Moje dwa centy ... jeśli chcesz prawdziwie uniwersalnych aplikacji, czyli programów, które mogą działać na DOWOLNYM systemie operacyjnym, w tym Windows, WinForms nadal jest do zrobienia. Po prostu upewnij się, że jesteś kompatybilny z CLR i możesz wdrażać na komputerach Mac i Linux za pośrednictwem Mono. Ogromna korzyść. XAML może być fajny, ale nie zostanie przeniesiony na inne systemy operacyjne.

Osobiście uważam, że model biznesowy UWP z piaskownicą (ruchomą?) Jest przerażający; przeciwdziała otwartości, którą Windows reprezentował od samego początku.

Jeroen S.
źródło
4

Z technologiami Microsoft pracuję od ponad 10 lat. Najważniejszą rzeczą, której się nauczyłem, jest nie tylko słuchanie tego, co oferuje Microsoft. Kiedy Microsoft mówi, że to przyszłość, ma 50% szans na niepowodzenie. Microsoft na pewno zrobi wszystko, co w jego mocy, aby promować produkty, w które zainwestował, ale to nie znaczy, że powinieneś podążać. Zobacz, co się stanie z WCF i Silverlight.

Chociaż WPF jest bardzo przyjemną platformą do nauki, ma ogromną krzywą uczenia się. Nie sądzę, aby jakikolwiek programista mający mniej niż 5-letnie doświadczenie w programowaniu mógł dobrze wykonać WPF.

Postępując zgodnie ze wzorcem MVVM, przekonasz się, że zrobienie czegoś stosunkowo łatwego w WinForm może stać się bardzo trudne w WPF. Na przykład pokoloruj komórkę na podstawie jakiegoś warunku po aktualizacji lub przewiń wiersz w widoku i podświetl go.

Oczywiście możesz powiedzieć, że nie musisz robić MVVM. Po prostu umieść kod w kodzie i spraw, aby działał. Tak, to zadziała, ale jaki jest sens korzystania z WPF? Dlaczego nie skorzystać po prostu z formularza wygranej?

Jason Ching
źródło
1
Zgadzam się, że WPF ma intensywną krzywą uczenia się, ale kiedy już to minie, po prostu nie będzie powrotu do WinForms ... nigdy.
Krythic
4

Jest to stary wątek, ale ważny z obecnym postępem w zakresie platformy .NET, funkcjami języka C # i zwiększonym naciskiem na język C # jako wybór do tworzenia gier.

Szczerze mówiąc, WPF prawie nigdy nie jest wybierany jako platforma do gier ac #. Problemy z przestrzenią powietrzną WPF dość szybko odstraszyły ludzi. Nie sądzę, aby wiele (jeśli w ogóle) głównych tytułów lub głównych silników gier obsługiwało WPF jako platformę docelową z tego powodu. WPF to jednak świetna platforma do uruchamiania gier!

WinForms, będąc teraz w trybie konserwacji, nadal będzie ważnym wyborem przez wiele lat. Jest sprawdzony i stabilny. Z tego, co widziałem, nawet w 2017 roku WinForms jest nadal najpopularniejszą platformą wybieraną do tworzenia gier w języku C #.

Patrząc na dane z ankiety dotyczącej sprzętu Steam , widać, że w momencie pisania tej odpowiedzi (lipiec 2017 r.) Dominującą platformą do gier na komputery PC jest obecnie 64-bitowy system Windows 10 z 50% udziałem w rynku, a następnie 64-bitowy system Windows 7 z 32% i Windows 8.1 64-bit na prawie 7%. Udział w rynku wszystkich innych platform OS jest tak mały, że nie warto brać pod uwagę niczego innego niż te trzy.

Biorąc pod uwagę obecny stan gier komputerowych, WinForms jest najczęstszym mianownikiem dla wszystkich 3 najlepszych platform PC. Patrząc w przyszłość, platforma UWP będzie najlepszą platformą docelową do tworzenia gier C #, ponieważ Windows 7 i 8 stracą znaczący udział w rynku na rzecz Windows 10, chyba że pojawi się nowa platforma, która go zastąpi. Więc to tylko liczby.

W przypadku wyboru w oparciu o najlepszy poziom kompatybilności na platformę systemu operacyjnego zamiast wspierania maksymalnego udziału w rynku, wybory byłyby bardziej następujące:

  • Windows 10: UWP
  • Windows 8.1: WinRT lub Windows Store
  • Windows 7: WinForms

Większość innych odpowiedzi koncentruje się na tworzeniu standardowych aplikacji Windows, ale tworzenie gier to zupełnie inna dziedzina i różne czynniki będą miały wpływ na twoje wybory, takie jak docelowy system operacyjny i to, jaki wybór interfejsu API grafiki lub silnika gry faktycznie obsługuje najlepiej.

Mike Johnson
źródło
Chociaż punkt widzenia gamedev jest ciekawy, nie rozumiem, dlaczego wybrałbyś framework GUI dla gamedev, w którym masz w pełni funkcjonalny silnik gry dla C #, taki jak Unity. Tylko kilka gier, które widziałem z klasycznym GUI, dotyczyło edycji danych gry (takich jak edycja mapy / zasobów)
Uwy
2
Z tego samego powodu wybierają silnik gry: samodzielne tworzenie natywnego okna i zarządzanie nim z poziomu zarządzanego kodu wymaga sporo pracy.
Mike Johnson,
3

WinRT jest na desktopie już od dłuższego czasu, piszę WinRT, który działa na moim deskopie. W systemie Windows 10 te aplikacje będą obsługiwać lokalizacje niezadokowane (w oknie, jak można je tradycyjnie znać).

Nie polecałbym WinForms ani WPF nikomu, kto zaczyna dzisiaj. Powinni przede wszystkim uczyć się WinRT / XAML. I naucz się Win32 / .net tak, jak tego potrzebują, w zależności od wybranego języka.

„Mówią, że WinRT + XAML jest przeznaczony do budowania GUI Metro (sprawa kafelków w Windows 8!)” - To jest tak nadmierna abstrakcja, że ​​jest bezużyteczna. WinRT to środowisko uruchomieniowe, podobnie jak Win32, nie jest przeznaczone tylko dla GUI, więc „mówią” to kompletne BS. XAML to warstwa interfejsu użytkownika (podobnie jak XAML w WPF), ale mówiąc, że to Metro GUI jest również błędne, nie ma już czegoś takiego jak Metro GUI. XAML to warstwa interfejsu użytkownika systemu Windows. I "Kafelki Windows 8!" jest wyrazem wizji tunelowej niektórych ludzi. To tak, jakbym powiedział, że Win32 jest menu startowym. Widzisz, jakie to śmieszne stwierdzenie.

Gavin Williams
źródło
8
Aby wyjaśnić moje pierwotne stwierdzenie, WinRT nie może być używany do tworzenia „tradycyjnej” aplikacji komputerowej. Między innymi z tego powodu jest mnóstwo powodów, aby uczyć się WPF (nie tyle WinForms). Jeśli nic więcej, w tym samym czasie skutecznie nauczyłeś się WinRT (jak zaznaczam w mojej odpowiedzi). Ponadto nie jesteśmy w pobliżu miejsca, w którym aplikacje WinRT rządzą rynkiem (zwłaszcza aplikacje biznesowe). WPF jest nadal niezwykle cenny.
BradleyDotNET
7
Jeśli WinRT nie jest powiązany z tworzeniem aplikacji pełnoekranowych, czy możesz mi powiedzieć, jak możesz go użyć do zbudowania aplikacji okienkowej, która działa na dowolnej faktycznie wydanej wersji systemu Windows? Albo jak go użyć do napisania aplikacji działającej na ponad 10% komputerów z systemem Windows (tj. Windows 7 i XP)? Domyślam się, że większość programistów chce być w stanie dotrzeć do ponad 10% użytkowników systemu Windows. Dopóki Windows 8 lub 10 nie zdobędzie poważnego udziału w rynku, WPF nadal będzie niezbędne dla wielu aplikacji. WinRT może być warstwą środowiska wykonawczego, ale nie zmienia to faktu, że nie może uzyskać dostępu do wielu rzeczy (pełne), jakie może mieć Win32.
John Colanduoni
1
@JohnColanduoni, jak powiedział, dla każdego, kto zaczyna dzisiaj (14 marca) WinRT jest drogą do zrobienia, win10 był i jest darmowy jako aktualizacja przez kilka miesięcy i będzie dostępny przez kilka następnych miesięcy, więc tak, win10 zdobywa ogromny udział w rynku. tak, nie wszyscy ruszyli na wygraną10, ale też kilka dni temu dowiedzieliśmy się, że lotnisko we Francji nadal używa win3.1
John Demetriou
3
@GavinWilliams OK, gdzie są twoje statystyki, które dają systemowi Windows 10 znaczący udział w rynku w dowolnym segmencie rynku? Czy twierdzisz, że modyfikatorzy usunęli Twój komentarz z linkiem do Twojego źródła, ale pozwolili Ci go umieścić? Nie kupuję tego. Zgadzam się, że XP nie jest wart wspierania, ale uniwersalne aplikacje Windows 10 nie obsługują nawet Windows 8.1, nie mówiąc już o Windows 7. Przyjęcie nie ma miejsca, aby usprawiedliwić uniwersalność systemu Windows i spowalnia .
John Colanduoni,
3
@GavinWilliams OK, zignorujmy, że 30% to dużo mniej niż 97% (wsparcie, jakie otrzymałeś, gdybyś używał WPF) i że te dane są przydatne tylko dla programistów gier wideo. W przypadku gier wideo dość łatwo jest celować w obie; chyba że robisz coś naprawdę trywialnego, będziesz chciał używać DirectX / OpenGL, co oznacza, że ​​musisz po prostu hostować go w oknie / na pełnym ekranie. Jeśli nie chcesz ich używać, naprawdę będziesz potrzebować WPF, ponieważ interfejs użytkownika WinRT nie pozwala na rysowanie w trybie natychmiastowym bez hostowanego DirectX / OpenGL (jak robi to WPF). Więc co z WinRT uzasadnia 70% redukcję wielkości rynku?
John Colanduoni,
1

Wpadłem na to pytanie jakiś rok temu. Doszedłem do wniosku, że XAML, WPF i WinRT to na początek odpowiednie środowisko programistyczne.

Bardzo polecam użycie .Net Framework dla warstwy danych (w tym usług internetowych i warstwy RESTful (JSON)) oraz czystego HTML5 / CSS3 i JavaScript do warstwy prezentacji internetowej.

W systemie Windows 10 można zintegrować dowolną aplikację internetową jako aplikację metra zaraz po wyjęciu z pudełka.

WinRT, XAML, WPF i podobne rzeczy ms działają tylko w systemie Windows i mają wiele ograniczeń.

Tak więc po roku nadal jestem bardzo zadowolony z mojej decyzji, by nie używać WinRT lub XAML w moim nowym projekcie.

Khamis
źródło
3
O czym mówisz? Tak, to świetny wybór, jeśli chcesz stworzyć aplikację internetową. Jeśli chcesz stworzyć aplikację komputerową, tak nie jest. Możesz użyć Katany i lokalnie hostować WebApi i stworzyć aplikację komputerową, co, jak sądzę, uczyniłoby tę odpowiedź bardziej odpowiednią.
Casey
1
OP zapytał o GUI systemu Windows i WPF lub Winrt - nie o aplikacje internetowe.
ezaspi
6
Także, ja osobiście znaleźć te technologie znacznie trudniejsze do pracy z systemem (niezrozumiały układ, bez kontroli czasu kompilacji na kod, etc.) Komputer stacjonarny nie jest jeszcze martwy :)
BradleyDotNET
1
Zgadzam się, HTML to uniwersalny interfejs użytkownika i powinien być również przeznaczony na komputery stacjonarne. Czuję, że musimy uprościć wszystkie te różne ramy i przestać wprowadzać coraz więcej i więcej. Większość z nich nie jest potrzebna. Po prostu naucz się HTML i ASP, a następnie samodzielnie hostuj swoją witrynę w aplikacji WinForm. Aplikacja WinForm zawiera kontrolę nad serwerem sieciowym i przeglądarką internetową. W rezultacie oszczędzasz czas, skupiasz się na opanowaniu jednego języka i technologii, programujesz szybciej, oszczędzasz pieniądze klientów, Twoje aplikacje są przyszłościowe i znacznie bardziej przenośne.
TheLegendaryCopyCoder