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

Programming

Progamming is a process that produces products

Products

source code
documentation
design
tools

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

Decomposability

Decompose problem into smaller subproblems that can be solved separately

Example: Top-Down Design

Counter-example: Initialization Module


Criteria for Evaluating for Modularity
Composability

Freely combine modules to produce new systems

Examples: Math libraries

Unix command & pipes


Criteria for Evaluating for Modularity
Understandability

Individual modules understandable by human reader

Counter-example: Sequential Dependencies


Criteria for Evaluating for Modularity
Continuity

Small change in specification results in:

Example: Symbolic Constants

const MaxSize = 100


Criteria for Evaluating for Modularity
Protection

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)

Data

Server normally provides data to clients
Often utilizes some data base
WWW data is HyperText Markup Language (html) files
<!DOCTYPE HTML SYSTEM "html.dtd">
<HTML>
<HEAD><TITLE>
Client Server Programming
</TITLE></HEAD>
<BODY>
<H2>Client Server Programming</H2>
<HR>
Protocol

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        

Client

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

Server

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

Strengths

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
Weakness

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
Strengths

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

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
Strengths
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

Weaknesses

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