views:

393

answers:

7

Suppose you've got a customer who wants an application that has its data centralized stored and maintained, users can connect to it (but can also have data locally stored) and work with it and not using a browser to view and modify the data. Furthermore the application itself should also be centralized maintained.

So no traditional web-app but it should still have it's benefits. Do some of you have an idea how to tackle that? I thought about a client/server-solution - but I don't know how that scales with growing users, data, etc.

+12  A: 

I would suggest C# with ClickOnce for deployment. For UI, my personal choice would be WPF; for data layer - Linq To SQL or EF (though a lot of people complain about EF).

If you want some of the logic running on the server, you can use WCF to expose it to the client.

Of course, this makes it Windows-centric. So, if you need Linux as well, you could look at C#/Mono with xcopy deployment and WinForms.

Franci Penov
Huh? Offensive?! Wow, there's no stopping the Microsoft haters...
Franci Penov
+1 Here you go, good answer.
Otávio Décio
WTH was this marked as offensive?
GregD
Someone had a family member who got Mono...it brought up very sad memories...
Jason Punyon
Probably the same person who is going through my old answers and downvoting them. Perhaps he has two accounts? But, no, this is not "offensive" unless you are mad that your answer wasn't chosen.
Mark Brittingham
+1  A: 

What you want is called RIA, rich internet application, and there are lots of ways to do that.

Basically you divide your application in 2: - Server side - Client side

Server side and client side communicate using some protocol, most widely accepted is HTTP, even if you don't want a web application, because HTTP requestes are more likely to traverse firewalls.

You program your client side in Flex, that will allow you to run it in the browser or in the desktop, you can do your client in html/css/javascript (a standard web app), and there are tens of alternatives.

But the bottom line is: what you want is called RIA.

flybywire
No Not necessarily called RIA.
Tim Matthews
No Not necessarily Flex.
Tiberiu Ana
No Not necessarily Ponies
TheTXI
+5  A: 

For Java, you'd use Java Web Start and communicate with the server using web services or something like it (RMI, REST, whatever). It supports local storage etc. Read the guide to Java Web Start for more info. If you want flashy UIs, you can use JavaFX script.

edit As for scalability, a solution like this should scale about as well as an equivalent web app, if that's any clue (probably better, as S.Lott mentions in the comments). Instead of one page request, you have one web service call. Same, same.

Also, JWS is similar to ClickOnce, but runs on "all" platforms, and requires that you use either AWT/Swing (which is painful) or JavaFX (which isn't very mature).

gustafc
If you keep the overhead down, it can scale better than a web application. HTTP has a lot of network overhead that can be avoided by using dedicated sockets -- no opens and closes -- no graphics downloads, etc.
S.Lott
+4  A: 

Adobe Air lets you build client side applications with javascript, html, and flash. It also includes an auto-updater, so that you can keep your application maintained, and local database you can store local data on.

Daniel Von Fange
+3  A: 

Thin client application is probably what you are looking for.

The closest thing I can think of is Jade which contains an object orientated database, language and tools and is very commonly used with the db and apps on 1 server to be maintained and the thin clients connect.

Tim Matthews
A down vote is useless without a comment. Why?
Tim Matthews
He's downvoting the whole thread. Ignorance and immaturity, I assume.
Chris
Sorry but this must be a misunderstanding - I'm not downvoting any of you answers
Gambrinus
+5  A: 

Look into Smart Client technology. It gives you the best of both worlds. Light weight user front-end with potential to scale. Also allows for easy deployment and the flexibility of the web. Microsoft has been pushing the technology for a while now as well.

They even have a Smart Client Software Factory available here

Diago
+1  A: 

Wouldn't HTML5 solve a large part of this problem? Just insist your client accesses it with a HTML5 capeable browser and you're away no?

I could be missing something.

gargantaun
What does HTML5 have to do with disconnected distributed applications?
Tiberiu Ana
It provides local storage on the browser side.
Daniel Von Fange
Which would solve the problem of working locally no? Why mod me down for that? I read the question again, without knowing the particulars of the app, it could well be a valid solution. If you develop an OS X app, wouldn't webkit come into play too so you wouldn't need a browser. It was suggetsion.
gargantaun
Scary stuff.. local storage in the HTML spec. +1
Tiberiu Ana