Przeczytałem większość głównych wątków na temat WPF vs. WinForms i utknąłem w niefortunnej ambiwalencji, w którą możesz wpaść, decydując się między wypróbowaną i prawdziwą poprzednią technologią (Winforms), a jej następcą (WPF).
Jestem wieloletnim doświadczonym programistą Delphi, który w końcu robi skok do C #. Moi koledzy programiści Delphi zrozumieją, że cieszę się, że Anders Hejlsberg, znany z Delphi, był architektem C #. Mam silne uzależnienie od niestandardowych komponentów VCL firmy Delphi, zwłaszcza tych, które są zaangażowane w tworzenie wieloetapowych kreatorów i komponentów, które działają jak pojemnik na komponenty potomne.
W tym kontekście mam nadzieję, że ci z was, którzy przeszli z Delphi na C #, mogą mi pomóc w mojej decyzji WinForms vs. WPF o napisaniu moich początkowych aplikacji. Uwaga: jestem bardzo niecierpliwy, gdy kodowanie i takie rzeczy, jak pełnoprawna autouzupełnianie i odpowiednia obsługa debuggera mogą dla mnie stworzyć lub zepsuć projekt, w tym możliwość znalezienia łatwo dostępnych informacji na temat funkcji API i wywołań, a tym bardziej obejścia błędów .
Wątki SO i komentarze z zakresu dat na początku 2009 r. Budzą moje obawy dotyczące WPF, jeśli chodzi o potencjalne frustracje, które mogłyby zakłócić moje kodowanie programowania C # UI. Z drugiej strony spędzanie nadmiernej ilości czasu na uczeniu się technologii API, która nawet, jeśli nie zostanie porzucona, wkrótce zostanie zastąpiona (WinForms), jest równie kłopotliwa i uważam, że obsługa GPU jest kusząca.
Stąd moja ambiwalencja. Ponieważ nie nauczyłem się jeszcze żadnej technologii, mam rzadką okazję, aby zacząć od nowa i nie muszę stawić czoła wielkiej krzywej „oduczania”, o której ludzie wspominali w różnych wątkach, gdy programista WinForms przechodzi na WPF. Z drugiej strony, jeśli korzystanie z WPF będzie po prostu zbyt frustrujące lub będzie miało inne poważne negatywne konsekwencje dla niecierpliwego programisty RAD, takiego jak ja, to po prostu pozostanę przy WinForms, dopóki WPF nie osiągnie tego samego poziomu wsparcia i łatwości użycia. Aby dać konkretny przykład mojej psychologii jako programisty, użyłem VB, a następnie Delphi, aby całkowicie uniknąć bardzo prawdziwego bólu związanego z kodowaniem za pomocą MFC, biblioteki interfejsu użytkownika systemu Windows, przez którą wielu programistów cierpiało podczas tworzenia wczesnych aplikacji Windows. Nigdy nie żałowałem, że udało mi się uniknąć MFC.
Byłoby również pocieszające wiedzieć, czy Anders Hejlsberg miał rękę w architekturze WPF i / lub WinForm, i czy istnieją jakiekolwiek różnice w twórczej wizji i łatwości użycia zawartych w którejkolwiek bazie kodu. Na koniec, dla programistów Delphi, daj mi znać, ile kosztuje „IDE schock”, gdy używam WPF w przeciwieństwie do WinForm, szczególnie jeśli chodzi o obsługę debuggera. Docenione zostaną również wszelkie komentarze rynku pracy zaktualizowane w 2011 r.
Odpowiedzi:
Jeśli masz doświadczenie w Delphi, będziesz rozczarowany WinForms. Będziesz próbował robić rzeczy, które były łatwe w VCL, ale okazało się, że są boleśnie trudne, a nawet niemożliwe. WPF będzie znacznie mniej ograniczający.
Oto na przykład kilka ograniczeń WinForm, na które natrafiliśmy:
WPF jest pod pewnymi względami trochę bardziej goły niż WinForm, ale jest znacznie bardziej rozszerzalny.
WPF ma bardzo stromą ścieżkę uczenia się, ale jeśli wybierzesz dobrą książkę (np. „ WPF 4 Unleashed ”), pomoże ci to przetrwać najgorsze - i będziesz zadowolony z pracy z frameworkiem, który nie powstrzyma cię tak, jak WinForms.
źródło
Zazwyczaj jestem bardzo zaskoczony, gdy ludzie mówią, że nie mieli dobrego doświadczenia z WPF. Jestem programistą, który przeszedł z C ++ / MFC na C # / WinForms na C # / WPF. Przejście z WinForm do WPF nie było łatwe, ponieważ nauka XAML nie jest bardzo łatwa, ale kiedy już ją opanujesz, jest to niesamowita technologia. Ja, na przykład, nie mogę wrócić do WinForms. WPF jest po prostu niesamowity.
Inną rzeczą, która mnie niepokoi, jest to, że ludzie zwykle kojarzą WPF tylko z interfejsem użytkownika. Moim zdaniem jest on 100 razy lepszy niż WinForm w łatwości projektowania interfejsu użytkownika, ale istnieje wiele innych powodów, dla których pokochasz korzystanie z WPF:
Być może nie zgadzasz się ze mną w sprawie ostatniego punktu, który byłby powodem do nauki WPF, ale jeśli mnie zapytasz, jest to jeden z największych. Uczysz się WPF, możesz łatwo przejść do Silverlight. Silverlight rośnie w siłę, a także jest niesamowitą technologią.
A najważniejszym powodem jest przyszłość. Może zostać połączony z Silverlight, ale umiejętności pozostaną takie same.
Więc zdecydowanie doradzę ci, abyś poszedł drogą WPF.
źródło
Najwyraźniej WPF to sposób na myślenie w przyszłości. Opanowanie go jest trudne, ale platforma jest bardzo dobrze zaprojektowana i elastyczna.
Kilka wskazówek:
źródło
Powinienem najpierw zauważyć, że jestem głównie programistą asp.net, chociaż już wcześniej dużo używałem winforms. Przejście na WPF nie jest tak duże, jak to robisz (imo) po około tygodniu (ponad 40 godzin), większość była znowu drugą naturą.
W każdym razie uważam, że Anders Hejlsberg jest jednym z architektów stojących za WPF, przynajmniej według wydawców tej książki->
„ Jako jeden z architektów WPF Chris Anderson umiejętnie wyjaśnia nie tylko„ jak ”, ale także„ dlaczego ”. Ta książka jest doskonałym źródłem informacji dla każdego, kto chce zrozumieć zasady projektowania i najlepsze praktyki WPF. ”–Anders Hejlsberg, pracownik techniczny, Microsoft Corporation
http://www.amazon.com/Essential-Windows-Presentation-Foundation-WPF/dp/0321374479
źródło
Winforms jest prawie identyczny z rozwojem Delphi. I oczywiście jest ku temu powód. Podobnie jak model obiektowy Delphi / Object Pascal silnie wpłynął na C #, tak system formularzy wpłynął na Winforms.
WPF wydaje się być kierunkiem, w którym zmierzają; powiedziano, że (wspaniały!) interfejs użytkownika VS2010 jest oparty na WPF, w przeciwieństwie do poprzednich generacji, które były zbudowane na Winforms.
Jeśli chcesz pozostać w strefie komfortu, skorzystaj z winforms. Jeśli chcesz być na bieżąco z najnowszymi i najlepszymi, zanurz się w WPF.
źródło
Nie jestem programistą Delphi, ale tak, pracowałem zarówno nad WinForm (mocno), jak i WPF (mniej niż średnio). Zgadzam się z tobą w pewnym stopniu na poziomie frustracji dla kogoś, kto zmieniłby WinForm na WPF, ponieważ ja sam jestem w takiej sytuacji, ale tylko do momentu, kiedy się do tego przyzwyczaiłem. Dowiedz się i zobacz, jak cudowny i elastyczny z WPF jest w porównaniu z WinForm. Ma ciężką krzywą uczenia się, przynajmniej dla kogoś, kto pochodzi z Delphi, a nie Winform. Dla Ciebie zdecydowanie warto przejść na WPF zamiast WinForm i warto.
Na początek warto zajrzeć do poniższych linków:
źródło
Zrobiłem trochę pracy z Windows Forms (głównie na Pocket PC), a także inne środowisko inne niż .NET, które używało tych samych zasad. Kiedy przeniosłem się do WPF około trzy lata temu, przez pierwsze kilka miesięcy przysięgałem na to. W końcu po prostu „kliknęło” i nie oglądałem się za siebie - w rzeczywistości byłbym zepsuty, gdyby mój następny projekt wymagał ode mnie powrotu do Windows Forms.
Ostatnia aktualizacja formularzy Windows Forms miała miejsce w 2005 r. (VS 2005.) Wciąż tam jest, ale nie jest już poprawiana przez Microsoft. WPF jest nowym dzieckiem w aplikacjach komputerowych, więc jeśli zamierzasz przejść na platformę .NET za pomocą narzędzi MS, powiedziałbym, że jest to bezpieczny zakład. Niektórzy ludzie pchają Silverlight jako rozwiązanie komputerowe, ale kiedy spojrzałem na to jako możliwość, stwierdziłem, że ma zbyt wiele ograniczeń (co może mieć sens w kontekście sieci, ale nie tak bardzo na pulpicie).
Konkluzja: Istnieje stroma krzywa uczenia się i wciąż się jej uczę. Ale wszystko było tego warte. To świetna zabawa.
źródło
Jeśli masz zamiar pisać nowe aplikacje od zera, używanie WinForm byłoby błędem. Zasadniczo jest martwy z punktu widzenia inwestycji. Microsoft będzie to utrzymywał przez długi czas, ale nie dostaniesz żadnych nowych funkcji ani nowej pomocy itp. WPF jest wyraźnym kierunkiem dla aplikacji komputerowych na przyszłość na platformie MS.
Z perspektywy kariery znacznie lepiej jest znać WPF vs. WinForms. Z tych samych powodów powyżej. Będziesz także miał dobre podstawy do nauki Silverlight. Te dwie platformy nakładają się na siebie.
I na koniec, WPF to po prostu więcej zabawy. I mocniejszy.
Krzywa uczenia się jest bardziej stroma, daję ci to. Ale w końcu jest to bardziej satysfakcjonujące.
źródło
Jedną dodatkową kwestią, o której należy wspomnieć, jest to, że nie ma planu wsparcia WPF w trybie mono . Zdaję sobie sprawę, że nie interesowałeś się (mono) obsługą wieloplatformową, ale może być taka możliwość w przyszłości (jeśli korzystasz z Winforms). Prawdopodobnie nadejdzie wsparcie dla WPF w trybie mono (lub podobnym).
edycja: Jak wskazałem podany przeze mnie link i uwypuklony komentarz Gulshana, Moonlight to wysiłek typu open source prowadzony przez zespół mono w celu zapewnienia wsparcia Silverlight na wielu platformach .
źródło
Byłem podekscytowany, gdy usłyszałem o WPF, pomysł brzmiał świetnie, a wszystko, co widziałem, było piękne. Kiedy jednak zacząłem go używać w programie Visual Studio 2008 (co prawda w wersji beta), praca z projektantem / IDE była frustrująca i dziwaczna.
Umieściłem wtedy trochę informacji na swoim blogu:
http://blog.dantup.com/2007/08/visual-studio-2008-beta-2-first.html
http://blog.dantup.com/2007 /08/wpf-designer-cider-part-2.html
Nie próbowałem tego w 2010 roku, chociaż rozmawiałem z kilkoma osobami, które tak zrobiły, i wydaje się, że wciąż jest to trochę skomplikowane / denerwujące.
Myślę, że twoja aplikacja niewątpliwie będzie wyglądać / czuć się lepiej w WPF, ale myślę też, że zbudowanie zajmie ci więcej czasu, a po drodze uderzysz mocno głową.
źródło