Vra

Die meeste beperkings en truuks met Windows-vorms is algemeen vir die meeste programmeerders.Maar sedert .NET 3.0 is daar ook WPF beskikbaar, die Windows Presentation Foundation.Daar word gesê dat jy "sexy toepassings" makliker daarmee kan maak en met .NET 3.5 SP1 het dit 'n goeie spoedverhoging by uitvoering gekry.

Maar aan die ander kant werk baie dinge anders met WPF.Ek sal nie sê dit is moeiliker nie maar jy moet “alles” van voor af leer.

My vraag:Is dit die moeite werd om hierdie ekstra tyd te spandeer wanneer jy 'n nuwe GUI moet skep en daar is geen tydsdruk vir die projek nie?

Was dit nuttig?

Oplossing

WPF stel jou in staat om wonderlike dinge te doen, en ek is mal daaroor ...maar ek voel altyd verplig om my aanbevelings te kwalifiseer wanneer ontwikkelaars my vra of ek dink hulle moet oorskakel na die nuwe tegnologie.

Is jou ontwikkelaars gewillig (verkieslik gretig) om die tyd te spandeer wat dit neem om te leer om WPF effektief te gebruik?Ek sou nooit gedink het om dit te sê oor MFC, of ​​Windows Forms, of selfs onbeheerde DirectX nie, maar jy wil waarskynlik NIE hê dat 'n span WPF in die loop van 'n normale dev probeer "optel" nie.siklus vir 'n afleweringsproduk!

Het ten minste een of twee van jou ontwikkelaars ontwerp-sensitiwiteite, en het individue met finale ontwerpgesag 'n ordentlike begrip van ontwikkelingskwessies, sodat jy WPF-vermoëns kan benut om iets te skep wat eintlik BETER is, in plaas van net meer "kleurvol" , met gratis animasie?

Werk 'n persentasie van jou teikenkliëntebasis op geïntegreerde grafiese skyfiestelle wat dalk nie die kenmerke ondersteun wat jy beplan het nie - of loop hulle steeds Windows 2000, wat hulle as kliënte heeltemal sal uitskakel?Sommige mense sal ook vra of jou kliënte werklik SEE oor verbeterde beeldmateriaal, maar nadat ek in die vroeë 90's deur interne maatskappy "Ons besigheidskliënte gee nie om oor kleure en prente" debatte geleef het, weet ek dat goed ontwerpte oplossings van jou mededingers sal hulle LAAT omgee, en die eintlike vraag is of die toestande reg is, om jou in staat te stel om iets aan te bied wat hulle NOU sal laat omgee.

Behels die projek grondontwikkeling, ten minste vir die aanbiedingslaag, om die bykomende kompleksiteit te vermy om te probeer inhaak by onversoenbare erfenis-steierwerk (Interoperasie met Win Forms is NIE naatloos nie)?

Kan jou bestuurder 'n beduidende afname in ontwikkelaarproduktiwiteit vir vier tot ses maande aanvaar (of afgelei word daarvan om op te let)?

Hierdie laaste uitgawe is te wyte aan wat ek graag aan dink as die "FizzBin" aard van WPF, met tien verskillende maniere om enige taak te implementeer, en geen oënskynlike rede om een ​​benadering bo 'n ander te verkies nie, en min leiding beskikbaar om jou te help om 'n keuse.Nie net sal die tekortkominge van watter keuse jy ook al maak eers baie later in die projek duidelik word nie, maar jy is feitlik gewaarborg dat elke ontwikkelaar op jou projek 'n ander benadering sal volg, wat 'n groot instandhoudingshoofpyn tot gevolg sal hê.Die frustrerendste van alles is die teenstrydighede wat jou voortdurend laat struikel, terwyl jy probeer om die raamwerk te leer.

Jy kan meer in-diepte WPF-verwante inligting vind in 'n inskrywing op my blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Ander wenke

Na drie maande van probeer om die hamer uit 'n lyn-van-sake (LOB) aansoek op WPF, ek het 'n punt van oorweging draai terug na Windows Vorms vir my projek, en in die ondersoek menings van ander mense se bereik, afgekom hierdie draad ...

Ja, WPF is 'n briljante tegnologie en dit het voordele wat ver strek verder as blote eye-candy ... die template en bindend vermoëns is groot voorbeelde. Die hele voorwerp model bied meer buigsaamheid en breër moontlikhede. Dit beteken egter nie maak dit die defacto platform vir toekomstige LOB aansoeke.

