Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What I have is business WinForms application written in C#.
What I would like to do is to redesign it to meet multi-platform approach.

I was thinking about architecture involving application server (executing all the logic and performing database operations) and thin client side running on Windows and Mac OS as well as Android, iPhone or just in web browser. Windows version should also have to be able to use methods from some DLLs.

Solution that comes to my mind is desktop client developed to target Silverlight (for Windows and Mac OS users). Web part, based on ASP.NET, would be adjusted for mobile devices. All would use WebServices provided by WCF server running on Mono.

What do you think about this approach? Why is it good and why if it's not? I know that all of those platforms are in range of Adobe AIR but choosing it will result in abandonment of all existing code and development team's knowledge about .NET.

Thank you for any hint.

share|improve this question

3 Answers 3

up vote 3 down vote accepted

I was thinking about architecture involving application server (executing all the logic and performing database operations) and thin client side running on Windows and Mac OS as well as Android, iPhone or just in web browser. Windows version should also have to be able to use methods from some DLLs.

I would recommend you just make it a website. Pick any .NET server stack you want (preferably ASP.NET MVC) and just serve content as HTML5/CSS3/JavaScript.

That's the easiest way to go cross-platform. You can even use a tool like PhoneGap to compile your website to native android / iOS applications.

Silverlight

is an option but then you drop Linux support and force your users to install silverlight (I personally won't out of principle), You also have a completely separate code-base for mobile and desktop. I would personally only choose silverlight if you can port more then 50% of your UI directly into silverlight verbatim.

share|improve this answer
    
Very inspiring answer but integration with 3rd party applications/devices is still very important feature of existing app. Have to find a way to deal with it. –  rotman Jul 4 '11 at 19:48
    
@rotman that completely depends on the 3rd party applications/devices. You can always place a server in front of them and expose them as a (secure) web API. –  Raynos Jul 4 '11 at 19:56
    
Unfortunately, they are rather front-ended. I'm just reading about calling local WebServices using AJAX, it seems a good solutions. –  rotman Jul 4 '11 at 20:23
    
@rotman you can do better things with websockets. Websockets are virtually TCP sockets between browsers and servers –  Raynos Jul 4 '11 at 20:29
1  
Moonlight is Silverlight under the Mono framework. The roadmap doesn't look like it has been updated for a while but Moonlight v3 was due out in Q3 2010 with full Silverlight v3 compatibility. –  Mike H Jul 11 '11 at 3:43

Since the existing application uses WinForms, have you considered Mono? It's a cross platform implementation of the CLR (core of .NET). You would still have some work to do, but you wouldn't have to throw out your existing code.

share|improve this answer
    
Yes, but current app uses a lot of WinAPI and other Windows dependent stuff. What is more, existing code is very messy, that's why I'd like to refactor it deeply. Keeping this application will also not help with developing the web part of the system. Having to maintain two projects will not reduce the cost of maintaining the code. All those things make, in my opinion, starting a new project cheaper and more natural solution, don't you agree? Porting WinForms to Mono and refactoring the rest looks like the same effort with worse results. –  rotman Jul 4 '11 at 18:03

As Raynos said, making the app a regular web application may be your best bet. In making a client application, do you need to support some sort of specialised / improved UX or disconnected data functionality? These are the main reasons I consider a thin client UI.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.