Pros and cons of client/server vs web-based apps?

bigred

Penultimate Amazing
Joined
Jan 19, 2005
Messages
22,725
Location
USA
Anyone have a good (ie in English) answer? Why is one better (or not) than the other?

I would think web-based is better for connecting people over distances, as you can use the web as your "vehicle" for data exchange, while client/sever seems more of a localized thing....other thoughts?
 
One advantage of web-based services is the (somewhat) standardized interface: Everyone knows how to use a web-browser.

Client-server solutions, on the other hand, offer the ability to specialize more, I suppose...
 
bigred said:
Anyone have a good (ie in English) answer? Why is one better (or not) than the other?

I would think web-based is better for connecting people over distances, as you can use the web as your "vehicle" for data exchange, while client/sever seems more of a localized thing....other thoughts?
web-based and client server are pretty much the same thing, at least by any definition that I'm aware of. Using web protocols is just one way of commincating between a client (maybe a browser) and a server or servers.
 
Well, first, web-based is client-server. The entire system is based on that concept.

Regarding apps...Like any other development question, it depends on the circumstances. There isn't One True Way of Development.
 
bigred said:
Anyone have a good (ie in English) answer? Why is one better (or not) than the other?

I would think web-based is better for connecting people over distances, as you can use the web as your "vehicle" for data exchange, while client/sever seems more of a localized thing....other thoughts?
Distance doesn't matter per se -- client/server apps can be run over a virtual private network.

Web-based apps allow for a simplified client, but require a middle tier.
 
They're pretty generic terms. You can build a client-server app that is web-based but the more common approach is to use other TCP/IP or other network technlogies such as LU6.2 to build them. It was a big buzz word a few years ago.
 
bigred said:
Just as I suspected: nobody knows.

;)
I provided you with a succint, and imo on-target reply. Are you actually interested in gaining knowledge? If yes, I will try to answer any specific questions you might have.
 
No need to get all sensitive on me. You sure you're not an Oregon import? sheesh

Actually your "Web-based apps allow for a simplified client, but require a middle tier" response I didn't quite get, unless you just mean the 'net as your middle tier......and my offhand feeling about that is "so what" - in fact, seems to me that that's more a benefit than anything else (I think.....just thinking out loud here).

After thinking about it some more, here's my cut - as I see it, web-based would most often be the "winner," so I guess I can see the shift there. Again comments welcomed, unless of course you disagree ;)


WEB PROS:

- Ease of access (anyone w/a 'net connection can get to)
- No client s/w needed to install
- No worries about upgrading client machines


C/S PROS:

- More robust, at least theoretically
- Less dependent or overhead regarding "states" (ie every time you hit submit/etc on a web page, you get another web page, all the data passing that goes on, etc)
 
bigred said:
No need to get all sensitive on me. You sure you're not an Oregon import? sheesh
Sheesh is right. I'm simply trying to answer your question like the cool and collected professional that I am. :)
Actually your "Web-based apps allow for a simplified client, but require a middle tier" response I didn't quite get, unless you just mean the 'net as your middle tier......and my offhand feeling about that is "so what" - in fact, seems to me that that's more a benefit than anything else
Yes, web-server (calling upon database and other services) as middle tier.
WEB PROS:
- Ease of access (anyone w/a 'net connection can get to)
- No client s/w needed to install
- No worries about upgrading client machines

C/S PROS:
- More robust, at least theoretically
- Less dependent or overhead regarding "states" (ie every time you hit submit/etc on a web page, you get another web page, all the data passing that goes on, etc)
By and large, yes.

"no worries about upgfrading client machines" ... still many issues, depending on inter/intra (browser versions, security, etc.)

Also you can jettison the "theoretically" caveat -- C/S apps can definitely be more robust/complex in terms of UI.
 
Well yeah, but I half expected an "I know an app that wasn't robust so that isn't true etc etc" response from someone, so figured it couldn't hurt to caveat.

Also beg pardon on the Oregon crack. That was low. :)
 
Well I dunno about you guys but I think both should be transparent. Ie Client apps talk to a server, but there is also a server which contains a 'web' version.

Some amazing things can be done with HTML/CSS and a little know-how.
 
Over the past few years there has been what is effectively a fashion for thin client applications (i.e. web based). I think this is just starting to turn and we will see s/w vendors and their customers coming back to exe-based applications. This will still be n-tier, however, application servers will still host the business logic. We will not see a return to simple client-db server applications.

Why?

- Because thin client is a misnomer: it takes as much (or sometimes more) processing power on the client machine to support a sophisticated web-client as it does to support a sophisticated exe-client.

- Because there are plenty of solutions for auto-install and corporate client s/w maintenance out there.

- Because customising thin client is often bloody hard, WYSIWYG just doesn't apply to the vast majority of web applications, developers have to learn a load of proprietary stuff - its expensive.

- Related to the last point, its a lot easier to get a functionally rich application with exe type clients than web type ones. This means lower costs for the s/w vendor and the customer at implementation time.

Of course there will still be significant space for html / web-based applications and some of them will do rather well. I am thinking primarily of specialised, functionally rich, corporate s/w in large organisations. Also - I do not think that web clients will vanish, just that we'll see a bit of resurgence of the exe (or maybe dedicated browser, but that's a different story).
 