Die "probleme" wat WPF los in terme van die skeiding van GUI van besigheid logika is nie probleme wat kan nie geredelik in Windows Vorms opgelos word deur eenvoudig te begin met die reg argitektuur en mind-set. Selfs die voorwerp-pad bindende vermoëns van WPF weergegee kan word in Windows Vorms met 'n paar baie eenvoudige helper klasse. Die data sjabloon vermoëns van WPF is baie mooi, maar hulle is weer niks wat jy nie kan naboots in Windows Vorms Op daardie seldsame tye wanneer jy absoluut weet nie presies wat beswaar maak jy gaan verteenwoordig op enige gegewe deel van die skerm.

Waar Windows Vorms rasse wat voorlê is in terme van volwassenheid. Jy kan 'n dooie kat op Google nie swaai sonder slaan 'n paar blog waar iemand het opgelos 'n Windows Vorms probleem vir jou. WPF, aan die ander kant, het relatief minder leer hulpbronne wat beskikbaar is, minder persoonlike kontrole beskikbaar, en het nie soveel van sy tandekryprobleme het opgelos.

Op die hoogtepunt van 'n WPF vs Windows Vorms besluit het om die volwassenheid van die ontwikkeling omgewing wees. Windows Vorms redakteurs is gladde, reageer en intuïtief. Terugvoer oor foute kry om jou onmiddellik, die oplossings is gewoonlik voor die hand liggend, en die Compileren-> Debug-> wysig siklus in Windows Vorms is baie vinnig.

WPF aansoeke, aan die ander kant, het relatief pateties ontwerp tyd ondersteuning, met die design view all-te gereed is om hoender uit op die eerste ontmoeting van 'n fout, dikwels wat 'n projek te bou na die fix voor die ontwerper is bereid weer in te skop. Drag'n'drop van komponente van die toolbox kan net so goed nie ondersteun word, gegewe die wye verskeidenheid van omstandighede waaronder dit óf glad nie werk nie, of opbrengste heeltemal unintuitive resultate. Ten spyte van die belofte van die WpfToolkit, daar is nog nie 'n bruikbare Data Grid vir WPF dat enige vorm van resonable prestasie of ontwerp tyd vriendelikheid oplewer.

Ontfouting WPF aansoeke is 'n bietjie soos die oud ASP.NET debugging paradigma ... getref F5 -> wag -> bekendstelling -> fout -> stop -> los -> treffer F5 -> wag -> bekendstelling -> fout -> sug -> stop -> fix -> treffer F5 .... Alle XAML wat jou program loop is gesluit, en die opsporing van XAML spesifieke probleme is dikwels vervelige.

Die bottom line, eenvoudig gestel, is dat die ontwikkeling gereedskap vir Windows Vorms gaan hê jy gebons uit front-ends in 'n fraksie van die tyd van 'n WPF aansoek ... veral as jy skep meester-detail roosters of spreadsheet soos koppelvlak, wat die meeste LOB het. Met Windows Vorms, begin jy met 90% van die reeds vir jou gedoen werk.

Ek is 'n groot fan van die WPF argitektuur. Ek wens net die ontwerp-time instrument-stel het nie voel soos 'n pre-alpha debug-opbou.


Edit: Hierdie vraag is gepos oor NET 3.5 + Visual Studio 2008, maar NET 4.0 met Visual Studio 2010 skepe met 'n WPF data rooster. Terwyl baie verbeterings is aangebring aan die nuwe WPF ontwikkeling ervaring, my antwoord hier bly onveranderd, en ek wil graag die volgende voorstel te voeg:

As jy in 'n haas om RAD ontwikkeling te doen, gaan met Windows Vorms. As jy op soek na 'n goed Archit produseerekteer, onderhou, skaalbare, hulpbron firendly, multi-gebruiker line of Business aansoek, oorweeg ASP.NET MVC + HTML 5 + jQuery ... My projekte met hierdie tegnologie het gelei tot beter uitkomste, hoe gouer, vir my kliënte. MVC bied al van dieselfde template wat WPF doen, en jQuery in staat stel om animasies en komplekse interaksies. Meer belangrik, het 'n ASP.NET MVC + jQuery oplossing nie vereis jou eindgebruikers moderne desktops met ordentlike grafiese hardeware het.

Ek is sewe maande in die gebruik van WPF oor wat nou 'n kern stelsel vir my kliënt te word, en ek wil graag 'n paar meer gedagtes met julle deel oor die ervaring van leer en die gebruik van WPF as 'n lyn van besigheid aanbieding platform .

