SlideShare a Scribd company logo
1 of 35
Download to read offline
Distribution and Publication
With Atom Web Services


Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Software Architect
          at Schematic
          Atlanta PHP Leader
          Co-author of Zend
          PHP 5 Certification
          Study Guide
          Chatter on #phpc



Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
“The name Atom applies to a pair of related
      standards. The Atom Syndication Format is an
      XML language used for web feeds, while the
      Atom Publishing Protocol (short AtomPub or
      APP) is a simple HTTP-based protocol for
      creating and updating web resources.”
      — Wikipedia



Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Atom is both a format and a protocol.




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
The Atom format
             An XML-based web content and
             metadata syndication format
             Defined by RFC 4287
             Developed as an open alternative to the
             “frozen” RSS 2.0 format
             XML namespace:
             http://www.w3.org/2005/Atom



Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
The Atom Publishing Protocol
             An application-level protocol for
             publishing and editing web resources
             using HTTP and XML
             Defined by RFC 5023
             Also called “AtomPub” or “APP”
             XML namespace:
             http://www.w3.org/2007/app



Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
A common format
             Widespread adoption means increased
             interoperability between disparate
             systems
             Applications now have a common
             language and publishing protocol,
             leveraging HTTP as a vehicle
             Supported by a diverse and wide-
             reaching community through libraries for
             consuming and creating Atom services

Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Understanding Atom
             Atom is a RESTful protocol
             Atom’s focus is on resources in the
             system
             To understand Atom, you must first
             understand REST and the Resource-
             Oriented Architecture




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
“REST strictly refers to a collection of network
      architecture principles which outline how
      resources are defined and addressed.”
      — Wikipedia




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
What is REST?
             Representational State Transfer
             Not an architecture or a standard for
             developing web services
             Not a particular format or pattern
             It is a set of design criteria




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Resource-Oriented Architecture
             Resources
             Their names (addresses)
             Their representations
             The links between them




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
“A resource can be anything that has identity.
      Familiar examples include an electronic
      document, an image, a service (e.g., ‘today’s
      weather report for Los Angeles’), and a
      collection of other resources. Not all resources
      are network ‘retrievable’; e.g., human beings,
      corporations, and bound books in a library can
      also be considered resources.”
      — RFC 2396


Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
ROA basics
            Each resource knows how to do three
            simple things:
            1. Represent itself to the client
            2. Transition from one state to the next
            3. Destroy itself
            Additionally, the ROA provides a means
            to create a resource


Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
ROA properties
             Resources are addressable
             Resources have no state
             Resources are connected
             Resources share the same interface




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
This is REST in a nutshell.




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Atom is resource-oriented
             Think of an Atom web service as a
             catalog of resources that you want to
             expose
             Each resource has a unique identifier
             The resources are well-connected
             Atom sits on top of HTTP
              Requests have no state
              Share the same interface

Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Atom terminology
             Entry
             Feed
             Collection
             Category Document
             Service Document




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Entry
             Represents an individual piece of content
             (post, article, page, image, video, etc.)
             Entries can be related to other entries or
             feeds.
             This resource represents a specific
             resource (i.e. http://example.org/posts/
             1234).
             Content type:
             application/atom+xml;type=entry

Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Feed
             Represents a collection of Atom entries
             Feeds can be related to other feeds or
             entries
             This resource represents a specific
             collection of resources (i.e. http://
             example.org/posts)
             Atom Collections are Feeds
             Content type:
             application/atom+xml;type=feed
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Category
             Categories provide metadata to describe
             an Atom entry. Atom itself doesn’t define
             usage of categories.
             Category Documents describe the
             categories that are allowed in Collections.
             Content type:
             application/atomcat+xml




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Service
             A service discovery document that
             describes the locations and capabilities
             of Collections
             Usually the entry point of the Atom web
             service
             Content type:
             application/atomsvc+xml




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Atom provides
             Retrieval of resources
             Creation of new resources
             Modification to existing resources
             Removal (deletion) of resources from
             public view




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Creating resources
             Client “discovers” the resource through
             which the Atom service accepts POST
             requests to create resources (defined by
             app:collection)
             Client sends resource in POST request:
             POST /archives HTTP/1.1
             Client receives a 201 Created response
             in the event of a success


Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Modifying resources
             Client requests a representation of the
             resource:
             GET /archives/1234 HTTP/1.1
             Client modifies the resource and tells the
             service to update it:
             PUT /archives/1234 HTTP/1.1

             Service responds with a 200 OK status to
             indicate success
             Client uses “edit” relation for this logic
Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Removing resources
             Client sends a DELETE request to the
             sevice:
             DELETE /archives/1234 HTTP/1.1
             Service responds with a 204 No Content
             status code to indicate success




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Authentication
             Atom does not provide or recommend an
             auth mechanism
             Early favorite of the Atom community was
             WSSE
             Consider the use of OAuth
             Send authentication info through HTTP
             headers on each request requiring
             authenticated access


Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Encryption
             Atom does not provide for encryption
             Use SSL for all sensitive communication
             Atom Entry and Feed Documents can
             contain XML Digital Signatures
             Can be encrypted using XML Encryption




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Extending Atom
             Atom is XML; as such, it may be
             extended using other vocabularies
             (namespaces)
             Use other namespaces to convey other
             information
             e.g. OpenSearch
             e.g. Dublin Core



Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Parsing Atom
             DOM, XMLReader, XMLWriter,
             SimpleXML
             Zend_Feed, PEAR::XML_Feed_Parser,
             phpatomlib
             Apache Abdera




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
Out-of-box Atom clients
             Fude -
             http://www.witha.jp/eXeries/software/
             Atomic (Firefox plugin) -
             https://addons.mozilla.org/en-US/firefox/addon/3188
             APP Test Client -
             http://bitworking.org/projects/apptestclient/




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
For more information...
             http://tools.ietf.org/html/rfc4287
             http://tools.ietf.org/html/rfc5023
             http://atomenabled.org/


             My blog: http://benramsey.com/




