We need to make client – web server application with minimum code rewriting on server side:
Clients
Web browsers;
Desktop application (win, mac);
Iphone (web and native);
Android (web and native);
(maybe some other mobile platform);
Web server
.Net with IIS 7.x
Application has to run on different devices, and communicate with server over secure connection. We would first develop web application, then desktop, and later mobile version.
We don’t want to rewrite server side code. Client side code rewriting is unavoidable anyway…
We were thinking to make following data exchange architecture:
For browsers we would use: HTTPS, HTML, JSON, XML, AJAX…
For desktops and native mobile apps: HTTPS, JSON, XML (no need to for HTML tags)…
Well, you should use something like the Model View Controller architecture, which would allow you to achieve your goal of code reuse. Your rich client application would simply use the JSON/XML based API you create. This is a pretty common method of achieving the goal and I think it is pretty sound.