In die algemeen is die kommentaar wat ek gemaak het bo nog steeds ... Die ontwerp tyd ondersteuning vir WPF is nie hier nie. As jy in 'n groot haas om 'n ryk-kliënt aansoek by die deur te kry, gaan met Windows Vorms. Tydperk. Microsoft is nie in enige haas om die GDI / Windows staak Vorms platform, sodat jy kan reken op goeie ondersteuning vir 'n billike tyd in die toekoms.

WPF is nie maklik om te bemeester , maar dat moet nie waar jy jou besluit oor die vraag of om jou tyd en energie belê in die leer van WPF verlaat. Ten spyte van sy huidige gebrek aan volwassenheid, is WPF gebou rondom 'n paar nuttige, moderne konsepte.

In WPF, byvoorbeeld, jou belegging in goed-geskrewe besigheid voorwerpe met klank bekragtiging van logika is 'n soliede belegging. In teenstelling met Windows Vorms, WPF se data bindend is briming met eienskappe wat toelaat koppelvlak kontroles om te reageer op ongeldige toevoer van die gebruiker sonder skryf GUI-kode om dié foute op te spoor. Dit is waardevol.

Die stilering en template vermoëns in WPF het bewys dat dit ook waardevol wees. Ten spyte van die algemene wanopvatting dat die enigste gebruik vir stilering en template is om op die skerm eye-candy skep, die waarheid is dat hierdie eienskappe aansienlik vereenvoudig die kodering van 'n gebruikerskoppelvlak wat ryk terugvoer gee - soos knoppies wat skakel / in staat stel hulself te baseer op die toestand van die onderliggende besigheid logika laag, of tooltips wat intelligent hul teks te vind wat gebaseer is op die toestand van die voorwerp onder die wyser, ens

Hierdie add al tot baie waardevolle eienskappe vir "niks fancy" besigheid aansoeke , bloot omdat hulle maak dit maklik om die koppelvlak kongruent met die onderliggende data te hou.

In 'n neutedop:

  • In Windows Vorms jy die ontwerp van jou gebruiker koppelvlak, dan skryf kode te ry dat gebruikerskoppelvlak, wat oor die algemeen sluit ook code te ry jou data voorwerpe.
  • In WPF jy belê in die besigheid laag wat jou data voorwerpe dryf, dan ontwerp 'n koppelvlak wat luister om jou data voorwerpe.

Dit is 'n oënskynlik subtiele verskil, maar dit maak 'n groot verskil in jou vermoë om hergebruik kode ... wat die vraag smeek: "Is die Windows Vorms vs WPF vraag eintlik 'n belegging besluit"

(Dit lyk geword het my gunsteling draad.)

Is daar enige dwingende redes om WPF gebruik

Beslis! WPF is absoluut ongelooflik! Dit sal 'n groot voordeel vir bykans enige projek wees, want dit het so baie funksies en vermoëns wat Windows Vorms ontbreek.

Vir besigheid aansoeke die grootste oorwinnings sal wees:

  • Die fantastiese data bindend en template maak die grootste verskil. Een keer 'n ordentlike data model is in plek, dit neem net 'n paar klik om 'n data sjabloon te skep en te gebruik Expression Blend te stel presies hoe jou voorwerp sal kyk met behulp van sleep-en-drop. En binding aan dinge soos kleur of vorm is triviale.
  • skerm uitleg is ongelooflik soepel. Nie net kan alles in WPF glad te pas by houer grootte en vorm verander, maar items kan trivially vergroot en gedraai, en selfs uit te brei buite hul met raam.
  • Gewone voorwerpe kan aangebied word op enige manier wat jy wil, kan maklik het verskillende aanbiedings in verskillende skerms, kan aanbieding deel, en kan hul aanbieding aan te pas by veranderinge in datawaardes.
  • As jy nodig het om te druk, die lewering van die drukker is triviale. Behoorlik gekonfigureer, WPF maak Crystal Reports of SQL Server Reporting Services (SSRS) lyk soos speelgoed n kind se.
  • Jou gebruikerskoppelvlak sal lyk en voel baie meer dinamiese, insluitend mooi eienskappe soos knope wat animeer wanneer jy die muis beweeg oor hulle.