Distribution and Publication With Atom Web Services
Ben Ramsey ■ DC PHP Conference ■ 3 June 2008

More Related Content

Viewers also liked

NY Women in Communications Digital Salon 102309
NY Women in Communications Digital Salon 102309NY Women in Communications Digital Salon 102309
NY Women in Communications Digital Salon 102309
Sarah Hofstetter
 

Viewers also liked (14)

Servant Publications Catalog Cover Design
Servant Publications Catalog Cover DesignServant Publications Catalog Cover Design
Servant Publications Catalog Cover Design
 
Publication Design
Publication DesignPublication Design
Publication Design
 
helloMuller 2015 Comics and Publication design portfolio
helloMuller 2015 Comics and Publication design portfoliohelloMuller 2015 Comics and Publication design portfolio
helloMuller 2015 Comics and Publication design portfolio
 
Social Media Strategy Presentation October 20, 2014
Social Media Strategy Presentation October 20, 2014Social Media Strategy Presentation October 20, 2014
Social Media Strategy Presentation October 20, 2014
 
Designing Outside 8.5x11: Developing Effective Publications and Advertising f...
Designing Outside 8.5x11: Developing Effective Publications and Advertising f...Designing Outside 8.5x11: Developing Effective Publications and Advertising f...
Designing Outside 8.5x11: Developing Effective Publications and Advertising f...
 
The Secret Sauce For A Successful Health Club Marketing Strategy In 2014
The Secret Sauce For A Successful Health Club Marketing Strategy In 2014The Secret Sauce For A Successful Health Club Marketing Strategy In 2014
The Secret Sauce For A Successful Health Club Marketing Strategy In 2014
 
NY Women in Communications Digital Salon 102309
NY Women in Communications Digital Salon 102309NY Women in Communications Digital Salon 102309
NY Women in Communications Digital Salon 102309
 
