A client/server architecture is a design strategy (a kind of software framework) in which processing and storage tasks are divided between two classes of components: clients and servers. Though a hardware configuration might be referred to in these terms in this class we're concerned with software!
The way a browser and web server interact provides a classic example. The browser (client) relies on a server (web server) to provide resources in the form of web pages. An office printer might rely on software in a very similar way: your PC would contain client software that requests a specialized service from the printer (server). Can you think of some more examples?
Don't assume that multiple networks, multiple machines, or even multiple applications are required for the client/server architecture to be useful. The client/server model is used even within a single software program. One little subroutine may rely on another to make even a tiny little program more modular, more manageable.
I'm somewhat confused between the two approaches: 3-tier and C/S. What is the main difference between the two? Is it that 3-tier approach has a storage component?
Posted by: Billy MacDonald | Nov 6, 2007 4:58:02 PM
So would PCs visiting a website be another example? The website would be the server and the PCs the client? I'm kind of lost here.
Posted by: Colin Butler | Nov 7, 2007 8:25:25 PM
I thought of an example that might work (correct me if im wrong) but i thought of my laptop....it has client software on it that enables me to REQUEST my media player(server)to display videos (RESPONSE). I dont know if that works or not...i also was thinking...how would a company like google with millions of customers accessing its servers ever display accurate client/server architecture?
Posted by: Devon Gillis | Nov 8, 2007 8:08:31 PM
@Billy: The main difference between the two? It's just two different strategies for thinking about systems. It's like saying what is the difference between a component view and a process view. They aren't really meant to be compared.
They are two totally different approaches to designing distributed software systems. The client/server stresses a separation between two classes of applications, client and server. This separation is largely a resource sharing strategy such that together the system can be more efficient. The client/server architecture isn't concerned with data storage itself. Rather it is implied that a data layer is present to support both client and server.
The 3-tier stresses a separation between three layers, presentation, application, and data. This separation is largely based on function. Each layer plays an important role in the broader application.
But absolutely they co-exist.
@Colin: PC's visiting a web site is an example yes....but it is the example of the WWW. Your PC is hardware! It's the software that we're talking about here. So your PC doesn't connect to a web server, your web browser does.
@Devon: Sounds like your example is right. As a web-based service the client/server architecture lies at the heart of what Google does: It provides dedicated services to millions and millions of users acting through clients (browsers). There is not necessarily a need to show that a billion clients are out there hitting the server(s). Good software is scalable such that if it works for one client/server relationship it works for a million. In reality there are limits on the traffic that one server can support so there are strategies that are needed to keep up with the traffic (adding redundant servers for example).
Posted by: Mark | Nov 12, 2007 3:32:02 PM
I was also confused with the two concepts. That cleared things up.
Posted by: Nick Drake | Nov 13, 2007 11:40:03 AM
Any software downloads would have to use this client/server model, n'est pas? (As in games, movies, etc.)
Posted by: Chad MacLean | Nov 13, 2007 2:59:35 PM
Not 100% sure I follow. When you click on a downloadable file you are probably using a browser which is definately a client in a client/server relationship. When you click you are probably using http to start a download....very simple.
Maybe you're talking about file sharing?
Also a lot of applications have built in components that are client applications used to manage automatic updates. For instance iTunes has an automatic update feature that will communicate back to a download manager and notify you that there is a new update. This isn't a bad example of client/server I suppose.
Posted by: Mark | Nov 14, 2007 8:43:57 AM
I am not sure if I am on the right track here but I was thinking about my banking. Would the ATM that I go to to do my banking be the server and my bank card, with my account information, be the client? The server, the ATM, passes information to the client, me?
Posted by: Cayla Leger | Nov 20, 2007 10:28:38 PM
I can see why you might think that Cayla but that's not quite right.
Try to get your head into the software. The software on the ATM would be a client that connects to a server where your banking information lives.
Remember last days discussion about databases? Your bank card (number) is like a primary key that allows the bank to identify your bank account.
Posted by: Mark | Nov 21, 2007 10:23:15 AM
I dont think I understand what we need to know here? Do we just need to know that clients request information from the server and then the server response back with the required information. For example like the WWW?
Posted by: Stephanie Doucette | Nov 21, 2007 7:12:13 PM
You just need to understand what a client/server architecture is.
Posted by: Mark | Nov 21, 2007 10:50:38 PM
So basically anything software uses the client server model?
Posted by: Alesia Gallant | Dec 1, 2007 8:54:20 PM
I really like Devon's example here. When I think about a Client/Server architecture, I think of it in terms of a request and a response as well. But can the server in one client/server model become the client in a simultaneous activity. Like say I making a bid on eBay, the web browser would be the client and the web server would be the server, then would the web server be the client requesting a response from the database as to whether I am the new high bidder?
Posted by: Nathan Snowie | Dec 3, 2007 9:03:34 PM
I really like Devon's example with the computer and then when Mark mentioned Google, it helped clear thing up.
But I also see Nathan's point here and I like the example with eBay because I'm wondering the same thing. Can you have a client become a client in another activity?
Posted by: Kate MacDonald | Dec 4, 2007 4:31:44 PM
I also like Devon's example about the laptop. It makes client/server easier to understand. Thinking of it in terms of a request and response I fiind is also a good way to really understand it.
Posted by: Tiffany Richard | Dec 4, 2007 7:09:50 PM
I think I have another example of a client-server architecture.
If you are playing a game online, there is a server which is operated by the company making the game, and the players act as clients? (not the players physically, but whatever represents the players virtually...I dont really know what though...)
Posted by: Erica Wagner | Dec 4, 2007 7:19:32 PM
i like this post, makes it easy to understand (not that it was extremely hard in the first place), but it definatly helps
Posted by: Sean Hughes | Dec 4, 2007 8:36:55 PM
i was being confused on examples of the client/server model but after reading all of the examples that were posted here really cleared things up! Thanks
Posted by: Jolene | Dec 4, 2007 9:04:57 PM
yeah I agree with you Jolene. At first the definitions didn't really help me that much, but the diagrams sort of put everything into place for me!
Posted by: Lauren Tweel | Dec 4, 2007 11:09:00 PM
This diagram really helps demostrate the client/server architecture. The client or browser sends a request to the web server so it is able to retrieve the information to display on your computer screen.
Posted by: kyle macdonald | Dec 4, 2007 11:12:35 PM
The comments to this entry are closed.