Design and server-side technology [closed]
There is an open source desktop program which is written in Java (Swing) and uses an embedded database (derby). Now I need to develop a mechanism that user can synchronize its data against a server that (s)he doesn't loose his/her data in the case of any OS or hardware crash.
At first I want to know which server-side technology is matching the needs. For example is it ok that the software connects to a remote database directly or send and receive data by http requests to some URLs?
If it is better to use some sort of server-side programming, should it be simple URLs which receive parameters and give XML documents or it is better to have web services?
As the software is open source and non-commercial, there is no money back from users, what kind of web server could be reasonable (economical)?
If you need to know more details in order to suggest a good design, please ask me. I can't give more details here right now. :)
First and foremost, all hosting options for something like this are expensive given a large enough userbase. It's one thing if you open source the centralized storage technology for users to host themselves, it's another if you host said technology for users free of charge. But then that's a business problem, not a technical one.
On the technical side, you'll definitely want a database on the server, but you should probably consider hiding it behind a RESTful service. This will allow you to have finer control over security, monitoring, and scalability. It also opens up the possibility of access from clients other than your own.
As of version 3.0 Spring-MVC has some excellent resources for doing this kind of work. Check out this link for more info: http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/
精彩评论