没有合适的资源?快使用搜索试试~ 我知道了~
首页Architectural Styles and the Design of Network-based Software Architectures_2
资源详情
资源评论
资源推荐

UNIVERSITY OF CALIFORNIA,
IRVINE
Architectural Styles and the Design of Network-based Software Architectures
DISSERTATION
submitted in partial satisfaction of the requirements for the degree of
DOCTOR OF PHILOSOPHY
in Information and Computer Science
by
Roy Thomas Fielding
Dissertation Committee:
Professor Richard N. Taylor, Chair
Professor Mark S. Ackerman
Professor David S. Rosenblum
2000
© Roy Thomas Fielding, 2000.
All rights reserved.

ii
The dissertation of Roy Thomas Fielding is approved
and is acceptable in quality and form
for publication on microfilm:
____________________________________
____________________________________
____________________________________
Committee Chair
University of California, Irvine
2000
iii
DEDICATION
To
my parents,
Pete and Kathleen Fielding,
who made all of this possible,
for their endless encouragement and patience.
And also to
Tim Berners-Lee,
for making the World Wide Web an open, collaborative project.
What is life?
It is the flash of a firefly in the night.
It is the breath of a buffalo in the wintertime.
It is the little shadow which runs across the grass
and loses itself in the sunset.
— Crowfoot's last words (1890), Blackfoot warrior and orator.
Almost everybody feels at peace with nature: listening to the ocean
waves against the shore, by a still lake, in a field of grass, on a
windblown heath. One day, when we have learned the timeless way
again, we shall feel the same about our towns, and we shall feel as
much at peace in them, as we do today walking by the ocean, or
stretched out in the long grass of a meadow.
— Christopher Alexander, The Timeless Way of Building (1979)

iv
TABLE OF CONTENTS
Page
LIST OF FIGURES .......................................................................................vi
LIST OF TABLES ........................................................................................vii
ACKNOWLEDGMENTS ...........................................................................viii
CURRICULUM VITAE .................................................................................x
ABSTRACT OF THE DISSERTATION ....................................................xvi
INTRODUCTION ..........................................................................................1
CHAPTER 1: Software Architecture ..............................................................5
1.1 Run-time Abstraction............................................................................................5
1.2 Elements................................................................................................................7
1.3 Configurations ....................................................................................................12
1.4 Properties ............................................................................................................12
1.5 Styles...................................................................................................................13
1.6 Patterns and Pattern Languages ..........................................................................16
1.7 Views ..................................................................................................................17
1.8 Related Work ......................................................................................................18
1.9 Summary.............................................................................................................23
CHAPTER 2: Network-based Application Architectures.............................24
2.1 Scope...................................................................................................................24
2.2 Evaluating the Design of Application Architectures ..........................................26
2.3 Architectural Properties of Key Interest .............................................................28
2.4 Summary.............................................................................................................37
v
CHAPTER 3: Network-based Architectural Styles ......................................38
3.1 Classification Methodology................................................................................38
3.2 Data-flow Styles .................................................................................................41
3.3 Replication Styles ...............................................................................................43
3.4 Hierarchical Styles ..............................................................................................45
3.5 Mobile Code Styles.............................................................................................50
3.6 Peer-to-Peer Styles..............................................................................................55
3.7 Limitations ..........................................................................................................59
3.8 Related Work ......................................................................................................60
3.9 Summary.............................................................................................................64
CHAPTER 4: Designing the Web Architecture: Problems and Insights ......66
4.1 WWW Application Domain Requirements ........................................................66
4.2 Problem...............................................................................................................71
4.3 Approach.............................................................................................................72
4.4 Summary.............................................................................................................75
CHAPTER 5: Representational State Transfer (REST)................................76
5.1 Deriving REST ...................................................................................................76
5.2 REST Architectural Elements.............................................................................86
5.3 REST Architectural Views .................................................................................97
5.4 Related Work ....................................................................................................103
5.5 Summary...........................................................................................................105
CHAPTER 6: Experience and Evaluation .................................................. 107
6.1 Standardizing the Web......................................................................................107
6.2 REST Applied to URI.......................................................................................109
6.3 REST Applied to HTTP....................................................................................116
6.4 Technology Transfer.........................................................................................134
6.5 Architectural Lessons .......................................................................................138
6.6 Summary...........................................................................................................147
CONCLUSIONS.........................................................................................148
REFERENCES............................................................................................152

vi
LIST OF FIGURES
Page
Figure 5-1. Null Style 77
Figure 5-2. Client-Server 78
Figure 5-3. Client-Stateless-Server 78
Figure 5-4. Client-Cache-Stateless-Server 80
Figure 5-5. Early WWW Architecture Diagram 81
Figure 5-6. Uniform-Client-Cache-Stateless-Server 82
Figure 5-7. Uniform-Layered-Client-Cache-Stateless-Server 83
Figure 5-8. REST 84
Figure 5-9. REST Derivation by Style Constraints 85
Figure 5-10. Process View of a REST-based Architecture 98
vii
LIST OF TABLES
Page
Table 3-1. Evaluation of Data-flow Styles for Network-based Hypermedia 41
Table 3-2. Evaluation of Replication Styles for Network-based Hypermedia 43
Table 3-3. Evaluation of Hierarchical Styles for Network-based Hypermedia 45
Table 3-4. Evaluation of Mobile Code Styles for Network-based Hypermedia 51
Table 3-5. Evaluation of Peer-to-Peer Styles for Network-based Hypermedia 55
Table 3-6. Evaluation Summary 65
Table 5-1. REST Data Elements 88
Table 5-2. REST Connectors 93
Table 5-3. REST Components 96

