winrt xaml - How to choose what technology for a greenfield Windows UWP app? -


the question super-common. here's context; developer can create windows app targeting universal windows platform (on windows 10) using broad spectrum of technologies:

  1. xaml / .net
  2. xaml / c++
  3. html / javascript
  4. directx / .net
  5. directx / c++

and these exotic approaches:

  1. cordova / phonegap
  2. hosted web apps
  3. compiled objective-c
  4. compiled android java (phone-only)
  5. unity / monogame

how developer choose?

naturally, answer "it depends". first variable consider type of app considering. if wanting write game, choice not obvious. that's because there logic apps don't rely on elaborate ui , immersive games do.

logic games

because xaml , html simpler platforms build simple ui, makes sense choose following:

  1. xaml / .net
  2. xaml / c++
  3. html / javascript

choosing between these 3 matter of technology preference. worth noting start xaml , go html when necessary. mean is, new windows apps should consider xaml starting technology , choose others if necessary.

one reason might choose html if have created several html assets want reuse. but, of course, embed xaml webview control in xaml app , use html assets without requiring full web app. end, xaml remains viable choice.

immersive games

because html , directx have considerable investments third party companies , community games, makes sense choose following:

  1. directx / .net
  2. directx / c++
  3. cordova / phonegap
  4. hosted web apps
  5. unity / monogame

it's worth reminding article "greenfield" apps, above technologies technologies of choice 99% of games in windows store.

the next category of apps called productivity apps. , have 2 sub categories: consumer , commercial. consumer apps public, while commercial apps internal, line of business apps.

consumer apps

public apps have no technology requirements other giving full-fidelity, native experience user. these apps, choose following:

  1. xaml / .net
  2. xaml / c++
  3. html / javascript
  4. cordova / phonegap
  5. hosted web apps

the reason cordova included because is, basically, html option added benefit of cross-platform. if cross-platform requirement, it's great choice. should point out xamarin can enable .net apps cross-platform, too.

sometimes cross-platform not @ top of list. sometimes, it's greenfield windows app. and when in typical starting place, need start xaml / .net. why? there several reasons.

first, xaml becoming premium ui platform windows. many new aspects of windows 10 operating system written in xaml (like start, file explorer, etc.) in addition, office xaml app, too.

second, bulk of samples , community support in xaml / .net. means regardless of team's primary technical expertise, ongoing support should incrementally easier xaml's popularity.

third, .net (like c#) 1 of logical, powerful , simple programming languages can choose. supports projects small gargantuan. plus, .net native, .net languages compile metal , perform @ near-c++ levels on windows 10.

commercial / line of business

commercial apps big deal , require serious investment. why? because intended run businesses. need tested, scalable , performant. need integrated , agile. of these part of consumer apps, because business can live or die based on infrastructure, lob apps more serious investment.

for commercial apps, choose xaml / c#.

here's reason why.

since writing windows 10 app in first place, can assume business either microsoft-based or microsoft-friendly. means development team versed in basic skills necessary deliver excellent xaml / .net app.

in addition, third party controls released our component vendors infragistics, going see enterprise-oriented controls written in xaml? why? because many of these controls have been released wpf , ported winrt demand increases.

in addition, visual studio manages, builds, test, , analyzes .net projects in comprehensive , proven way. writing microsoft ui platform , automating microsoft development platform. companies have few moving parts possible , pure gets.

in addition, many companies have made significant investments in lob systems , have many valuable investments reuse in windows app. windows app replacing lob? not. supplementing or complimenting existing system? more likely, yes.

conclusion

so when should use c++? let me share secret you. of first-party microsoft msn apps ship in-box windows 10 written xaml / c++. because cross-device performance critical our apps. mean apps should written in c++? in cases, no.

what if team web team , have no xaml or .net experience? first of all, that's unlikely. let's go it. we're developers, dang it. technology not care us. and, though languages vary, conceptually same. learning high-end techs xaml , .net worth investment when further down calendar in terms of performance , impact.

the reality is, people may disagree. , whatever else says right in ways. fundamental answer here is, speaking, how providing guidance greenfield developers starting new windows 10 apps targeting universal windows platform. isn't commandment, guidance.

if looking learn more windows 10 app development using xaml , c#, take @ free, 3 day course on microsoft virtual academy. https://channel9.msdn.com/series/a-developers-guide-to-windows-10

finally, here features should not forget:

  1. size adaptability across screens
  2. feature adaptability across devices
  3. analytics application insights
  4. logging .net logging api
  5. testing & automated builds on tfs/vso
  6. localizations other languages
  7. support automation/accessibility features
  8. use store deploy, upgrade, , license

best of luck!


Comments