OnDoc
| sign
in
up
~
pub
|
pdf
txt
html
toc
url
|
<<
>>
1
~
169
170
171
172
173
174
175
~
180
Table of Contents
Architectural Styles and the Design of Network-based Software Architectures
DEDICATION
LIST OF FIGURES
LIST OF TABLES
ACKNOWLEDGMENTS
CURRICULUM VITAE
Education
Professional Experience
Publications
Refereed Journal Articles
Refereed Conference Publications
Industry Standards
Industry Articles
Non-Refereed Publications
Published Software Packages
Formal Presentations
Professional Activities
Professional Associations
Honors, Awards, Fellowships
ABSTRACT OF THE DISSERTATION
INTRODUCTION
Software Architecture
1.1 Run-time Abstraction
1.2 Elements
1.2.1 Components
1.2.2 Connectors
1.2.3 Data
1.3 Configurations
1.4 Properties
1.5 Styles
1.6 Patterns and Pattern Languages
1.7 Views
1.8 Related Work
1.8.1 Design Methodologies
1.8.2 Handbooks for Design, Design Patterns, and Pattern Languages
1.8.3 Reference Models and Domain-specific Software Architectures (DSSA)
1.8.4 Architecture Description Languages (ADL)
1.8.5 Formal Architectural Models
1.9 Summary
Network-based Application Architectures
2.1 Scope
2.1.1 Network-based vs. Distributed
2.1.2 Application Software vs. Networking Software
2.2 Evaluating the Design of Application Architectures
2.3 Architectural Properties of Key Interest
2.3.1 Performance
2.3.1.1 Network Performance
2.3.1.2 User-perceived Performance
2.3.1.3 Network Efficiency
2.3.2 Scalability
2.3.3 Simplicity
2.3.4 Modifiability
2.3.4.1 Evolvability
2.3.4.2 Extensibility
2.3.4.3 Customizability
2.3.4.4 Configurability
2.3.4.5 Reusability
2.3.5 Visibility
2.3.6 Portability
2.3.7 Reliability
2.4 Summary
Network-based Architectural Styles
3.1 Classification Methodology
3.1.1 Selection of Architectural Styles for Classification
3.1.2 Style-induced Architectural Properties
3.1.3 Visualization
3.2 Data-flow Styles
3.2.1 Pipe and Filter (PF)
3.2.2 Uniform Pipe and Filter (UPF)
3.3 Replication Styles
3.3.1 Replicated Repository (RR)
3.3.2 Cache ($)
3.4 Hierarchical Styles
3.4.1 Client-Server (CS)
3.4.2 Layered System (LS) and Layered-Client-Server (LCS)
3.4.3 Client-Stateless-Server (CSS)
3.4.4 Client-Cache-Stateless-Server (C$SS)
3.4.5 Layered-Client-Cache-Stateless-Server (LC$SS)
3.4.6 Remote Session (RS)
3.4.7 Remote Data Access (RDA)
3.5 Mobile Code Styles
3.5.1 Virtual Machine (VM)
3.5.2 Remote Evaluation (REV)
3.5.3 Code on Demand (COD)
3.5.4 Layered-Code-on-Demand-Client-Cache-Stateless-Server (LCODC$SS)
3.5.5 Mobile Agent (MA)
3.6 Peer-to-Peer Styles
3.6.1 Event-based Integration (EBI)
3.6.2 C2
3.6.3 Distributed Objects
3.6.4 Brokered Distributed Objects
3.7 Limitations
3.8 Related Work
3.8.1 Classification of Architectural Styles and Patterns
3.8.2 Distributed Systems and Programming Paradigms
3.8.3 Middleware
3.9 Summary
Designing the Web Architecture: Problems and Insights
4.1 WWW Application Domain Requirements
4.1.1 Low Entry-barrier
4.1.2 Extensibility
4.1.3 Distributed Hypermedia
4.1.4 Internet-scale
4.1.4.1 Anarchic Scalability
4.1.4.2 Independent Deployment
4.2 Problem
4.3 Approach
4.4 Summary
Representational State Transfer (REST)
5.1 Deriving REST
5.1.1 Starting with the Null Style
5.1.2 Client-Server
5.1.3 Stateless
5.1.4 Cache
5.1.5 Uniform Interface
5.1.6 Layered System
5.1.7 Code-On-Demand
5.1.8 Style Derivation Summary
5.2 REST Architectural Elements
5.2.1 Data Elements
5.2.1.1 Resources and Resource Identifiers
5.2.1.2 Representations
5.2.2 Connectors
5.2.3 Components
5.3 REST Architectural Views
5.3.1 Process View
5.3.2 Connector View
5.3.3 Data View
5.4 Related Work
5.5 Summary
Experience and Evaluation
6.1 Standardizing the Web
6.2 REST Applied to URI
6.2.1 Redefinition of Resource
6.2.2 Manipulating Shadows
6.2.3 Remote Authoring
6.2.4 Binding Semantics to URI
6.2.5 REST Mismatches in URI
6.3 REST Applied to HTTP
6.3.1 Extensibility
6.3.1.1 Protocol Versioning
6.3.1.2 Extensible Protocol Elements
6.3.1.3 Upgrade
6.3.2 Self-descriptive Messages
6.3.2.1 Host
6.3.2.2 Layered Encodings
6.3.2.3 Semantic Independence
6.3.2.4 Transport Independence
6.3.2.5 Size Limits
6.3.2.6 Cache Control
6.3.2.7 Content Negotiation
6.3.3 Performance
6.3.3.1 Persistent Connections
6.3.3.2 Write-through Caching
6.3.4 REST Mismatches in HTTP
6.3.4.1 Differentiating Non-authoritative Responses
6.3.4.2 Cookies
6.3.4.3 Mandatory Extensions
6.3.4.4 Mixing Metadata
6.3.4.5 MIME Syntax
6.3.5 Matching Responses to Requests
6.4 Technology Transfer
6.4.1 Deployment experience with libwww-perl
6.4.2 Deployment experience with Apache
6.4.3 Deployment of URI and HTTP/1.1-compliant Software
6.5 Architectural Lessons
6.5.1 Advantages of a Network-based API
6.5.2 HTTP is not RPC
6.5.3 HTTP is not a Transport Protocol
6.5.4 Design of Media Types
6.5.4.1 Application State in a Network-based System
6.5.4.2 Incremental Processing
6.5.4.3 Java versus JavaScript
6.6 Summary
CONCLUSIONS
REFERENCES