hodgy said:
Over the past few years there has been what is effectively a fashion for thin client applications (i.e. web based). I think this is just starting to turn and we will see s/w vendors and their customers coming back to exe-based applications. This will still be n-tier, however, application servers will still host the business logic. We will not see a return to simple client-db server applications.

Why?

- Because thin client is a misnomer: it takes as much (or sometimes more) processing power on the client machine to support a sophisticated web-client as it does to support a sophisticated exe-client.

- Because there are plenty of solutions for auto-install and corporate client s/w maintenance out there.

- Because customising thin client is often bloody hard, WYSIWYG just doesn't apply to the vast majority of web applications, developers have to learn a load of proprietary stuff - its expensive.

- Related to the last point, its a lot easier to get a functionally rich application with exe type clients than web type ones. This means lower costs for the s/w vendor and the customer at implementation time.

Of course there will still be significant space for html / web-based applications and some of them will do rather well. I am thinking primarily of specialised, functionally rich, corporate s/w in large organisations. Also - I do not think that web clients will vanish, just that we'll see a bit of resurgence of the exe (or maybe dedicated browser, but that's a different story).

I think you are pretty much spot on. I can see web services running on servers becoming more wide spread with end users accessing via web browser or functionally rich exe to suit their needs.
 
To fund my music habit, I've been struggling with both technologies for years.


Web apps...

  • Use the web server as the client to business logic objects and databases.
  • leverage the browser for user interface, thus eliminating the need to code such things as an event handler for window resize, etc.
  • Don't readily support all kinds of custom UI behavior.
  • Do require the programmer to work in several programming languages at once, to provide client-side data verification (j-script), UI (html), server-side data verification as well as business logic (server languages), and data (SQL)
  • pose special security issues (because nothing can be assumed about the desktop client, not even that it will ever dispose of cached credentials).
  • Have no need for a desktop packaging and distribution process.
  • May leave confidential information on the end-user's screen long after a session has timed out on the server.
  • Are not always a good match for real-time applications, e.g. music applications, multi-user dungeons/games, status monitors, instant messengers.
  • Are a good match for some discrete transaction services, bulletin boards (like this one!), and ---especially --simple non-interactive presentation of results.
  • Are still often dependent on the pixel size of the desktop (i.e. may have to be rewritten especially for PDAs and cell-phones).
  • Make relatively scant assumptions about the capabilities and hardware of the desktop.

