SDSU CS 596: Client Server Programming
Spring Semester 1995
Intro Lecture

Course Information
San Diego State University -- This page last updated January 29, 1995

Contents of Intro Lecture

  1. References for Lecture
  2. Introduction to Course
    1. Criteria for Evaluating for Modularity
  3. Introduction to Client-Server
    1. What is Client-Server?
    2. What Client-Server Requires of a Programmer
    3. Computing "Paradigms"
      1. Centralized Multi-user Architecture
      2. Distributed Single-User Architecture
      3. Client/Server Architecture

References for Lecture

Vaughn Text Chapters 1 & 2

Introduction to Course

Items To Cover


Progamming is a process that produces products


source code

Programming is a skill like writing or playing musical instrument

How does one develop a skill?

What is our metric to measure how well we program?

Criteria for Evaluating for Modularity


Decompose problem into smaller subproblems that can be solved separately

Example: Top-Down Design

Counter-example: Initialization Module

Criteria for Evaluating for Modularity

Freely combine modules to produce new systems

Examples: Math libraries

Unix command & pipes

Criteria for Evaluating for Modularity

Individual modules understandable by human reader

Counter-example: Sequential Dependencies

Criteria for Evaluating for Modularity

Small change in specification results in:

Example: Symbolic Constants

const MaxSize = 100

Criteria for Evaluating for Modularity

Effects of an abnormal run-time condition is confined to a few modules

Example: Validating input at source

Introduction to Client-Server

What is Client-Server?

Example: World Wide Web (WWW)


Server normally provides data to clients
Often utilizes some data base
WWW data is HyperText Markup Language (html) files
Client Server Programming
<H2>Client Server Programming</H2>

How do the client and server interact
This is the glue that make client-server work
Involves using low level network protocols and application specific protocols
Designing application specific protocols is very important
WWW uses the HyperText Transfer Protocol
	Request	= 	SimpleRequest | FullRequest

	SimpleRequest	=	GET <uri> CrLf

	FullRequest	=	Method URI ProtocolVersion CrLf
			[*<HTRQ Header>]
			[<CrLf> <data>]

	<Method>	= 	<InitialAlpha>

	ProtocolVersion	=	HTTP/1.0

	uri	=	<as defined in URL spec>

	<HTRQ Header>	=	<Fieldname> : <Value> <CrLf>

	<data>	= 	MIME-conforming-message        


Application that intiates peer-to-peer comminition
Translate user requests into requests for data from server via protocol
GUI often used to interact with user


Any program that waits for incomming communication requests from a client
Extracts requested information from data and return to client
Common Issues
  • Authentication
  • Authorization
  • Data Security
  • Privacy
  • Protection
  • Concurrency

What Client-Server Requires of a Programmer

Computing "Paradigms"

Centralized Multi-user Architecture

Large central computers serving many users

Motivating Factors

Service large number of users (200 to 10,000+)
Centralized storage for large data bases
Minimize data on slow networks


Very stable, very reliable, well supported
Cost-effective why to support thousands of users
Large pool of technical staff
Large number of business applications available

Proprietary hardware and software
Very expensive
Requires large support staff
Costly to incrementally add more capacity
Mind Set

Hierarchical organization (Bureaucratic heaven)

Distributed Single-User Architecture

Motivating Factors

Low cost fast local area networks
Provide small number of users with compute power
Failure of MIS departments to be responsive and cost-effective

Cheap hardware and software
Lots of third-party software
User is in complete control of environment
Low cost to add more users

Sharing of resources across many users is difficult
Networks and OS do not provide good control or management over computer resources
Multivender environments can cause operation, support and reliability problems

Mind set

Individualism (Long Ranger syndrome)

Client/Server Architecture

Motivating Factors

Limitations of other modes of computing
"Cool" applications like WWW
Utilize easy to use micro computers as front end to mainframe computers
Cost-effective way to support thousands of users
Low cost to add more users
Cheap hardware and software
Provides control over access to data
User remains in control over local environment
Flexible access to information


Lack of Maturity
Lack of trained developers
A threat to the bureaucrats and the lone rangers