Vir utilities en speletjies, ander voordele na vore:

  • Jy kan maklik vorms, lyne, en arbitrêre tekeninge toe te voeg tot jou aansoek sonder die gebruik van 'n eksterne redigeerder. Elke komponent van hierdie kan data-gebonde en geanimeerde, of beheer word deur kode wees. In Windows Vorms jy doorgaans net moet 'n bitmap invoer en gebruik dit as-is nie, tensy jy wil om te gaan na 'n baie werk.
  • Animasies is cool! Gebruikers sal regtig beïndruk, so lank as wat jy dit nie oordoen nie. Hulle kan ook help om mense te sien wat aan die gang is en verminder die behoefte vir hilighting. Byvoorbeeld, wanneer sleep 'n item wat jy kan die teiken animeer om te wys wat sal gebeur as jy dit laat val.
  • Kleure, helling vul, borsels, fancy fonts, rotasie van enige voorwerpe, teël borsels, ens Enigiets wat jy wil grafies is joune vir die vra.
  • Ongelooflik aanpas. Ek nodig het om treinspore te trek vir 'n aansoek, so ek kon 'n trein laat val op hulle. 'N Paar uur later het ek treinspore Ek kon nêrens te trek op die skerm met behulp van Bezier kurwes , en hulle sal aansluit en outomaties skakel.

Die bottom line is dat enige noemenswaardige-grootte GUI jy kan bou in Windows Vorms gebou kan word in WPF in 'n derde van die poging (of minder) en kyk weg, weg beter.

Is WPF vereis meer hulpbronne (RAM in die besonder)

Jy doen betaal 'n prys in vergelyking met Windows Vorms, maar dit is 'n klein een.

  • RAM kan styg of daal, afhangende van jou implementering. WPF slaan sy data meer effektief so individuele voorwerpe is kleiner, maar daar is geneig om meer voorwerpe in WPF wees as in Windows Vorms so hierdie balanseer uit, en óf 'n mens kan uit voor kom.
  • CPU sal optrek in vergelyking met Windows Vorms. In my ervaring, die werklike werk van WPF voorwerpe op die skerm neem ongeveer twee keer soveel CPU as normale Windows Vorms lewering. Indien u aansoek spandeer die meeste van sy tyd opdatering van die skerm, kan WPF nie wees vir jou. Maar in daardie geval is jy waarskynlik nie die gebruik van Windows Vorms óf: Die meeste ernstige speletjies is direk geskryf om DirectX .
  • skyf gebruik sal effens minder vir WPF wees omdat dit minder kode neem soveel as Windows Vorms. Die data sal dieselfde grootte wees, natuurlik.

Nog 'n opmerking oor CPU gebruik: Animasies en transforms (beweging, vertaling, ens) is eintlik meer doeltreffend op WPF as in Windows Vorms as gevolg van sy behou modus stoor. Dit is die eerste om van die voorwerpe daar dit is stadiger.

Onderhoud oorhoofse

WPF is 'n groot oorwinning oor Windows Vorms wanneer dit kom by die instandhouding. Sedert alles in 1/5 soveel kode gedoen soos voorheen, daar is 1/5 soveel om in stand te hou. Plus al die boiler dinge weg, sodat jy kan fokus op die kode wat eintlik die werk doen.

Voordele van XAML

XAML is die kern van WPF. Hoewel WPF gebruik kan word sonder XAML, XAML maak dit baie maklik om te gebruik. XAML het vermoë HTML se maklik spesifiseer 'n gebruikerskoppelvlak, maar sy ingeboude tags is baie meer kragtig, en jy kan maklik definieer jou eie. (Trouens, dit is normaal om dit te doen).

Sommige spesifieke voordele van XAML:

  • Jou hele UI word gedefinieer in 'n teks lêer wat is maklik om te lees en te manipuleer, beide vir gebruikers en gereedskap
  • MarkupExtensions toelaat Bindings gespesifiseer word in 'n duidelike en eenvoudige manier
  • Tipe converters toelaat eiendomme met 'n komplekse tipes maklik om gespesifiseer word. Byvoorbeeld, kan jy sê Borsel = "Green" of jy kan 'n radiale gradiënt kwas spesifiseer met drie tot stilstand kom.
  • Jy kan jou eie elemente te skep
  • Jy kan maklik hefboom WPF se kragtige "aangeheg eienskappe"

Ander insigte

Ek het gedroom van so iets WPF vir baie jare. Baie mense het gedeeltes van hierdie funksie geïmplementeer, maar om dit alles te kry in een plek en op so 'n prys ($ 0) is amazing.