Social Media Scheduling Workshop
Social Media Scheduling WorkshopSocial Media Scheduling Workshop
Social Media Scheduling Workshop
 
Features in Graphic and Publication Design
Features in Graphic and Publication DesignFeatures in Graphic and Publication Design
Features in Graphic and Publication Design
 
Publication Design Chapter 08
Publication Design Chapter 08Publication Design Chapter 08
Publication Design Chapter 08
 
Content Strategy Summit 2014: Polishing Your Content Publishing Process
Content Strategy Summit 2014: Polishing Your Content Publishing ProcessContent Strategy Summit 2014: Polishing Your Content Publishing Process
Content Strategy Summit 2014: Polishing Your Content Publishing Process
 
Bands & Brands: A Guide to Experiential Activations at Music Festivals
Bands & Brands: A Guide to Experiential Activations at Music FestivalsBands & Brands: A Guide to Experiential Activations at Music Festivals
Bands & Brands: A Guide to Experiential Activations at Music Festivals
 
Design Basics for DIY Print and Digital Publications
Design Basics for DIY Print and Digital Publications Design Basics for DIY Print and Digital Publications
Design Basics for DIY Print and Digital Publications
 
Graphic design 01
Graphic design 01Graphic design 01
Graphic design 01
 

Similar to Distribution and Publication With Atom Web Services

Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web Architecture
Chamnap Chhorn
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in Web
Jussi Pohjolainen
 
RSS and Atom in the Social Web
RSS and Atom in the Social WebRSS and Atom in the Social Web
RSS and Atom in the Social Web
hchen1
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
webhostingguy
 
Developing for Astoria: ADO.NET Data Services
Developing for Astoria: ADO.NET Data ServicesDeveloping for Astoria: ADO.NET Data Services
Developing for Astoria: ADO.NET Data Services
Harish Ranganathan
 
Web Services 2009
Web Services 2009Web Services 2009
Web Services 2009
Cathie101
 
Web Services 2009
Web Services 2009Web Services 2009
Web Services 2009
Cathie101
 

Similar to Distribution and Publication With Atom Web Services (20)

Grokking the REST Architectural Style
Grokking the REST Architectural StyleGrokking the REST Architectural Style
Grokking the REST Architectural Style
 
You Look Like You Could Use Some REST!
You Look Like You Could Use Some REST!You Look Like You Could Use Some REST!
You Look Like You Could Use Some REST!
 
Introduction to AtomPub Web Services
Introduction to AtomPub Web ServicesIntroduction to AtomPub Web Services
Introduction to AtomPub Web Services
 
Grokking REST (ZendCon 2010)
Grokking REST (ZendCon 2010)Grokking REST (ZendCon 2010)
Grokking REST (ZendCon 2010)
 
Web Topics
Web TopicsWeb Topics
Web Topics
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural Style
 
Introduction to Web Architecture
Introduction to Web ArchitectureIntroduction to Web Architecture
Introduction to Web Architecture
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in Web
 
RSS and Atom in the Social Web
RSS and Atom in the Social WebRSS and Atom in the Social Web
RSS and Atom in the Social Web
 
web services8 (1).pdf for computer science
web services8 (1).pdf for computer scienceweb services8 (1).pdf for computer science
web services8 (1).pdf for computer science
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
 
A Framework for Self-descriptive RESTful Services
A Framework for Self-descriptive RESTful ServicesA Framework for Self-descriptive RESTful Services
A Framework for Self-descriptive RESTful Services
 
HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.
 
21 Www Web Services
21 Www Web Services21 Www Web Services
21 Www Web Services
 
Web Architectures - Lecture 02 - Web Information Systems (4011474FNR)
Web Architectures - Lecture 02 - Web Information Systems (4011474FNR)Web Architectures - Lecture 02 - Web Information Systems (4011474FNR)
Web Architectures - Lecture 02 - Web Information Systems (4011474FNR)
 
