Android vs iPhone vs Windows Phone vs Others as a platform for internal business software
I am evaluating smartphone operating systems and hardware platforms (and in a roundabout way, mobile carriers) to see which one would be the most suitable for delivering custom business software. Our applications will only be used by internal employees. Here are some features and bullet points that influence the selection:
Our apps will need access to about 1 GB of proprietary data. We could use an embedded SQL database, but for speed, our preference is to have access to some kind of file system, or possibl开发者_运维百科y SD card storage.
This data is mostly read-only on the mobile side. But we do need to update it regularly from corporate data sources. This could happen over the wire, or by docking to a workstation, or by taking an SD card out, and updating the data it on a PC.
Our applications will be graphical visualizations of the proprietary data. The data is used in a ag/biotech/research environment.
Code execution speed is critical.
The 1GB of data will be shared across multiple applications that we create.
Devices will be used worldwide, but by a relatively small number of users (~1000).
Users work both indoors and outdoors doing agricultural research. While indoors, they have good network connectivity. While outdoors, connectivity is poor. They also travel a fair bit throughout the year.
Our development staff has lots of experience with C# and .net (mostly windows forms) and some exposure to C++ and java. We have done some mobile development with .net, some palm OS stuff years ago, and a few developers have tinkered with learning iPhone development.
Being cross platform and not tied to a specific wireless provider or software platform would be desirable. But vendor lock-in seems to be the name of the game these days.
We will deploy applications ourselves, and have no need for app stores and the like.
I know that is a lot to digest. So what is my question? I would like opinions on which devices and platforms are the most suitable for what we are doing. I would also like developers who have developed internal business software for these platforms to chime in and share what they have learned.
If blackberry's traditional corporate integration features are of interest you might look at that.
Otherwise android is probably your best bet in terms of currently popular platforms (some of the more traditional linux-based phone stacks might be technically preferable, but their future is uncertain).
You have full authority to independently deploy applications
Most Android phones either accept an SD card up to 32GB or give you 16GB of built in storage. You can use wifi or mount it to a pc as a usb disk for updates (in addition of course to mobile data)
While android promotes java development, its not actually necessary to use this except for application lifecycle and user interface purposes. You can write all your core code in C using most normal unprivileged unix-type capabilities, or in C++ - though there's a slowly shrinking list of limitations on C++. OpenGL ES is available for display. And actually, the latest version of android offers the necessary java wrappers already written to enable you to create a C/C++ application without writing any java code yourself.
Another reason for going with android would be the potential of deploying your own customized device, not necessarily a smartphone but perhaps a tablet/pda or ruggedized system at some point in the future.
Also, if the bulk of your code is C/C++ and your developers use reasonable abstractions, you should be able to create a project that will build as both a desktop and a mobile application, by wrapping the core code with either UI and application container.
I would expect hardware availability to play a part in the decision. Depending on quite what is being done with the devices outdoors you may need to consider ruggedised devices and/or devices with a high IP Code.
If this is the case, I'd recommend considering using Windows Mobile (6.x).
Yes, Mobile, Not Phone 7.
It can meet all your requirements listed above plus there are a large nubmer of different devices available.
While it's time as a consumer platform has wained, this is exactly the type of scenario this platform was intended for.
Also note that this product has not reached end of life but will be called Windows Embedded Handheld going forward.
This is a tough one for sure.
The first thing I would rule out is the iOS platform:
- Closed mindset
- Strict publishing rules, even for internal enterprise development
- Objective C / Cocoa Touch is a PITA to learn.
- Limited and Expensive Devices
Symbian is a very popular platform but for only one reason, cheapest smartphone OS out there, I think that while it is good, all other platforms are better, and even more importantly will get even better over time, Symbian is finally starting to loose ground.
Windows Phone: I havent done propper research but to me winMO seems better for business solutions, windows phone is more a end consumer product, oriented to the social networking and online boom.
Blackberry: Great at keeping your data safe, while not as good as iOS or Android as a platform it offers many things that no other hardware does, if you manage critically secret info, look into blackberry.
Android: My personal current favorite, the API is easy to use with basically infinte tools, its as flexible as iOS without all the crazy restrictions. There are 50+ devices that would make sense to buy for what you want ranging from $200 to $800, you choose how good you want the hardware to be. Google is also putting crazy amounts of work into this so expect it to get better and better, just so you get an idea, Android had 3,5% market share for 3Q09 and has 25,5% 3Q10. Growth like that is something rarely seen, and to me indicates that Android is platform on which it would be smart to bet on.
Monotouch on iPhone would probably be your best path - especially for corporate software where you might not need the full capabilities of the platform. In speed critical code you could fall back to Objective-C or even C as needed.
One of the reasons I would advocate iOS over other platforms is:
1) Stronger frameworks. Android has pretty good frameworks but they don't have anything like CoreData, which could be very handy for speeding enterprise development. There are also other third party frameworks like CorePlot that could be really useful producing in-app graphs and CoreAnimation has a lot of possibility for data visualization. There's also the Accelerate framework which leverages the device GPU (if present) to speed calculations for things like Linpack and FFT work.
2) Full ability to deploy what you want - there are no restrictions on iOS enterprise deployment, and anyone with a D&B number can be in the iOS Enterprise development program. So you don't have to worry about the app store.
3) Leveraging existing app base - although it's vague as to what you are trying to do, there's a good chance you can make use of some third party applications in your workflow, where the much larger and quality-oriented iPhone app store could be a benefit. URL and file type handlers allow applications to pass data between them.
4) Third party cases and accessories - Otterbox makes cases for the Touch, iPhone and iPad, but basically there are a ton of third party options for chargers, car mounting kits, etc.
The iPad seems like it would work pretty well for your needs, either the 3G model (which you can use a micro-sim with) or paired with a MiFi kind of device (like the Verizon pairing).
Monotouch does cost money to use but it would probably give your developers a real speed boost in development time, and let them focus on learning the frameworks.
精彩评论