it-swarm-eu.dev

WPF vs. WinForms - perspektiva programátora Delphi?

Četl jsem většinu hlavních vláken na WPF vs. WinForms a zjistil jsem, že jsem uvízl v nešťastné ambivalenci, na kterou se můžete při rozhodování mezi osvědčenou a skutečnou předchozí technologií (Winforms), a jejím nástupcem (WPF).

Jsem dlouholetý programátor Delphi, který konečně vede na C #. Moji kolegové Delphi programátoři tam pochopí, že jsem nadšený, když vím, že Anders Hejlsberg, Delphiho slávy, byl architektem za C #. Mám silnou závislost na vlastních komponentách VCL společnosti Delphi, zejména těch, které se podílejí na tvorbě vícestupňových průvodců a součástí, které fungují jako kontejner pro podřízené komponenty.

V této souvislosti doufám, že ti z vás, kteří přešli z Delphi na C #, mi mohou pomoci s rozhodnutím WinForms vs. WPF pro psaní mých původních aplikací. Všimněte si, že jsem velmi netrpělivý, když programování a věci jako plnohodnotné automatické dokončování a správná podpora ladicího programu mohou pro mě udělat nebo přerušit projekt, včetně toho, že mohu najít snadno dostupné informace o funkcích API a voláních a ještě více, zástupná řešení chyb .

Vlákna a komentáře SO v počátečním časovém období roku 2009 mě velmi znepokojují nad WPF, pokud jde o potenciální frustrace, které by mohly narušit mé kódování vývoje C # UI. Na druhou stranu, trávení nepřiměřeného množství času učením technologie API, která, i když není opuštěna, brzy bude nahrazena (WinForms), je stejně znepokojující a já zjistím, že podpora GPU je v tantalizaci WPF.

Odtud moje ambivalence. Protože jsem se dosud nenaučil ani tech, mám vzácnou příležitost začít znovu a nemusím čelit velké „odučovací“ křivce, kterou jsem viděl, jak se lidé zmiňují v různých vláknech, když se programátor WinForms přesune na WPF. Na druhou stranu, pokud použití WPF bude pro netrpělivého vývojáře typu RAD, jako jsem já, příliš frustrující nebo bude mít další závažné negativní důsledky, pak se držím WinForms, dokud WPF nedosáhne stejné úrovně podpory a snadnost použití. Abych vám dal konkrétní příklad v mé psychologii jako programátor, použil jsem VB a následně Delphi, abych se úplně vyhnul úplně skutečné bolesti kódování pomocí MFC, knihovny Windows UI, kterou mnoho vývojářů utrpělo při vývoji brzy Aplikace pro Windows. Nikdy jsem nelitoval svého štěstí při vyhýbání se MFC.

Bylo by také uklidňující vědět, zda Anders Hejlsberg měl ruku v architektuře WPF a/nebo WinForms a zda existují nějaké rozdíly v tvůrčí vizi a snadnosti použití obsažené v obou kódových základnách. Nakonec, pro programátory Delphi, dejte mi vědět, za kolik "IDE schock" jsem za použití WPF na rozdíl od WinForms, zejména pokud jde o podporu debuggeru. Ocení se také jakékoli komentáře na trhu práce aktualizované pro rok 2011.

38
Robert Oschler

Máte-li pozadí Delphi, budete ve WinForms zklamáni. Pokusíte se dělat věci, které byly ve VCL snadné, jen abyste zjistili, že jsou bolestivě obtížné nebo dokonce nemožné. WPF bude mnohem méně omezující.

Zde je například několik omezení WinForms, na které jsme narazili:

  • WinForms nemá nic, co by se srovnávalo s TAction, takže pokud jste zvyklí na kódování s akcemi, sdílení stejného textu a ikony mezi položkou nabídky a tlačítkem na panelu nástrojů a nabídkou klepnutím pravým tlačítkem, centralizací logiky povolení a aktualizací povoleného stavu na pozadí s OnUpdate ... nenávidíte WinForms, kde musíte udělat vše, co tvrdě a omylem náchylné.
  • WinForms 'old (.NET 1.0 vintage) MainMenu nepodporuje obrázky vedle položek nabídky a nový (představený v .NET 2.0) MenuStrip je prolezlý s chybami , který Microsoft odmítá fix (protože opravy chyb mohou narušit zpětnou kompatibilitu).
  • Mnoho ovládacích prvků, např. TreeView, jsou žalostně podhodnocené ve srovnání s jejich protějšky VCL (bolestně pomalý, bez kreslení vlastníka, chybí mnoho možností přizpůsobení atd.)
  • Neexistuje nic, co by připomínalo živou komunitu vývojářů třetích stran, na které jste v Delphi zvyklí. Existují knihovny pro kontrolu kvality, ale platíte za ně - bezplatné nabídky jako VirtualTreeView pro WinForms prostě neexistují.