Developing for Astoria: ADO.NET Data Services
Developing for Astoria: ADO.NET Data ServicesDeveloping for Astoria: ADO.NET Data Services
Developing for Astoria: ADO.NET Data Services
 
Web Services 2009
Web Services 2009Web Services 2009
Web Services 2009
 
Web Services 2009
Web Services 2009Web Services 2009
Web Services 2009
 
Building Restful Applications Using Php
Building Restful Applications Using PhpBuilding Restful Applications Using Php
Building Restful Applications Using Php
 
Lecture no 2 resource sharing
Lecture no 2 resource sharingLecture no 2 resource sharing
Lecture no 2 resource sharing
 

More from Ben Ramsey

Api Versioning
Api VersioningApi Versioning
Api Versioning
Ben Ramsey
 

More from Ben Ramsey (9)

Api Versioning
Api VersioningApi Versioning
Api Versioning
 
Desktop Apps with PHP and Titanium (ZendCon 2010)
Desktop Apps with PHP and Titanium (ZendCon 2010)Desktop Apps with PHP and Titanium (ZendCon 2010)
Desktop Apps with PHP and Titanium (ZendCon 2010)
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Desktop Apps with PHP and Titanium
Desktop Apps with PHP and TitaniumDesktop Apps with PHP and Titanium
Desktop Apps with PHP and Titanium
 
Give Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheGive Your Site a Boost with Memcache
Give Your Site a Boost with Memcache
 
Hidden Gems in HTTP
Hidden Gems in HTTPHidden Gems in HTTP
Hidden Gems in HTTP
 
Making the Most of HTTP In Your Apps
Making the Most of HTTP In Your AppsMaking the Most of HTTP In Your Apps
Making the Most of HTTP In Your Apps
 
Around the PHP Community
Around the PHP CommunityAround the PHP Community
Around the PHP Community
 
Distribution and Publication With Atom Web Services
Distribution and Publication With Atom Web ServicesDistribution and Publication With Atom Web Services
Distribution and Publication With Atom Web Services
 

Recently uploaded

unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
lizamodels9
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
lizamodels9
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
amitlee9823
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
Renandantas16
 

Recently uploaded (20)

RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors Data
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxB.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...Ensure the security of your HCL environment by applying the Zero Trust princi...
Ensure the security of your HCL environment by applying the Zero Trust princi...
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
 
John Halpern sued for sexual assault.pdf
John Halpern sued for sexual assault.pdfJohn Halpern sued for sexual assault.pdf
John Halpern sued for sexual assault.pdf
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptx
 