WPF is 'n groot paradigmaskuif vanaf Windows Vorms en sal neem sommige gewoond raak aan, maar die tyd spandeer om te leer dit sal self terug te betaal baie-vou.

WPF het nog 'n paar vratte selfs vyf jaar later, maar die krag daarvan sal heeltemal blaas jou weg as jy dit ervaar. As iemand probeer om jou terug te sleep na Windows Vorms, sal jy net gaan skop en skree.

Wenke:  - Moet kry 'n afskrif van Expression Blend vir ontwikkeling  - Doen wysig XAML met die hand af en toe  - Moenie moed opgee wanneer dit lyk vreemd op die eerste

WPF vereis óf Windows Vista of Windows XP SP2, wat nie 'n swaar vereiste, maar dit is 'n relevante een. As jy wil uit te voer op Windows 2000 (wat sommige mense nog steeds doen), dan sal WPF nie werk vir jou.

WPF is ook 'n nuwe tegnologie en nie as bewys as Windows Vorms sodat jy Windows Vorms kan kies as 'n minder riskante opsie, veral vir groter aansoeke.

Dit gesê, ja WPF is die toekoms. Visual Studio 2010 word herskryf in WPF, wat waarskynlik die grootste WPF aansoek tot op datum sal wees en dit sal ook 'n ware toets vir die tegnologie.

Dit is duidelik dat nalatenskap Windows Vorms aansoeke sal nog 'n situasie waar dit is die regte keuse wees.

Soos ander het gesê, daar is voordele en nadele óf manier waarop jy hier gaan. Die voordele van WPF, as ander het gesê, sluit in:

  • Die vermoë om baie ryk Uis maak relatief maklik.
  • Makliker animasie en spesiale effekte
  • Inherent scalability (gebruik die Windows Vista vergrootglas instrument op 'n WPF aansoek, en op 'n Windows Vorms aansoek: Let daarop dat in die WPF aansoek, al die vektor kuns skale pragtig)
  • (MENING ALERT) Ek voel dit is "makliker" om-dokument georiënteerde stelsels doen in WPF

Daar is egter nadele aan WPF, waar Windows Vorms kom bo uit:

  • WPF se in-box beheer suite is baie meer beperk as dié van Windows Vorms.
  • Daar is 'n groter steun in die derde party beheer ruimte vir Windows Vorms. (Dis verander, natuurlik, maar dink daaroor:.. Windows Vorms is al sedert 2001 was, WPF net 'n paar jaar Deur voordeel van tyd, Windows Vorms het 'n groter steun in die gemeenskap)
  • Die meeste ontwikkelaars weet reeds Windows Vorms; WPF bied 'n nuwe leerskool

Ten slotte, in gedagte hou dat jy 'n groot, aantreklik en innemende Uis in óf hulpmiddel kan skep, as jy die werk te doen (of gebruik die regte van derde partye gereedskap). Aan die einde van die dag, nie noodwendig beter in alle omstandighede. Gebruik wat voel reg vir die projek.

Die ontwikkeling model vir WPF is meer oop en buigsaam as Windows Vorms is, maar soos ASP.NET MVC, dit verg 'n bietjie meer dissipline in terme van die korrekte implementering van Model-View-ViewModel patrone.

My eerste LOB aansoek met WPF beland as 'n volslae failuire, want dit was 'n hulpbron barg wat gebring my eindgebruiker se baie-lae-end skootrekenaars maal tot stilstand gekom ... en dit was uiteindelik omdat ek net lept in met WPF + LINQ na SQL en verwag 'n goeie resultaat ... en dit is waar WPF divergeer so sterk uit Windows Vorms ... In Windows Vorms, jy kan wegkom met wat soort van ding. WPF is veel swaarder op hulpbronne as Windows Vorms, en as jy dit nie doen nie argitek jou aansoek maer te wees, eindig jy met 'n 800-pond gorilla.

Moenie weg van WPF skaam ... verken dit. Maar wees bewus daarvan dat die aanvaarbare sondes van Windows Vorms kodering nie goeie resultate sal lewer in WPF. Hulle is fundamenteel verskil enjins, wat hulself aan fundamenteel verskillende kodering patrone leen.

Laaste Woord: As jy wel voortgaan met WPF, kry goed acquianted met data skynwerklikmaking vir gebruik met lyste en roosters. Wat is 'n eenvoudige-data gebind ListItem of GridCell beland om 'n stewige logiese + visuele voorwerp-grafiek in WPF, en as jy nie leer hoe om virtualize, sal jy aansoek nie goed presteer op groot datastelle.