viii
ACKNOWLEDGMENTS
It has been a great pleasure working with the faculty, staff, and students at the University
of California, Irvine, during my tenure as a doctoral student. This work would never have
been possible if it were not for the freedom I was given to pursue my own research
interests, thanks in large part to the kindness and considerable mentoring provided by
Dick Taylor, my long-time advisor and committee chair. Mark Ackerman also deserves a
great deal of thanks, for it was his class on distributed information services in 1993 that
introduced me to the Web developer community and led to all of the design work
described in this dissertation. Likewise, it was David Rosenblum’s work on Internet-scale
software architectures that convinced me to think of my own research in terms of
architecture, rather than simply hypermedia or application-layer protocol design.
The Web’s architectural style was developed iteratively over a six year period, but
primarily during the first six months of 1995. It has been influenced by countless
discussions with researchers at UCI, staff at the World Wide Web Consortium (W3C), and
engineers within the HTTP and URI working groups of the Internet Engineering
Taskforce (IETF). I would particularly like to thank Tim Berners-Lee, Henrik Frystyk
Nielsen, Dan Connolly, Dave Raggett, Rohit Khare, Jim Whitehead, Larry Masinter, and
Dan LaLiberte for many thoughtful conversations regarding the nature and goals of the
WWW architecture. I’d also like to thank Ken Anderson for his insight into the open
hypertext community and for trailblazing the path for hypermedia research at UCI. Thanks
also to my fellow architecture researchers at UCI, all of whom finished before me,
including Peyman Oreizy, Neno Medvidovic, Jason Robbins, and David Hilbert.
The Web architecture is based on the collaborative work of dozens of volunteer software
developers, many of whom rarely receive the credit they deserve for pioneering the Web
before it became a commercial phenomenon. In addition to the W3C folks above,
recognition should go to the server developers that enabled much of the Web’s rapid
growth in 1993-1994 (more so, I believe, than did the browsers). That includes
Rob McCool (NCSA httpd), Ari Luotonen (CERN httpd/proxy), and Tony Sanders
(Plexus). Thanks also to “Mr. Content”, Kevin Hughes, for being the first to implement
most of the interesting ways to show information on the Web beyond hypertext. The early
client developers also deserve thanks: Nicola Pellow (line-mode), Pei Wei (Viola),
Tony Johnson (Midas), Lou Montulli (Lynx), Bill Perry (W3), and Marc Andreessen and
Eric Bina (Mosaic for X). Finally, my personal thanks go to my libwww-perl
collaborators, Oscar Nierstrasz, Martijn Koster, and Gisle Aas. Cheers!
ix
The modern Web architecture is still defined more by the work of individual volunteers
than by any single company. Chief among them are the members of the Apache Software
Foundation. Special thanks go to Robert S. Thau for the incredibly robust Shambhala
design that led to Apache 1.0, as well as for many discussions on desirable (and
undesirable) Web extensions, to Dean Gaudet for teaching me more about detailed system
performance evaluation than I thought I needed to know, and to Alexei Kosut for being the
first to implement most of HTTP/1.1 in Apache. Additional thanks to the rest of the
Apache Group founders, including Brian Behlendorf, Rob Hartill, David Robinson,
Cliff Skolnick, Randy Terbush, and Andrew Wilson, for building a community that we
can all be proud of and changing the world one more time.
I’d also like to thank all of the people at eBuilt who have made it such a great place to
work. Particular thanks go to the four technical founders — Joe Lindsay, Phil Lindsay,
Jim Hayes, and Joe Manna — for creating (and defending) a culture that makes
engineering fun. Thanks also to Mike Dewey, Jeff Lenardson, Charlie Bunten, and
Ted Lavoie, for making it possible to earn money while having fun. And special thanks to
Linda Dailing, for being the glue that holds us all together.
Thanks and good luck go out to the team at Endeavors Technology, including
Greg Bolcer, Clay Cover, Art Hitomi, and Peter Kammer. Finally, I’d like to thank my
three muses—Laura, Nikki, and Ling—for their inspiration while writing this dissertation.
In large part, my dissertation research has been sponsored by the Defense Advanced
Research Projects Agency, and Airforce Research Laboratory, Air Force Materiel
Command, USAF, under agreement number F30602-97-2-0021. The U.S. Government is
authorized to reproduce and distribute reprints for Governmental purposes
notwithstanding any copyright annotation thereon. The views and conclusions contained
herein are those of the authors and should not be interpreted as necessarily representing
the official policies or endorsements, either expressed or implied, of the Defense
Advanced Research Projects Agency, Airforce Research Laboratory or the U.S.
Government.
剩余89页未读,继续阅读








安全验证
文档复制为VIP权益,开通VIP直接复制

评论0