Distribution and Publication With Atom Web Services

  • 1. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 2. Software Architect at Schematic Atlanta PHP Leader Co-author of Zend PHP 5 Certification Study Guide Chatter on #phpc Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 3. “The name Atom applies to a pair of related standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol (short AtomPub or APP) is a simple HTTP-based protocol for creating and updating web resources.” — Wikipedia Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 4. Atom is both a format and a protocol. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 5. The Atom format An XML-based web content and metadata syndication format Defined by RFC 4287 Developed as an open alternative to the “frozen” RSS 2.0 format XML namespace: http://www.w3.org/2005/Atom Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 6. The Atom Publishing Protocol An application-level protocol for publishing and editing web resources using HTTP and XML Defined by RFC 5023 Also called “AtomPub” or “APP” XML namespace: http://www.w3.org/2007/app Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 7. A common format Widespread adoption means increased interoperability between disparate systems Applications now have a common language and publishing protocol, leveraging HTTP as a vehicle Supported by a diverse and wide- reaching community through libraries for consuming and creating Atom services Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 8. Understanding Atom Atom is a RESTful protocol Atom’s focus is on resources in the system To understand Atom, you must first understand REST and the Resource- Oriented Architecture Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 9. “REST strictly refers to a collection of network architecture principles which outline how resources are defined and addressed.” — Wikipedia Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 10. What is REST? Representational State Transfer Not an architecture or a standard for developing web services Not a particular format or pattern It is a set of design criteria Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 11. Resource-Oriented Architecture Resources Their names (addresses) Their representations The links between them Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 12. “A resource can be anything that has identity. Familiar examples include an electronic document, an image, a service (e.g., ‘today’s weather report for Los Angeles’), and a collection of other resources. Not all resources are network ‘retrievable’; e.g., human beings, corporations, and bound books in a library can also be considered resources.” — RFC 2396 Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 13. ROA basics Each resource knows how to do three simple things: 1. Represent itself to the client 2. Transition from one state to the next 3. Destroy itself Additionally, the ROA provides a means to create a resource Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 14. ROA properties Resources are addressable Resources have no state Resources are connected Resources share the same interface Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 15. This is REST in a nutshell. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 16. Atom is resource-oriented Think of an Atom web service as a catalog of resources that you want to expose Each resource has a unique identifier The resources are well-connected Atom sits on top of HTTP Requests have no state Share the same interface Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 17. Atom terminology Entry Feed Collection Category Document Service Document Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 18. Entry Represents an individual piece of content (post, article, page, image, video, etc.) Entries can be related to other entries or feeds. This resource represents a specific resource (i.e. http://example.org/posts/ 1234). Content type: application/atom+xml;type=entry Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 19. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 20. Feed Represents a collection of Atom entries Feeds can be related to other feeds or entries This resource represents a specific collection of resources (i.e. http:// example.org/posts) Atom Collections are Feeds Content type: application/atom+xml;type=feed Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 21. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 22. Category Categories provide metadata to describe an Atom entry. Atom itself doesn’t define usage of categories. Category Documents describe the categories that are allowed in Collections. Content type: application/atomcat+xml Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 23. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 24. Service A service discovery document that describes the locations and capabilities of Collections Usually the entry point of the Atom web service Content type: application/atomsvc+xml Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 25. Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 26. Atom provides Retrieval of resources Creation of new resources Modification to existing resources Removal (deletion) of resources from public view Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 27. Creating resources Client “discovers” the resource through which the Atom service accepts POST requests to create resources (defined by app:collection) Client sends resource in POST request: POST /archives HTTP/1.1 Client receives a 201 Created response in the event of a success Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 28. Modifying resources Client requests a representation of the resource: GET /archives/1234 HTTP/1.1 Client modifies the resource and tells the service to update it: PUT /archives/1234 HTTP/1.1 Service responds with a 200 OK status to indicate success Client uses “edit” relation for this logic Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 29. Removing resources Client sends a DELETE request to the sevice: DELETE /archives/1234 HTTP/1.1 Service responds with a 204 No Content status code to indicate success Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 30. Authentication Atom does not provide or recommend an auth mechanism Early favorite of the Atom community was WSSE Consider the use of OAuth Send authentication info through HTTP headers on each request requiring authenticated access Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 31. Encryption Atom does not provide for encryption Use SSL for all sensitive communication Atom Entry and Feed Documents can contain XML Digital Signatures Can be encrypted using XML Encryption Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 32. Extending Atom Atom is XML; as such, it may be extended using other vocabularies (namespaces) Use other namespaces to convey other information e.g. OpenSearch e.g. Dublin Core Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 33. Parsing Atom DOM, XMLReader, XMLWriter, SimpleXML Zend_Feed, PEAR::XML_Feed_Parser, phpatomlib Apache Abdera Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 34. Out-of-box Atom clients Fude - http://www.witha.jp/eXeries/software/ Atomic (Firefox plugin) - https://addons.mozilla.org/en-US/firefox/addon/3188 APP Test Client - http://bitworking.org/projects/apptestclient/ Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008
  • 35. For more information... http://tools.ietf.org/html/rfc4287 http://tools.ietf.org/html/rfc5023 http://atomenabled.org/ My blog: http://benramsey.com/ Distribution and Publication With Atom Web Services Ben Ramsey ■ DC PHP Conference ■ 3 June 2008