Anyone has experience working with architecture for the cross-platform WP7 platform for Android iOS for mobile devices (monotouch, monodroid, C #)

This question is specifically related to the recommended architecture and people who previously used for cross-platform applications WP7, iOS, Android, developed using C #, Monotouch and Monodroid respectively. I studied the previous questions here , here and here . They give good answers, but not quite what I am looking for. I also found this great question , which is included in the cost price, so there are some matches.

I have a requirement to develop a cross-platform application for iPhone / iPad, WP7 and Android for a health and fitness company that will integrate with my site. The application requires a small amount of local data storage for offline use and synchronization with the website when the network is available. I am a Windows developer (C # / C ++), and I do not want to follow the path of the three Objective-C applications, Java and C #, although I will if necessary. I will also work as a technical guide and work out some work for the team on this project.

I would like to know if anyone has experience with cross-platform development using Monotouch, Monodroid, and WP7 and share my experience in application architecture to reuse as much code as possible. The architecture I am looking at is as follows:

Proposed architecture for Wp7, Monotouch, Monodroid app

My question is this:

  • Has anyone here tried something like this?
  • Are these frames (Monotouch, monodroid) their salt for this kind of work?
  • Can I customize an entire project in Visual Studio 2010 with separate projects (dlls / exe) for Monotouch, Monodroid and Wp7 purposes (but common code using "Add as link")?
  • What code reuse can you really expect from this (or similar) architecture? that is, what strategies / patterns can I use to reuse local access to data, web services and business logic?

Respectfully,

+47
c # mobile windows-phone-7 xamarin.android
Jan 06 2018-12-12T00:
source share
4 answers

You might want to take a look at the MonoCross project, which is designed to help you reuse C # code with several presentation levels:

http://code.google.com/p/monocross/

The authors of MonoCross (ITR Mobility) have created several mobile cross-platform solutions for various customers and have written two books on this topic: "iPad at the enterprise" ( http://amzn.to/zAhQK6 ) and the upcoming "Cross-platform mobile development." with C # "( http://amzn.to/wM6RsF ).

At the same time, you can watch the presentation of Scott Olson at Monospace 2011, which tells how to use MonoCross to work simultaneously with several mobile and desktop platforms:

http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise

They apply strict MVC separation in their code:

MonoCross MVC Pattern
(source: tirania.org )

The biggest advantage of developing an application with this model is that you can run the same application with its own user interfaces on each platform. You have your own iOS, Android, Windows user interface, and they even have an ASP.NET interface that allows you to publish web versions with the same business logic.

This technology was successfully used by the Medtronic sample application that Apple demonstrated in its iPad business:

http://www.apple.com/ipad/business/profiles/medtronic/

I suggest you also visit Scott's blog, where he regularly posts posts on his experience with cross-platform architecture.

+25
Jan 08 2018-12-12T00:
source share

Based on your comments, your requirements relate to a cross-mobile platform that will integrate with its existing services, but also work offline. You are especially interested in C # through Mono, however you have indicated that you are not discounting other approaches.

I feel that HTML / PhoneGap / JavaScript is a route that you should explore in detail. The WP7 version of this framework has just been released, and I have had experience putting the application to market using this approach.

PhoneGap wraps your HTML / JavaScript code; in the case of WP7, it loads into local storage. This allows you to work offline. This is true for all versions (iOS, Android, etc.)

Probably the biggest problem with PhoneGap / HTML5 is the same problem that we have when developing complex web applications for the browser. The JavaScript toolkit is small, and browser differences are a constant problem. However, this is a proven and proven solution.

Finally, you can create an application user interface that is completely different for each platform. Using the MVVM template, I was able to share all of my JavaScript business logic between WP7 and iOS applications, having a completely different interface:

enter image description here

Compare this with WP7 screens:

enter image description here

NOTE. I plan to get the Property Finder for iOS soon in the AppStore, I just need to figure out how to use PhoneGap Build!

+9
Jan 6 '12 at 10:16
source share

Just adding another alternative to the mix - mvvmcross

This project was developed thanks to experience with monocrysts, mvvmlight and opennetcf.

This is a pretty stubborn mvvm structure (with my opinions in it!), It includes data binding support for Droid and Touch, and it really encourages code reuse between platforms.

The source is available from https://github.com/slodge/MvvmCross , it has already been used in at least several large projects and continues to develop actively.

Here's an introductory presentation on the slideshow: http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding

One of the most fully functional samples is the conference application:

sql bits app

+9
Apr 19 2018-12-12T00:
source share

The question is very difficult to answer, but I would like to share some thoughts.

The situation with mobile development is very similar to the development in the first half of the 90s. The phone has limited resources as computers, mobile operating systems take their children's steps, so the ecosystem is relatively small. They have their own philosophy, tools and even languages. And this is good, but it leads to a headache for cross-platform development. As a result, there are many attempts to clarify this a bit. People create frameworks, wrappers, etc., which are a kind of abstraction, and abstractions flow . For mobile devices, not only performance, like the number of processor cycles, but also battery performance is extremely important, which is much more important for the user.

If I were you, I would create applications in my native environment, especially if you have some performance considerations. The best support, tools, educational resources, etc. Paid for duplicated business logic. In general, this is not an OS or a database management system, the code base will not be huge;)

It is said. As for Monotouch and Monodroid, I would be very careful, because Apple blocks iPhone OS applications created by many third-party compilers and The King really does not care about developers. Probably the case when mono will be cleared of abuse of patents or patented software providers. This is sad for me because C # is my favorite language.

PS. I do not believe HTML5 for mobile will take any time soon.

+1
Jan 06 '12 at 11:16
source share



All Articles