WPF je v některých ohledech trochu holých kostí než WinForms, ale je nesmírně rozšiřitelnější.

  • Chceš něco jako TAction? WPF má ICommand, který je stejně bohatý jako jste zvyklí (ale nezapomeňte si přečíst článek MVVM Josha Smitha - za normálních okolností musíte manuálně povolit/zakázat vaše příkazy, když se stav změní, ale jeho verze automaticky spustí aktivační kód na pozadí, jako jste zvyklí u aplikace OnUpdate).
  • Chcete obrázky v nabídkách? To je vestavěné (a nikde tak blízko buggy jako ve WinForms).
  • WinForms vynechává losování majitele některých důležitých ovládacích prvků, ale pokud místo toho používáte WPF, nepotřebujete remízu vlastníka - pokud chcete, aby vaše uzly TreeView měly černý text následovaný modrým číslem v závorkách, stačí jej vložit do DataTemplate a bude to fungovat, není třeba žádný ošklivý kód pro kreslení vlastníka.
  • Chcete ovládat třetí strany? V mnoha případech je nepotřebujete, protože můžete rozšířit to, co existuje, způsoby WinForms a ano, vývojáři VCL mohou jen snít.

WPF má velmi strmou křivku učení, ale pokud si vyberete dobrou knihu (např. „ WPF 4 Unleashed "), pomůže vám to překonat to nejhorší - a budete rád pracuje s rámcem, který vás nebude držet zpátky tak, jak to bude WinForms.

21
Joe White

Obvykle mě velmi překvapilo, když lidé říkali, že s WPF neměli dobré zkušenosti. Jsem vývojář, který přešel z C++/MFC na C #/WinForms na C #/WPF. Přechod z WinForms na WPF nebyl snadný, protože učení XAML není příliš snadné, ale jakmile se ho zmocníte, jedná se o úžasnou technologii. Já se například nemůžu vrátit do WinForms. WPF je prostě úžasné.

Další věc, která mi vadí, je to, jak lidé normálně spojují WPF pouze s uživatelským rozhraním. Podle mého názoru je to opravdu stokrát lepší než WinForms ve snadném designu UI, ale existuje mnoho dalších důvodů, proč byste rádi používali WPF:

  1. UI, samozřejmě.
  2. Vázání. Prostě magie. Nejsilnější funkce po uživatelském rozhraní. Aplikace LOB z toho těží nejvíce.
  3. Příkazy.
  4. Oddělení obav. Designéři pracují na designu, programátoři programu.
  5. Připojené vlastnosti. Funkčnost ovládacích prvků třetích stran můžete rozšířit bez zdrojového kódu (ačkoli tento bod může být součástí prvního bodu).
  6. Snadný přechod na Silverlight (web i WP7)

Možná jste se mnou nesouhlasili s posledním bodem jako důvodem pro to, abyste se naučili WPF, ale pokud se mě zeptáte, je to jeden z největších. Naučíte se WPF, můžete snadno přejít na Silverlight. Silverlight se rozrůstá a je to také úžasná technologie.

A největším důvodem je budoucnost. Mohlo by to být sloučeno s Silverlight, ale dovednosti zůstanou stejné.

Takže vám velmi doporučím, abyste se vydali způsobem WPF.

13
Yogesh

Je jasné, že WPF je způsob, jak v budoucnu uvažovat. Zvládnutí je těžké, ale platforma je velmi dobře navržená a flexibilní.

Několik rad:

  • Začněte snadno: Nezkoušejte implementovat svůj první projekt pouze pomocí MVVM nebo efektních animací. Začněte jednoduše s okny, tlačítky a seznamy.
  • Využijte výhod DataBinding.
  • Kupte si knihu WPF Unleashed od Adama Nathana.
5
Eduardo Molteni

Nejprve bych si měl všimnout, že jsem většinou vývojář asp.net, i když jsem už dříve používal winformy. Přechod na WPF není tak velký, jak ho děláte (imo) asi za týden (40+ hodin), většina byla opět druhou přirozeností.

Každopádně jsem přesvědčen, že Anders Hejlsberg je jedním z architektů WPF, alespoň podle vydavatelů této knihy->

Chris Anderson jako jeden z architektů WPF obratně vysvětluje nejen„ jak “, ale také„ proč “. Tato kniha je vynikajícím zdrojem pro každého, kdo chce porozumět principům designu. a osvědčené postupy WPF. ”- Anders Hejlsberg, technický pracovník, Microsoft Corporation

http://www.Amazon.com/Essential-Windows-Presentation-Foundation-WPF/dp/0321374479

4
Spooks

Winforms je téměř identický s vývojem Delphi. A to samozřejmě má důvod. Stejně jako objektový model Pasph Delphi/Object silně ovlivňoval C #, tak systém formulářů ovlivňoval Winforms.

Zdá se, že WPF je směr, kterým věci směřují; bylo řečeno, že (nádherné!) uživatelské rozhraní VS2010 je založeno na WPF, na rozdíl od předchozích generací, které byly postaveny na Winforms.

Pokud chcete zůstat ve své zóně pohodlí, jděte s winformy. Pokud chcete dohnat nejnovější a největší, ponořte se do WPF.

2
3Dave

Nejsem programátor Delphi, ale ano, pracoval jsem na obou WinForm (těžce) a WPF (méně než středně). Souhlasím s vámi do určité míry na úrovni frustrace pro někoho, kdo by udělal přechod z WinForm na WPF, protože já sám jsem v takové situaci, ale pouze do doby, než jsem si na to zvykl. Naučte se a uvidíte, jak úžasné a flexibilní s WPF je ve srovnání s WinForm. Má těžkou křivku učení, přinejmenším pro někoho, kdo pochází z prostředí Delphi, a ne Winform. Pro vás je to rozhodně stojí za to jít směrem k WPF spíše než WinForm, a stojí za to čas.

Možná budete chtít podívat na níže uvedené odkazy, které začínají:

2
Kumar

Udělal jsem několik Windows Forms práce (většinou na Pocket PC), plus nějaké jiné non -.NET prostředí, které používalo stejné principy. Když jsem se před třemi lety přestěhoval do WPF, prvních pár měsíců jsem na to přísahal. Nakonec to „kliklo“ a já jsem se neohlédl zpět - ve skutečnosti bych byl zmatený, pokud by můj další projekt vyžadoval, abych se vrátil k Windows Forms.

Poslední aktualizace Windows Forms byla v roce 2005 (VS 2005). Stále je k dispozici, ale společnost Microsoft ji již nevylepšuje. WPF je nové dítě v bloku pro stolní aplikace, takže pokud se chystáte přesunout na platformu .NET pomocí nástrojů MS, řekl bych, že je to bezpečná sázka. Někteří lidé tlačí Silverlight jako desktopové řešení, ale když jsem se na to díval jako na možnost, zjistil jsem, že má příliš mnoho omezení (což může mít smysl ve webovém kontextu, ale ne tolik na ploše.)

Sečteno a podtrženo: Existuje strmá křivka učení a stále se to učím. Ale stálo to za to. Je to spousta zábavy.

1
MetalMikester

Pokud se chystáte psát nové aplikace od nuly, použití WinForms by bylo chybou. Z pohledu investic je v podstatě mrtvý. Microsoft to bude dlouho udržovat, ale nedostanete žádné nové funkce ani novou podporu atd. WPF je jasný směr pro desktopové aplikace pro budoucnost na platformě MS.

Z kariérního hlediska jste také mnohem lépe znát WPF vs. WinForms. Ze stejných důvodů výše. Také budete mít dobrou nohu na učení Silverlight. Mezi těmito dvěma platformami dochází k překrývání tun.

A konečně, WPF je prostě mnohem zábavnější. A silnější.

Křivka učení je strmější, dávám vám to. Nakonec je to však více prospěšné.

1
RationalGeek

Jednou z dalších úvah, které je třeba zmínit, je, že existuje žádný plán podpory WPF v mono . Uvědomuji si, že jste nezajímali žádný zájem o (mono) podporu napříč platformami, ale v budoucnu to může být příležitost (pokud půjdete s Winforms). Je pravděpodobné, že podpora WPF v mono (nebo podobném) přijde.

edit: Jak zdůraznil odkaz, který jsem uvedl, a Gulshanův komentář zvýraznil, Moonlight je open-source úsilí vedené mono týmem poskytovat cross-platformní Silverlight podpor .

0
Argalatyr