Gambrinus
Gambrinus

Reputation: 2136

Alternatives to Web-Application?

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.

Upvotes: 3

Views: 1985

Answers (8)

zapp
zapp

Reputation: 11

sorry I'm late. but maybe my answer will be useful to someone else who reads it.

customer who wants an application that has its data centralized stored and maintained, users can connect to it and work with it and not using a browser to view and modify the data.

stick hosted inferno on their box (runs on just about any OS) and on your server. have the application run on their inferno, but have the data centralized on your inferno. have their inferno's init script just start your application up straight away instead of them having to select it from a menu or something.

you can connect their end and yours using any protocol you like, but if you use the styx protocol then the remote access is just a matter of their application using regular open/read/write/seek/close calls. styx can be authenicated and encrypted. permissions apply too of course.

(but can also have data locally stored)

same thing as above. local by itself is just a special case of local+remote together.

Furthermore the application itself should also be centralized maintained.

you mean, the program they use should be stored at your server, downloaded, and ran on their machine? for that you'd keep the binary in the /bin of your server, and at their end you'd have their init script bind /n/yourserver/bin into its own /bin. then when their startup script tries to load the app, it looks for it in /bin. then it just loads and runs it as if it was local.

permissions apply so there's no way they can mess your box up doing this.

it's also possible to have all the execution happen on your server, using their end only as a display. in inferno terminology this is called 'cpu'.

if they're looking graphical, graphical programs are really easy to write in inferno. check out the graphical hello world in the 8½ paper. compare it to anything else graphical you know, you'll find that it's easier.

if you find an inferno screenshot and see that it's got its own whole window manager running inside its window, and you don't want that, it's also possible to just have your application write directly to the main window. it doesn't know the difference. if you look at 'acme SAC' you'll see what I mean. also acme SAC has nicer fonts than the ones you can see in years-old inferno screenshots.

Upvotes: 1

gustafc
gustafc

Reputation: 28865

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).

Upvotes: 6

gargantuan
gargantuan

Reputation: 8944

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.

Upvotes: 1

BinaryMisfit
BinaryMisfit

Reputation: 30519

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

Upvotes: 5

Tim Matthews
Tim Matthews

Reputation: 5121

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.

Upvotes: 3

Daniel Von Fange
Daniel Von Fange

Reputation: 6071

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.

Upvotes: 4

flybywire
flybywire

Reputation: 273502

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.

Upvotes: 1

Franci Penov
Franci Penov

Reputation: 76001

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.

Upvotes: 12

Related Questions