Daar is 'n baie steil leerkurwe om WPF, en ek beveel aan jy die voor die hand liggend boeke eerste ( Adam Nathan , Verkoop / Griffiths, en Chris Anderson ) en blogs ( Josh Smith , ens). Wees net bereid om vir dit, en maak seker dat jou projek kan jy die tyd om te leer WPF.

In bykomend tot die leer van die tegnologie, spandeer 'n geruime tyd leer die patrone wat gebruik word om WPF aansoeke te bou. Model View ViewModel (MVVM) blyk die een wat 'n groot deel van die aanvaarding gekry het nie.

Persoonlik dink ek WPF is die moeite werd, maar wees gewaarsku. Let ook daarop dat jy effektief jou gebruikers Windows XP SP2 + en Windows Vista beperk. Ons het daardie besluit gemaak, maar jy kan 'n paar verskillende vereistes.

Beide van tegnologie het hul voor-en nadele. In 'n groot aansoek met 'n "klassieke" UI wil ek Windows Vorms gebruik. In 'n aansoek wat 'n ryk gebruikerskoppelvlak vereis (afslag, animasie, die verandering van user) Ek sal WPF kies. Gaan asseblief die artikel WPF teen Windows Vorms vergelyk WPF en Windows Vorms.

Afgesien van die buigsaamheid in UI ontwerp, daar is 'n paar tegniese voordele aan WPF:

1.) WPF nie staatmaak op GDI voorwerpe. Wel, ek dink dit maak gebruik van 2 GDI voorwerpe vir die geval van die venster self, maar dit is feitlik niks. Ek het al betrokke by 'n sekere mate in 'n baie groot interne Windows Vorms aansoek. Die mense in ons kantoor soms hardloop 3 of 4 gevalle van dit gelyktydig. Die probleem is dat hulle dikwels loop in die 10,000 GDI voorwerp limiet inherent aan Windows 2000, XP en Vista. Wanneer dit gebeur die hele OS nie reageer nie en jy sal begin om visuele artefakte sien. Die enigste manier om dit skoon te maak, is om aansoeke te sluit.

2.) WPF maak gebruik van die GPU. Die vermoë om vir WPF om af te laai 'n paar van die UI verwerking na die GPU is briljant. Ek verwag net hierdie aspek van dit beter met tyd kry. As 'n voormalige OpenGL programmeertaal entoesias kan ek die krag wat kom van die GPU waardeer. Ek bedoel, my $ 100 videokaart het 112 cores loop op 1,5 GHz elke (en dit is nie die top van die lyn op enige manier). Daardie soort van parallelle verwerking krag kan enige quad-core CPU beskaamd.

Maar WPF is nog redelik nuut. Dit sal nie uitgevoer word op Windows 2000. En in werklikheid, kan 'n WPF aansoek stadig om te begin nadat 'n vars herlaai word. Ek praat oor al hierdie dinge op my blog: http://blog.bucketsoft.com/ 2009/05 / WFP-is-soos-vet-super-hero.html

Ek dink dit is die moeite werd om te leer WPF. Sodra jy op spoed, ontwerp werk op jou vorms is baie makliker IMHO. Ek sou nie so veel bekommerd wees oor die "sexy" dinge. Die meeste van hierdie is net 'n gier. Jy kan baie vinnig en maklik te maak "normale" Winforms-styl aansoeke in WPF.

Die hele konsep leen hom makliker ontwerp IMO.

Ek stem nie saam met 'n paar van die antwoorde hier. WPF is baie goed geskik vir lyn van besigheid (LOB) aansoeke. (Die padda ontwerp LOB kliënt is die beste voorbeeld). En behalwe al die moontlikhede om jou UI hê word eye candy (wat nie nodig in besigheid aansoeke is), WPF bied 'n baie meer vir jou.

Die data bindend en template funksies is net beter as Windows Vorms. Dit bied ook 'n baie beter manier vir die skeiding van kode en aanbieding. Ons het suksesvol gebruik WPF vir 2 LOB aansoeke in spanne met nie meer as 2-3 ontwikkelaars.

Die grootste probleem wat jy in die gesig staar, is waarskynlik die steil leerkurwe van WPF (in vergelyking met Windows Vorms) wat ontwikkeling spoed sal afneem met ontwikkelaars nie gewoond is aan WPF.