Client-server apps...

  • Require the custom coding of all client behavior.
  • Can use the full power of the desktop's UI.
  • Can be built in a reduced set of programming tools, e.g. SQL for a database plus a single language (e.g. C, C#, Java, etc.) for both client and server applications.
  • May be coded so that a portion (internally obfuscated) of the client application uses custom security code and guarantees appropriate user credentialling and expiration of credentials.
  • --but may expose the desktop to reverse-engineerable custom security code.
  • Must be packaged and installed on every desktop where it is to be used.
  • Can force-exit upon loss of session.
  • Are often a good match for real-time applications (e.g. streaming media, MUDs, etc.) and polling applications (monitors, IMs, etc.).
  • are capable of handling discrete transaction services, too.
  • Require the maintenance of separate code bases for each client platform (various versions of native Windows, .Net, each supported flavor of native Unix including MacOS X, earlier forms of MacOS, PalmOS, Java, etc.)..

Now, web service concentrates all the application-specific code on the server (modulo short j-scripts for faster user feedback). That gives it many of the characteristics of mainframe applications of old. Any architecture which does this is now called by the buzzword application service.

Another kind of application service which should be explored alongside these is presentation service. In presentation service, everything--including the graphic user interface--of the application runs on the central box, and the code on the desktop is just a generic piece which paints widgets on the screen and passes user input through to the central box.

I'm using "central box" and "desktop" here instead of client and server for a reason which I'll explain shortly.

The two major players in presentation service are X11 (X-windows) and Indpendent Computing Architecture (ICA -- Citrix Metaframe). X11 calls the desktop component the "service", and serves the user up to "client" applications running on remote boxes; ICA calls the desktop component the "ICA client", and serves "published applications" to the user. Because these two main players disagree about which end is "server" and which end is "client", I have to be careful how I phrase things.

X11 melds the application's UI with client-side UI components designed to blend with the desktop's native look and feel, so when, for instance, an X11 application runs on a Linux box but is accessed from a Macintosh, it takes on Macintosh-style buttons and window-frame widgets.

ICA literally passes pixels to the desktop, so e.g. a Macintosh user might suddenly have what appears to be a native Windows application running amid their Macintosh applications. The Windows app will have Windows-style buttons and widgets.

The UI of X11 apps must be specially written for X11. ICA can be used to serve virtually any application to anywhere, so long as that application stores its characteristics on a per-session/user basis rather than a per-machine basis (e.g., on Windows, using the HKLUser instead of HKLMachine registry).

For both of these players, desktop components exist for a wide variety of devices, including, intriguingly, Java-enabled web browsers.

X11 exists in the open-source world; ICA is currently Citrix Corp.'s rather pricey property.

Citrix has gotten rather agressive about marrying ICA to web services and web-based XML services to do things like auto-populate the desktop's menu with icons to ICA sessions, make a user's portal environment and applications available anywhere in the world, and enable pass-through authentication and authorization.

Presentation service also has a well-defined concept of a "disconnected session", making it possible for a user to leave their environment running on the server while logging out of the desktop. It may even be possible for the user to reconnect to and resume the same session from a totally different device. Where life gets interesting is when the remote application is asked to print, or to save data to the end-user's hard drive--there may be a lot of initial configuring and security-planning involved.

Citrix's hard-sell has long been, and basically remains, that if you switch to running literally EVERYTHING via ICA, you can stop upgrading desktop machines since all they need to be able to do is run a small, generic GUI application. But Citrix Corp. admits that certain applications--those involving realtime media like movies and music--are still not appropriate for ICA.


By the by, the term thin client refers to a very distinct and significantly different technology. The "leanness" is not of desktop processing capability but of desktop network capability. For instance, a "thick" client may have an Oracle database instance as its server side, but if you try to run that client over T1, modem, or across continents, you may find it constantly getting disconnected from the server due to time-outs and the sheer bandwidth needed to move data across the network. ICA fares better, generally requiring only 16k or about 1/4 the bandwidth of a modem, to keep a session connected and fully responsive. And web apps generally use a much tinier bandwidth. In exchange for that bandwidth, you have to establish a solid connection between your application server (ICA server or web server) and your database, but that connection is typically between racks in your data center. Thin client technology isn't right for everything--streaming video is a classic case where it just won't cut it--but it does have important uses.

Edited to add--When I sat down to answer this, I didn't realize I was going to write a white-paper. But I did know that in my environment we suddenly went from writing a .Net app in 25 pages of sourcecode plus a security plug-in, to writing the same app in Fusebox-for-Coldfusion as 3 pages of sourcecode plus a security plug-in (the security plug-in is reused across many applications and thus doesn't count as part of the effort). Where an application is needed for some really simple capability, php and cf are pretty much ideal. For instance, here's the code in either of them to the hello, world application:

Hello, World!

(i.e. text not tagged as code is static output text). About the shortest competitor is probably any .Net language, which looks like this:

System.MsgBox("Hello, World!")

The difference in coding requirements for UI gets exponential when the output is variable length and appears in a resizeable window.
 
DrMatt said:
The two major players in presentation service are X11 (X-windows) and Indpendent Computing Architecture (ICA -- Citrix Metaframe).
ICA has serious competition from Microsoft Terminal Services/Remote Desktop which is not as sophisticated but comes bundled with Windows Client Access Licences.
X11 melds the application's UI with client-side UI components designed to blend with the desktop's native look and feel, so when, for instance, an X11 application runs on a Linux box but is accessed from a Macintosh, it takes on Macintosh-style buttons and window-frame widgets.
This is not quite true actually. The X11 server (confusingly on the client machine) basically gives the X11 app a bitmap to put things in. In your example, X11 windows will have Macintosh look and feel to the frame i.e. the title bar and the maximise/minimise/close buttons but everything inside the app will look like the widgets it was compiled with.

The UI of X11 apps must be specially written for X11. ICA can be used to serve virtually any application to anywhere, so long as that application stores its characteristics on a per-session/user basis rather than a per-machine basis (e.g., on Windows, using the HKLUser instead of HKLMachine registry).
Well X11 and ICA are not equivalent. X11 is closer to being a network aware Win32 API. Saying that X11 apps must be specially written for X11 is the same as saying Windows apps must be specially written for Win32.

