Client-Server Architectures
Download
Report
Transcript Client-Server Architectures
Are Your Clients Overweight?
Software Architectures for
the Internet Age
FITO - October 16, 1998
Gregor Hohpe
Overview
What is Software Architecture?
Evolution of System Architectures
Architectural Decisions
Case Studies / Demo
Skills
Summary
What is Software Architecture?
• Distribution of system components across
platforms and physical machines
• Middleware / connectivity software
• Languages and tools
Technical
Architecture
•Hardware
•Vendors
•Sizing
•Networks
Software
Architecture
Application
Architecture
•Functional Modules
•Common Services
•Frameworks
•Object Design
•GUI Design
Evolution of Software Architectures
2-Tier Client-Server Architecture
Physical Architecture
Windows
Client
Technical Architecture
Database
Server
GUI
…
PowerBuilder
Visual Basic
Visual C++
Access
Paradox
Oracle
Sybase
Informix
MS SQLServer
Ethernet
Token Ring
TCP/IP
2-Tier Client-Server Pros / Cons
Internal Applications
Small to Medium User Base
Controlled Hi-Bandwidth Network Environment
Homogenous Hardware (hopefully)
Heavy load on database
Limited option for scaling
Costly software distribution
Poor separation of software components
“Fat Client”
3-Tier Client-Server Architecture
Physical Architecture
GUI
Technical Architecture
Business
Logic
Application Server(s)
Database Server(s)
3-Tier Client-Server Pros / Cons
Medium to Large User Base
Controlled Hi-Bandwidth Network Environment
Better separation of presentation and business
logic
More options for scaling
Costly software distribution
Poor cross-platform support
“Fat Client”
The Internet Age!
Slow and unreliable
connections
Millions of Users
Security?
All sorts of machines
Move Applications to the Server!
Physical Architecture
HTTP
Web
Browser
Web
Server
Application
Server
Data
base
HTML
Pages
Technical Architecture
Any Computer
Server
Any Network
Thin Client Architecture
No software distribution required
Cross-platform compatibility through standard
protocols (HTTP, HTML)
Connect to server for every little action
(e.g. input validation)
No immediate feedback on actions
Limited user interface design options
HTTP is connectionless protocol
Back to dumb terminals?
Move Some Stuff Back to the
Client
Web Browser
Java
Applet
Java / VB
Script
Cookies
HTTP
Web
Server
HTML
Pages
Applet
Repos.
Application
Server
Data
base
No-So-Thin Client Architecture
Automatic software distribution
Nicer GUIs, immediate response
Java Virtual Machine on all platforms
Browser Browser
Performance?
Download whole applet over modem?
Dynamic HTML!
Web Browser
HTTP
Dynamic
HTML
Web
Server
DHTML
Pages
Application
Server
Data
base
The Saga Continues...
XML: Data Description
Push Technologies / Channels
...
Architectural Decisions
Thin Client
Large user base
Uncontrolled environment
Simple applications
(Semi-)Static GUIs
Network connection
required
Fat Client
Medium user base
More controlled environment
More complex applications
Active GUIs
Runs without connection
Case Studies:
FaceBook
Training Navigator
Case Study:
The FaceBook
Internal application
Database of all San Francisco practitioners
Has to be updated automatically: new hires,
schedule data
Has to be available off-line (travel)
Connect to server through HTTP & TCP/IP, no
drive mapping
Existing stand-alone Visual Basic application,
uses tabs and other advanced controls
FaceBook Architecture:
Fat Client
Web Browser
HTTP
Data
base
•Application resides on client machine
•Data resides on client machine
•Data synchronized over HTTP
FaceBook
Software
Data
base
Web
Server
Client
Server
FaceBook Implementation:
Microsoft Remote Data Services
Internet Explorer
HTTP
R
D
S
IIS 4.0
O
L
E
D
B
O
D
B
C
MS
Access
COM
ActiveX Docs
•ActiveX Documents
•Remote Data Services (RDS)
•OLE DB
•Only in Internet Explorer 4.0
Visual
Basic
MS
Access
Client
Server
Case Study:
The Training Navigator
Internal application -- HR Self-Service
Allows practitioners to browse for and schedule
their own training classes
Central database with course offerings
Periodically used
Course selections fed to training coordinators
‘Shopping cart’ model -- choose and confirm
Training Navigator Architecture:
Thin Client
Web Browser
HTTP
Web
Server
TrainNav
Software
Data
base
HTML
Pages
• Application resides on server machine
• Updates directly to central database
Client
Server
Training Navigator Implementation:
Active Server Pages
Any Web Browser
HTTP
IIS 4.0
Visual
Basic
COM
Server
A
D
O
HTML
ASP
• Plain HTML on client site
• Active Server Pages: VBScript
• Application in Visual Basic
Client
Server
Data
base
Active Server Pages:
Technology Overview
My ASP Page
6
<body>
My ASP Page
...
<table>...</table>
....
</body>
Internet
Information
Server
5
3
<%
obj = CreateObject("ABC")
data = obj.GetData(parm)
%>
<body>
My ASP Page
...
<% =data %>
....
</body>
1
COM Object "ABC"
2
Public Function GetData(parm As Int) As String
Dim Rs As ADODB.RecordSet
...
Rs = Conn.Execute("SELECT * FROM....")
4
GetData = "<table> ...</table>"
Server File System
Active Server Pages:
Architectural Considerations
Easy, can leverage Visual Basic skills
Built-in data access
Produces plain HTML
Microsoft only - but not a problem for serverbased applications
Scripting language - limited type checking and
debugging
A lot of HTML foot work
Implement business login in COM server
Skill Sets
Skill Sets
Choice of tools does not necessarily limit your
architectural options
Biggest challenge: staying up to date
Ride the Muni / BART, read magazines!
Microsoft Interactive Developer
Internet World
Software Development
Summary
Software architecture is an interesting and often
times overlooked area
Architectural choices are critical to project
success
Diverse skill set is required
Interface with clients and technologists
Become a software architect!
Questions / Discussion