Ons is tans herskryf ons aansoek in WPF van Windows Vorms. Ja, daar is 'n steil leerkurwe en jy het om te "re-leer" 'n paar dinge, maar dit is so die moeite werd. En gekombineer met BWF, ons vind ons skryf minder kode, vinniger, en meer robuuste as ooit tevore.

vashou aan dit vir 'n rukkie, lees Adam Nathan se boek , en check die steeds groeiende biblioteek van kontrole derde party soos dié van Telerik en ComponentOne . Een negatiewe, in my mening, is dat die ontwerp instrument, Expression Blend , is baie ongemaklik om gebruik. Die nuutste weergawe is nog in beta, maar dit is net nie reg voel vir diegene van ons wat Visual Studio gebruik vir die jaar. Ja, dit is hoofsaaklik vir ontwerpers, maar 'n paar dinge wat jy net nie kan doen in Visual Studio.

Oorweeg WPF as koppelvlak-ontwerp is vir jou belangrik is, omdat WPF beter UI ervaring kan lewer. Maar Windows Vorms het op sy kant die jare van evolusie, so dit is bewys om te werk en jy kan baie vertroud programmeerders vir daardie platform te vind.

Ook port kan 'n probleem wees, WPF werk net met Windows XP SP2 en up.

Ook, WPF het 'n steil leerkurwe, wat beteken dit is nie maklik om 'n kwaliteit produk te lewer sonder om spesifieke WPF ervaring.

Wel, een antwoord "wanneer jy het om te ondersteun 1.1 of 2.0", aangesien WPF is deel van NET 3.0. Daar is bekend OS beperkings vir WPF, en daar is 'n probleem voor die hand liggend vaardighede: as jy 'n span van die ontwikkelaars wat Winforms weet, dan is dit dalk makliker wees om te draai uit robuuste kode met Winforms. As jy egter 'n baie UI-kode skryf dit is waarskynlik die moeite werd begin om af te haal WPF op 'n sekere punt.

WPF deel ook 'n baie in gemeen met Silver, so dit het oordraagbare voordele.

WPF kom met baie voordele soos uitstekende data bindend funksies, skeiding van kommer, skeiding van ontwerp en logika ens ...

As 'n ontwikkelaar Ek geniet die vermoë om my UI met behulp van XAML definieer, in teenstelling met word gekoppel aan die Windows Vorms ontwerper en ek voel goed om te weet ek kan tel op 'n ander ontwerper te maak my jeug goed lyk.

Ek persoonlik gee nie om ouer weergawes van Windows word nie ondersteun nie, maar een van die groot probleme met WPF is dit is nie (op die oomblik / ooit) ondersteun deur Mono ( http://www.mono-project.com ) so WPF programme nie sal loop op Mac OS of Linux. (Altough Silver aansoeke sal).

As jy die tyd en hulpbronne te belê in die leer van WPF, doen dit! Selfs as jy gaan skryf Silver aansoeke om verskeie OS ondersteun.

As jy die lessenaar aansoeke uit te voer op verskeie OS se stok met SWF.

Daar is baie verskille. Ons geliefde WPF vir:

  1. Die verklarende styl van programmering.
  2. Animasies en toestandoorgange
  3. Expression Blend is 'n groot hulpmiddel
  4. Goeie styl ondersteuning.

Ons het egter vas met Windows Vorms omdat:

  1. Die ekstra tyd wat dit neem vir 'n ontwikkelaar om WPF leer wanneer hulle reeds weet Windows Vorms.
  2. WPF sal nie uitgevoer word op Windows 2000 of laer.

Die grootste oorweging wanneer jy moet besluit watter een om te gebruik is om te oorweeg wat NET Framework jou teikengehoor geïnstalleer het. Ek vind dat meer mense het die laer NET Framework weergawes wat net Windows Vorms ondersteun, maar dit is net my persoonlike ervaring.

Die voordele van WPF is dat dit baie makliker is om mooi kyk GUI se met persoonlike kontrole en animasies te skep. WPF help ook verder serparate die aanbieding en logika lae. As jy ontwerpers het, dit laat jou toe om te boer van 95% van hierdie werk aan nie-coders en laat die coders te werk op logika. Die nadele is die sagteware koste vir Expressions Blend, en die gebrek aan enige van die Visual Studio kode profilering tools goed werk as hulle is geneig om te kry wat vasgevang is in die raamwerke noem in 'n poging om XAML lewer. Ek is seker daar is ander, maar dit was die enigste twee wat ons regtig gesien het.

Die belangrikste oorweging is as jy wil om jou kliënte vereis om te installeer NET 3.0 of selfs beter NET 3.5 SP1. Jy sal 'n paar niegative terugvoer te kry

WPF maak dit baie makliker om hand uit die vorms ontwerp werk aan 'n werklike ontwerper, nie 'n ontwikkelaar in klere ontwerper se. As dit is iets wat jy wil doen, WPF is jou antwoord. As die klassieke Windows-styl knoppies is fyn, dan is Windows Vorms waarskynlik die pad om te gaan.

(meerdere antwoorde maak die aanspraak dat jy WPF moet gebruik as koppelvlak-ontwerp is "belangrik vir jou", maar dit is redelik vaag. Interface ontwerp is altyd "belangrik".)

As jy 'n MSDN lisensie het, check Expression tools . Dit is uitdruklik direk ontwerp vir WPF, uitvoere na Visual Studio en dit kan help verlig jou oorgang.

As jy net omgee vir die ondersteuning van Windows en gee nie om die tyd wat dit neem om dit te leer, gaan met WPF. Dit is vinnig, buigsaam, maklik om te reskin, en het 'n groot gereedskap om te werk met dit.

As 'n kant bonus, Silver is gebaseer op WPF en begin met óf kan jy die know kry hoe om te werk met die ander. As dinge voortgaan om te gaan web-gebaseerde, met voorkennis (en 'n biblioteek van bestaande kode) om maklik oor te dra aan die leser (of Windows Live Mesh) kan help gee jou sagteware 'n ekstra huurkontrak van die lewe.

