Developing for a handheld device - wpf

We have developed a WPF application (VS 2010 C#, .NET 4.0, MVVM, CaliburnMicro, Agatha) that mostly deals with selling tickets for different transportation types.
Now i need to start developing an application for a handheld device that will be used alongside this WPF application (buying tickets on bus/train, printing, searching etc). Handheld device has an integrated printer + touch display.
The application will have it's own local database (probably SQLite) on the handheld device, but will also need to communicate with the main database (PostgreSQL) using the WPF application's host (WCF service).
Our client has initially picked out a device with Windows Mobile 6.5 / Windows CE 5.0.
I have no experience with handheld devices/developing for them. Now, i’ve been digging around and understand that
WPF/Silverlight type development is supported only for Windows Mobile 7.0 + and Windows CE starting from 6.0 (with latest version).
If we are to develop for older OS, we cannot use VS2010 with all the latest tools etc, since .net compact framework is not supported there anymore.
Developing for older OS can be more time consuming and problematic, CE 5.0 support has already been dropped.
My questions:
If we manage to find a device that supports Mobile 7.0+ / CE 6.0+, what tools, frameworks would be best suited for our development? Or could someone suggest some up-to-date books?
If we need to use Mobile 6.5 / CE 5.0, what are our best options for development?
I understand we need to downgrade to VS2008, but which frameworks/tools are best suited for UI / communication with the WCF service?
Can someone with experience on this subject foresee any problems communicating with the WCF service?
How much more time consuming (ballpark figure) or complicated it would be to develop for these older operating systems? i.e. i would like to know how hard we should push our client for switching to a device with a newer OS (since it’s quite problematic to find a suitably built/priced device with newer OS).
Thanks in advance.

It seems like the Pocket version of Internet Explorer is going to be what you'd want to develop for. I'm not sure how it supports Silverlight and other newer technologies, though. One of the answers in >>THIS QUESTION<< shows how to do some HTML stuff, if that helps.
Windows CE and Windows Mobile (WM) require different SDK downloads. I only use WM here, and I'm not sure what you'd gain by going one route verses another. I was given WM, so I develop for WM.
Are you looking to decide which way to go (CE verses WM)?
The bigger problem is that most newer devices running Microsoft operating systems are all phones. It seems that if you want an industrial style device, you are either stuck with old Windows devices or turn to something running a newer Android platform.
As far as WM platforms, the newer they are, the more features you have access to (like turning on the radio, getting battery status, etc.). WM 6 and up has these features. WM 5 and down does not. Older than WM 5 is referred to as PocketPC.

Related

Is silverlight the right choice of technology for enterprise applications after Microsoft's comments in PDC 2010

We were beginning to start on an enterprise application using silverlight.
However after reading this post we doubt whether it is the right choice going forward.
The post says that, according to
Microsoft's declaration in PDC 2010,
Microsoft has changed their strategy
regarding silverlight and they no
longer view it as their technology to
deliver cross platform applications.
Instead they are targeting silverlight
as their development platform for
Windows phone 7.
Is this correct? Should we still continue with silverlight or go back to ASP.NET WebForms\MVC?
The Scope of the application is basically intranet with Windows 2008 servers and Windows XP and Windows 7 clients. However a subset of functionality needs to be available to the external users over the internet. There we cannot have any restrictions on what OS users can use.
based on the info you gave, I can't conclude whether silverlight is the way to go. But what I do know is that a number of Microsofties wrote some blogposts about the things said about Silverlight on the pdc. For example John Papa, Bob Muglia and Scott Guthrie.
Update about the scope
I think you already gave the answer when you described the scope of the application. A part of the application will be available to external users and you cannot have any restriction about the OS they are running. With that requirement I think Silverlight is not the best way to go. Not because the rumours about its future but because of its platform indepency. What are the reasons not to go for a ASP.NET/web solution? Silverlight doesn't work on each OS whereas plain HTML will work everywhere. (ok you need a descent browser)
Although for a good advice I'd need more information about the application.
Basically the question you have to ask yourself is this: do you need your application to be used on every platform, i.e. Windows, Mac, Linux, misc. flavors of Unix, IPhone and other mobile platforms?
If that's the case, then a web based solution is the way to go.
If Windows, Mac and partially Linux is enough, then save yourself and your team a lot of pain and use Silverlight.
In my opinion support for mobile clients is the key factor in your decision.
For sure the right platform for Intranet, Enterprice applications Is Silverlight. It is
stable, performs extreamly well, the environment and the development time is huuge less than web application development, the end User Experience is much better and so on and so forth... Once you want to show part of the system out the the intranet - just create some specific target modules that will address the needed audince. You won't have the universal "Reachfull" solution, that will target everyhing, you'll always need mobile versions or other devices and so on. But once you've built your project the right way with Services (same services that the Silverlight app will consume), it'll be easy job to consume them with new UI.
Hope you will choose Silverlihgt.
Silverlight is a great technology, but the Microsoft does not develop it anymore. So as a technology is a great decision. But if you want to make a Silverlight app usable on a NOT supported platform (e.g. Android or iPhone) you have to use 3rd party services. For example http://sl2html.com

Out of browser silverlight 4 application with local database that will run and install on windows or mac?

I am researching using silverlight 4 to develop a desktop application that can be installed from a browser window, now the tricky part is that I want a lightweight database embedded into the application. The database should install with the rest of the application and it should ideally work on both windows and mac systems. Originally I was thinking sqlite would be suitable for this but I have learned that it is not compatible with silverlight. Does anyone know of a solution for this?
There are some available silverlight databases such as:
siaqodb - uses LINQ, available for WP7 - commercial.
effiproz - available for WP7 - commercial.
Perst - open source.
These utilizes silverlight local storage, comes with their own database engine.
There is also Ninja Database Pro that works for Silverlight and Windows Phone 7:
http://www.kellermansoftware.com/p-43-ninja-database-pro.aspx
Nowadays SQL Lite is a viable option for SL4 / SL5.
You could also team that up with DevArt LinqConnect product (http://www.devart.com/linqconnect/) that is an EF / Linq-to-SQL like wrapper over SQL Lite.
I've also looked at alternatives Siaqo DB and Ninja DB (as mentioned by others).
While not exactly a database, the upcoming release of the Sync Framework will support offline caching for Silverlight 4 on the desktop/browser, and Silverlight on Windows Phone 7. As Liam Cavanagh mentions in this blog post before TechEd:
I have a TechEd session this week where I will be demonstrating all of this as well as how we will be extending the capabilities of the sync framework for creating offline applications, specifically allowing Silverlight, Windows Phone 7 and even non-MSFT platforms to be used for the clients.
Link

Real Silverlight Support on Windows Embedded Compact 7?

So Windows Embedded Compact 7 (another classic from the naming department) supports Silverlight for Windows Embedded.
http://www.microsoft.com/windowsembedded/en-us/products/windowsce/compact7.mspx
But this is a C++ only stripped down version of Silverlight 2 XAML.
Does anybody know if Windows Embedded Compact 7 will support real Silverlight? This seems to be out of step with Windows Phone (which I think is based on Windows CE 6) and the fact that Windows Embedded Compact 7 supports Flash 10.1.
Not in the first release, no, it will not support managed Silverlight (or, IMO, what the entire world considers to be "Silverlight").
They may, at some point, move the work done by the Phone team to create a managed SL implementation, but they've made no announcements as to if or when that might ever occur.
You'll see "Developers,Developers" Balmer come out later like he has done before and admit they made a mistake with this. Its the developers that produce the apps and if you make all the microsoft technologies linq, wpf, ria and patterns such as MVVM unuasable developers won't trust you and move to another platform. They dropped the ball on the Phone OS by not having a great consumer oriented phone. Now they will focus on consumers stick it to the business developers that they had built up on Windows Mobile. They did a great job with the silverlight 4 so I don't understand how they can drop the ball this badly on Compact 7.
I agree about the non-uniform development environment, but you should also consider that the processor that are currently powering WP7 devices are not still available on the general embedded market where 1GHz processors are a small minority and 5-600MHz processors are used only for hi-end devices.
Trying to run both the XAML and the .NET runtime could lead to weak performances and disappointing results.
If you need RAD, use the Compact Framework.
If you need cool UI, use Silverlight for Windows Embedded.
You can't have both right now, as you can on the phone...

Handheld Development, Lazarus or Turbo Delphi.Net

I begin to program some handheld program as hobby, right now i currently have knowledge on Blackberry App (Java), Symbian S60 (PyS60) and J2ME
Something that i wanna learn was Windows Mobile/Pocket PC and iPhone development, but since i don't use Mac so i step to Windows Mobile/Pocket PC development
Here some question:
1. Which is better Lazarus or Turbo Delphi.Net?
2. Do both have some kind support of network access (GPRS, Wi-Fi, HSDPA, etc)?
3. Do both have database access, both remote database and standalone/embed database? like SQL Server 2005 CE?
4. Do i need some driver installed on Windows Mobile/Pocket PC to be able to work with SQL Server 2005 Developer on server i already have?
If possible answer point-by-point
Thanks
Lazarus has form designer built in for WinCE applications, Delphi 4.Net doesn't has one, also CG has stopped developing the Turbo Delphi line, and it's support .Net CF 1.1 only.
Maybe using Delphi Prism will be better option, because it's support the latest .net framework, and with the new MonoTouch it could be better option for future development with IPhone too.
Point 2 & 3, I don't have information about them, you could visit Lazarus forums and wiki to have more information, but for Delphi 4.Net it has support for all classes on the .Net framework CF.
4.If I remember correctly, the .Net CF has drivers for SqlServer Mobile edition and Sql Server, for example it has SqlCEConnection for mobile and SqlConnection for Regular Sql server edition.
I never tried Turbo Delphi .NET, but afaik CodeGear stopped that line, so I wouldn't start new development in it. I also heard that CF.NET was not officially supported and a bit ackward. As said I never used it, I hope that others will comment.
Lazarus core functionality works, but many more "outer" parts are not always tested on CE, and you will have to find stuff out yourself.
Roughly the same as under normal delphi/win23. Can access TCP/IP with Indy10 afaik, but to work with network connections you need api calls
sqlite is sometimes used. In theory all the db drivers should run if their client libraries are available to arm. The DB support should mostly be endian clean. However I don't know which ones are supported.
Sql Server variants are generally not supported by FPC, except via ODBC. And I don't know if CE has that.
Usually you need to have some client lib or a generalized DB connectivity lib ADO/ODBC/JDBC.
Browsing the lazarus/fpc wiki for CE topics could be a good next step. If you persist in CF.NET, I would migrate to VS, and not work with TD.NET.
If I would develop something for a handheld, I would create a webapplication. Only if you need to access the handheld data (pim, gps, ...) it makes sense to create a local running application.
But if you want to create something to run on the device, I would go for FPC / Lazarus as well.
Your questions has been answered so I'll reply with my opinions;
Lazarus: It gives you power of
native application, but it's not used
widely. Give it a try, see if it fits
your needs on the mobile device.
Perhaps report bugs and help its
development.
Delphi Prism + .NET
CF: Object-pascal alike .NET syntax
-which I do not like but that's just my opinion-. Here's a sample video
to get started. It lacks form
designer for .NET CF so if you stick
with it you'll use WinForms designer.
C# + .NET CF. It has really good
IDE for .NET CF development. This is
how I rolled for mobile device
development and I'm happy with it.
ie, if I have a problem the huge .NET
userbase most likely has the
solution.

Mobile devices for developers

I need to develop some programs for mobile devices but haven't decided the platform to build upon. I'm looking for Palm or Pocket PC devices that have Touch screen and Wi-Fi connection and are cheep because I'll need to buy several of them.
I don't really need camera, mp3 players, video players, pdf readers or anything else since the apps are going to be simple data collection to feed via wireless to a server database.
I'm proficient with C and C#. I could learn Java if I had to.
What devices do you recommend? Linux devices maybe?
PS: Changed the title because I don't want a flamewar between platforms. Please, don't answer with Windows Mobile sucks/rules. I'm looking for devices instead.
Thanks
Windows Mobile
It supports C#, and Visual Studio comes with the mobile SDK. So if you know C# you probably already have the tools you need. And in spite of the iPhone/iPodTouch buzz, the Windows Mobile deployment is still 10X greater.
In order of preference
Neo Freerunner
Maemo & the N800 (cheap)
Beagleboard
If you are comfortable with Visual Studio then programming for windows mobile is extremely easy. The SDK for mobile comes with emulators for all the latest and popular versions of windows mobile- and you can even debug on teh device itself using a USB cable.
On windows mobile you have a choice: Develop a .Net application or develop native (likely MFC based). Either one gives you a great development environment.
As far as iPhone development goes- you would need an apple computer to install and use iPhone SDK- and you can't run an iPhone app on your phone. You would have to go through the process of getting it registered with iTunes for you to install your own apps on your own phone!
When I first started playing with mobile development I had a few questions:
Can I develop using my favorite IDE- Visual Studio. Will it be as easy as developing a desktop app: yes.
Will I be able to access the internet from my application without 'unlocking' or in some other way enabling the phone that was not intended by the service provider? yes.
Will I be able to access device specific functionality such as GPS easily? Is there good support for doing so within the API? Yes.
You should probably target the Windows Mobile platform. The Palm platform is rather archaic and no longer widely used. The development environment is also rather spartan, while Microsoft has full IDEs available for Windows Mobile development. You might also consider the iPhone/iPod touch platform - I have a feeling the number of devices will multiply at an exponential rate and I've heard that developing applications is much easier due to the completeness of the system stack.
You should probably at least evaluate the Apple iPod Touch. It certainly meets your basic "touch screen + WiFi" spec, and your users presumably won't object to all the the other nice features that will come along for the ride.
I don't know what your cutoff for "cheap" is, but $299 for the base model seems pretty reasonable for a high-quality touch screen and WiFi in a pocketable device.
Windows Mobile and CE used to suck, really, really badly. These days however it's definitely passable and worth checking out, especially if you code C#.
Just remember that it is the baby brother of the full framework and has nowhere near enough toys and throws a lot of NotImplementedExceptions. :)
Blackberry publishes its SDK on its web site. Its apps run J2ME, so with some Java experience it shouldn't be too difficult to get started. They also give you an emulator. Disclaimer: I have no experience in writing Blackberry apps, but I looked into it once.
I would not recommend a PalmOS based handset. I have written code for PalmOS and it's about as painful as writing raw Win32 code in C. Since Palm has switched its high end handsets to Windows Mobile, PalmOS will just remain stagnant and only run on the slower, less capable hardware.
If I were to write a mobile app, I'd agree that Windows Mobile is worth checking out.
It all depends on the users who you are targeting at, If you are looking for a wide market then you should be fine with J2ME/Blackberry . However most of them lack the touchscreen and wifi features ( The HTC range of phones [WIFI/TouchScreen/Windows Mobile] have a JVM built with it),so it would work on most of the Windows devices also.
If you are making a more niche product, moving with the current buzz 'iphone' will be good . Windows Mobile is also worth checking out
The best option here would be the Neo Freerunner, with that device you can build a dedicated unit were every aspect is made especially for you're needs. The Freerunner is WiFi enabled, and has a touch interface. If you use the Qt SDK, a lot of the work is already done for you. It comes complete with emulator, as a Live linux cd. You can run in a WM, such as wmplayer. Everything is included.
I'm not gonna lie, it will take tweaking. But the final product would be really nice and intuitive.
Looking at Windows Mobile devices, your requirement of touchscreen pretty much sets your pricing at the higher end of the spectrum. You'll get those things you say you don't need just because of that.
Here's expansys's selection of touchscreens.
Mobdeal is a handy one too as that effectively filters all phones by features.
I've developed against the HTC TYTN 2, HTC Touch Diamond and randomly a PSION Teklogix Ikon
There's generally very little difference between these models, some manufacturers have SDKs that can help sometimes.
I think your cheapest option will probably be something like getting HTC TYTN 2s on ebay. They're pretty old now (hence cheap) but have Wifi, camera, touchscreen, qwerty keypad all the things you seem to be after.
you can target iPhone "touch" platform with Apple's iPhone SDK. the development environment requires a Mac, but you can get the entire IDE + tool chain + excellent debugging and profiling tools for free. And the free documentation is top notch.
As a registered iPhone developer, it is free (no cost) to target the simulator, which is sufficient for most learning and development you'll likely need to up front.
To target the actual hardware device (and up to and including release/selling your app on the Apple's AppStore) is only $99/yr. If you got an iPod Touch for your hardware target, most of the SDK applies and you are not tied into a service contract for an iPhone.
iPhone app development environment is in Objective-C, but it is a really productive, object-oriented environment so do not concerned that that may be a language you are unfamiliar with.
If you decide that your mobile app(s) would be better suited as webapps, the iPhone/iPod touch platform again is an industry leader in this space, and you have the additional benefit or being able to target other mobile platforms (and not necessarily be tied to one mobile SDK).

Resources