7

Our business is considering writing a line of business application for tablets to enable road warriors and executives access our data. This will be primarily used for dashboards, reports and some form filling input: quite typical scenario.

Our other apps being built in .Net (WinForms) with lots of related class libraries DLLs (for data access layer, business logic, etc), it seems natural to want to use Windows 8 for this.

I am a rather put off by Windows RT as it doesn't implement the whole .Net Framework and seems quite limitating, so we are rather considering the Windows 8 Pro tablets than WinRT ones. However, we want a smooth and pleasant tablet experience and I don't think WinForms would be great for this as not built for touch support.

My question is would WPF be good for this? I see there are UI vendors selling touch controls kits but I wonder whether the "touch" experience in WPF is equivalent to the one found WinRT/Metro apps?

Probably this could be answered by playing around with the tablet but I unfortunately do not have one at the moment and can't get the budget to buy one until I have settled this.

  • Where is the app going to take the data from? API? – margabit Aug 21 '13 at 11:30
  • Its simply. If WinRT based on your expert analysis does not provide the require functions, and implemtning those functions is not an option, then you should be using WPF. There are specific things that CANNOT be done in WinRT currently. Before you make a decision verify that .NET Framework 4.5.1 WinRT is not adding something you need. WinRT is not really a valid solution for dlls for WinForms. – Ramhound Aug 21 '13 at 11:36
  • 1
    Just for the record: you get also touch enabled controls for WinForms from third-party vendors, for example http://www.telerik.com/products/winforms.aspx – Doc Brown Aug 21 '13 at 11:37
  • You will have to decide if you can your design can be implemented using only the WinRT .NET Framework profile. Only you can decide if thats possible. – Ramhound Aug 21 '13 at 11:59
  • @margabit, from a data access layer assembly implementing the repository pattern and returning POCO objects (uses Entity Framework behind the scenes). – Kharlos Dominguez Aug 21 '13 at 12:33
  • @DocBrown, thanks. I am more experienced in WinForms so that would help getting started quickly. Did you use winforms for tablets in the past and if so, how was the end user-experience/feedback in your case? – Kharlos Dominguez Aug 21 '13 at 12:36
  • @Ramhound, thanks. Indeed I am aware of the limitations of the WinRT platform and it can not work unless we add web services as we use the file system and Entity Framework which are not supported in WinRT. What I am trying to figure out is whether WPF can provide a user-experience as close as possible to a Metro-app in terms of look and feel, so the user really feels he is using a tablet app. – Kharlos Dominguez Aug 21 '13 at 12:40
  • @KharlosDominguez: no, sorry, I do not have any experience how well those works. And I guess there are other vendors (and also some free solutions). Try to search on the web for "winforms tiles", for example. – Doc Brown Aug 21 '13 at 12:53
  • @KharlosDominguez - A WPF application is NOT and should not be designed to duplicate a WinRT application. There are touch WPF controls but at the end of the day it will NOT be a Modern UI application. – Ramhound Aug 21 '13 at 13:02

1 Answers1

4

I think the answer to your question relies on the purpose, size and specifications of your app.

One "hidden" specification that you have (if I didn't get it wrong) is that you want to reuse as much as possible from your WinForm project or have more or less the same structure as the other WinForm apps. In the comments you said that you are currently accessing the DB from the application using Entity Framework.

Reuse some DLL's in WinRT is not possible, since some .NET classes are not allowed in WinRT, and Entity Framework (which is based on ADO.NET) is not compatible. So the data layer would need to change slightly.

If you chose this way and you need to refactor the data layer acess, my recommendation, if possible, is to use an API (WebAPI or WCF for example) to handle with the Data, so the WinRT app can focus on the presentation layer to be fast and responsive.

If that amount of work "is not affordable", I think the WPF application would be the best option since this kind of apps can handle more heavy work just as WinForms and you could reuse many assemblies. The structure of the app could be very similar, only changing the presentation layer, and YES you could have a very similar touch experience as in WinRT apps.

Depending on the time you can spend and the marketing point of view you should make your decision.

In my opinion a WinRT app can be very saleable and fancy, but in your scenario could take too much time if the infrastucture behind is not ready to support it. The presentation layer will need to be redone anyway since you cannot reuse much from WinForms, maybe the final decision should be taken after evaluating the cost of having a new data infrastucture.

margabit
  • 1,266
  • 1
  • 9
  • 9
  • 1
    You raise valid points except one. Windows Store certificationn based on the fact its an enterprise environment, is unlikely a concern. Although the use of non-WinRT dlls still won't be possible. – Ramhound Aug 21 '13 at 13:01