As jy besluit om te gaan met WPF, met inagneming van voor- en nadele reeds in die bogenoemde antwoorde verduidelik, ek raai gaan deur middel van hierdie dnrTV episode met Billy Hollis

In DotNetRocks episode 315 , Brian Noyes bespreek hierdie omvattend.

Daar is 'n bekende probleem met teks lewering in WPF. Baie gebruikers rapporteer dat die swaar gebruik van anti-aliasing en pixel-vermenging gebruik oorsake vaag teks. Dit is 'n groot deal breaker in sekere omstandighede en, sover ek weet, het deur Microsoft erken op 'n sekere vlak.

Vir die laaste 3 1/2 jaar het ek is besig met Windows Vorms ontwikkeling (by twee maatskappye). Beide programme is op groot skaal gebruik en beland met GDI probleme. Groot Windows Vorms aansoeke sal uiteindelik loop uit GDI hulpbronne -. Wat veroorsaak dat die eindgebruiker te hê om weer te begin

Scott kla oor Expression Blend en hoe dit nie sin maak om hom as 'n ontwikkelaar. My eerste reaksie op Expression Blend was soos dit. Maar nou sien ek dit as 'n waardevolle hulpmiddel, maar dit hang af van watter tipe van ontwikkelaar jy is.

Ek is gebruikerskoppelvlak ontwikkelaar wat moes die Integrator rol, en ek het uiteindelik gevind Expression Blend van onskatbare waarde vir style te skep, en beheer templates in 'n WYSIWYG manier. Ek het byna altyd Expression Blend en Visual Studio van 'n lopende op dieselfde projek terselfdertyd.

Ek dink ook dat rondspeel in Expression Blend en neem 'n blik op die XAML wat kry spoeg uit 'n uitstekende manier om die WPF API leer ... baie soos die gebruik van die ontwerper in Windows Vorms en die nagaan van die C # kode dit uitspoeg is nuttig om te leer hoe om te gebruik wat ookal jy daar is ontwerp.

Expression Blend is nuttig. gee dit net 'n probeer, veral as jy besig is op die beeldmateriaal vir die aansoek.

'n Aanhaling uit 'n vroeëre plasing van Mark:

  • In Windows Forms ontwerp jy jou gebruikerskoppelvlak, skryf dan kode om daardie gebruikerskoppelvlak aan te dryf, wat gewoonlik ook kode insluit om jou data-objekte te bestuur.
  • In WPF belê jy in die besigheidslaag wat jou data-objekte dryf, en ontwerp dan 'n koppelvlak wat na jou data-objekte luister.

Ek sou redeneer dat dit meer 'n ontwerpkeuse is, eerder as of jy Windows Forms of WPF gebruik of nie.Ek kan egter besef dat sekere tegnologieë dalk beter geskik is vir 'n spesifieke benadering.

Slegs indien jy nie kundigheid WPF en jy nie wil hê om te belê in dit:)

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top