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
- References for Lecture
- Introduction to Course
- Criteria for Evaluating for Modularity
- Introduction to Client-Server
- What is Client-Server?
- What Client-Server Requires of a Programmer
- Computing "Paradigms"
- Centralized Multi-user Architecture
- Distributed Single-User Architecture
- Client/Server Architecture
Vaughn Text Chapters 1 & 2
Items To Cover
- Prerequisites
- Grades
- programs
- homework
- projects
- Class notes, www
- Why two instructors
- How lectures will work
- Why this course
- When will it be offered again?
- Machines, accounts, languages
- Nintendo view of school
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?
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:
- Changes in only a few modules
- Does not affect the architecture
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
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
- Designing robust protocols
- Designing usable computer-human interfaces
- Good documentation skills
- Understand the information flow of the company/customer
- Centralized Multi-user Architecture
- Distributed Single-User Architecture
- Client/Server 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)
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)
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