By the by, the term thin client refers to a very distinct and significantly different technology. The "leanness" is not of desktop processing capability but of desktop network capability. For instance, a "thick" client may have an Oracle database instance as its server side, but if you try to run that client over T1, modem, or across continents, you may find it constantly getting disconnected from the server due to time-outs and the sheer bandwidth needed to move data across the network.
Not true at all. In general, I would expect the network bandwidth required for a thick client to be lower than for the ubiquitous thin client (i.e. HTTP/HTML). The reason being that with a thick client all that gets transmitted across the network is data. With a thin client you must also transmit a lot of information about presentation (e.g. HTML tags). In terms of bandwidth HTML and XML are both extremely poor protocols.

Not only that, but the only important implementation of a thin client is HTTP/HTML which is a stateless protocol. Thus, the client has to constantly reopen the connection and transmit state information (aka cookies) to the server.

ICA fares better, generally requiring only 16k or about 1/4 the bandwidth of a modem, to keep a session connected and fully responsive. And web apps generally use a much tinier bandwidth.
Yeah right! Try running a copy of Microsoft Word across a 16K connection in 32 bit colour at any reasonable resolution, or downloading virtually any modern web page with all the graphics that web designers seem to like across the same.

The World Wide Web put user interface design back 20 years, or rather, the decision to use it as a front end for thin client applications did. There's nothing in a web based application apart from pretty fonts and graphics that you couldn't find in a 1970s mainframe app with a dumb terminal front end. Against that the advantages of using a "thin client" are that you get a platform agnostic client with no porting costs between different types of client and there are zero client deployment costs. note that these are all advantages for people like me (software developers) and not advantages for the users. Against this the user has to put up with a crap UI and crap response times.

</rant>
 
jeremyp said:
ICA has serious competition from Microsoft Terminal Services/Remote Desktop which is not as sophisticated but comes bundled with Windows Client Access Licences.



No. RDP serves whole desktops, not individual applications, and plays in the same arena with PCAnywhere--and beats the pants off it. It also is only available for Windows servers.

This is not quite true actually. The X11 server (confusingly on the client machine) basically gives the X11 app a bitmap to put things in. In your example, X11 windows will have Macintosh look and feel to the frame i.e. the title bar and the maximise/minimise/close buttons but everything inside the app will look like the widgets it was compiled with.

Yes.

Well X11 and ICA are not equivalent. X11 is closer to being a network aware Win32 API. Saying that X11 apps must be specially written for X11 is the same as saying Windows apps must be specially written for Win32.

No. ICA for Unix works for any network-aware OR non-network-aware local Unix application. So ICA apps are any apps available to the supported server OS.


Not true at all. In general, I would expect the network bandwidth required for a thick client to be lower than for the ubiquitous thin client (i.e. HTTP/HTML). The reason being that with a thick client all that gets transmitted across the network is data. With a thin client you must also transmit a lot of information about presentation (e.g. HTML tags). In terms of bandwidth HTML and XML are both extremely poor protocols.

Wrong. With thick client you must maintain your session in real time, but in exchange for that you get capabilities like streaming--which really cannot be accomplished at low bandwidth. The difference really is bandwidth. I say this having migrated thick-client applications to ICA when the end-users are on phone lines.

Not only that, but the only important implementation of a thin client is HTTP/HTML which is a stateless protocol.

Wrong. You have confused thin client, which is a client requiring minimal bandwidth, with web service, which is just one kind of possible implementation of thin client. ICA and X11 are also thin client, as you can discover by launching a 1-tier Oracle-based application over a modem and then running it remotely.

Thus, the client has to constantly reopen the connection and transmit state information (aka cookies) to the server.

Rather than constantly responding to keep-alive pulses.

Yeah right! Try running a copy of Microsoft Word across a 16K connection in 32 bit colour at any reasonable resolution, or downloading virtually any modern web page with all the graphics that web designers seem to like across the same.

I do this daily as part of my job, actually.

The World Wide Web put user interface design back 20 years, or rather, the decision to use it as a front end for thin client applications did. There's nothing in a web based application apart from pretty fonts and graphics that you couldn't find in a 1970s mainframe app with a dumb terminal front end. Against that the advantages of using a "thin client" are that you get a platform agnostic client with no porting costs between different types of client and there are zero client deployment costs. note that these are all advantages for people like me (software developers) and not advantages for the users. Against this the user has to put up with a crap UI and crap response times.

</rant>

This last paragraph says the same things as I said, where it is correct, and spins a particular spin favoring one technology over the other everywhere else. These things are just plain different from each other, and have different optimal uses. I notice you're STILL not eschewing the use of this instance of phpBB2 in favor of a thick client application!
 

Back
Top Bottom