copyright © 2005, christian gross 1 [email protected] real world web services (was applied web...

38
Copyright © 2005, Christian Gross Copyright © 2005, Christian Gross www.devspace.com www.devspace.com 1 [email protected] Real World Web Services Real World Web Services (was Applied Web Services) (was Applied Web Services) Christian Gross Christian Gross

Upload: adrian-ridgeway

Post on 31-Mar-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 1

[email protected]

Real World Web ServicesReal World Web Services(was Applied Web Services)(was Applied Web Services)

Christian GrossChristian Gross

Page 2: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 2

Introduction: Christian GrossIntroduction: Christian Gross Trainer, Consultant, MentorTrainer, Consultant, Mentor

Open / Shared Source / Binary technologiesOpen / Shared Source / Binary technologiesTechnologies (Web Services, Apache / XML, Java, C+Technologies (Web Services, Apache / XML, Java, C++, .NET)+, .NET)

WebsiteWebsitehttp://www.devspace.comhttp://www.devspace.com

Author: Author: Applied Software Engineering Using Apache Jakarta Applied Software Engineering Using Apache Jakarta CommonsCommons

““Open Source for the Windows Administrator”Open Source for the Windows Administrator”Upcoming “(Re)Learning OOP using .NET Patterns”Upcoming “(Re)Learning OOP using .NET Patterns”Upcoming “AJAX/REST Patterns and Best Practices”Upcoming “AJAX/REST Patterns and Best Practices”

Contact: [email protected]: [email protected]

Page 3: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 3

Why Rename Of Session?Why Rename Of Session? A funny thing happened…A funny thing happened…

I was late with this tutorial, and I thought I had everything I was late with this tutorial, and I thought I had everything ironed outironed outHA!HA!

Web Services has changed in its implementationWeb Services has changed in its implementationOriginally this tutorial was about using SOAP, and WSDL to Originally this tutorial was about using SOAP, and WSDL to interact with EBay, Google, and Amazoninteract with EBay, Google, and Amazon

But the big players EBay, Google, and Amazon have But the big players EBay, Google, and Amazon have changed tackchanged tackSome of it was already happening, but now the ball is rolling!Some of it was already happening, but now the ball is rolling!

Page 4: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 4

AgendaAgenda Outline of what Applied Web Services meansOutline of what Applied Web Services means Defining and illustrating what EBay, Google, and Defining and illustrating what EBay, Google, and

Amazon are doingAmazon are doing Code walk through during entire tutorialCode walk through during entire tutorial

[email protected]@devspace.com

Page 5: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 5

What Is Applied Web Services?What Is Applied Web Services? Applied Web Services is when two computers Applied Web Services is when two computers

communicate to exchange data that only the communicate to exchange data that only the computers are interested incomputers are interested inSounds like Theory of Web Services?Sounds like Theory of Web Services?

Difference is that the computers are made to work Difference is that the computers are made to work together in a heterogeneous environmenttogether in a heterogeneous environmentMany pieces of Web Services is based on unknown theory Many pieces of Web Services is based on unknown theory that may or may not work, as people are churning out the that may or may not work, as people are churning out the specificationsspecifications

Many internal web service applications are based on the same Many internal web service applications are based on the same platform platform Kind of ironic, no? Sort of like buying a fleet of Mercedes and getting Kind of ironic, no? Sort of like buying a fleet of Mercedes and getting them repaired at a Ford dealership. Misguided “just in case” thinkingthem repaired at a Ford dealership. Misguided “just in case” thinking

Even though interoperability is an issue, I wonder if it is not a Even though interoperability is an issue, I wonder if it is not a red herring argumentred herring argument

Page 6: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 6

Applied Web ServicesApplied Web Services The big dream of web services is to have a meta-data The big dream of web services is to have a meta-data

with appropriate specifications results in two computers with appropriate specifications results in two computers being able to transfer databeing able to transfer dataWrong idea, and will never happen!Wrong idea, and will never happen!

Better idea is to apply web services with specific Better idea is to apply web services with specific domain knowledge, with specific protocolsdomain knowledge, with specific protocols

Challenge (you will get one of my books your choice):Challenge (you will get one of my books your choice):Easy: What is a six-packEasy: What is a six-packMedium: What is a two by four?Medium: What is a two by four?Hard: What is a two-four?Hard: What is a two-four?

The problem is that people like to optimize and use The problem is that people like to optimize and use path of least resistance!path of least resistance!

Page 7: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 7

How Does It Affect You?How Does It Affect You? Most of the time your web services will be fully under Most of the time your web services will be fully under

your control your control Internal, sub-contractor, etcInternal, sub-contractor, etc

But for EBay, Google, and Amazon and other But for EBay, Google, and Amazon and other corporations you are not in controlcorporations you are not in controlThink of it as computing across the InternetThink of it as computing across the InternetYOU MUST BE CONNECTED ALWAYS! Not optional and YOU MUST BE CONNECTED ALWAYS! Not optional and introduces a new paradigmintroduces a new paradigm

Involves using Web Services as a consumer and not Involves using Web Services as a consumer and not service providerservice providerOf course you can offer your own Web Service (eg create a Of course you can offer your own Web Service (eg create a service that combines the best Entertainment System)service that combines the best Entertainment System)

Page 8: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 8

Different ProtocolsDifferent Protocols

Consumer Provider

ATOM

RSS

REST

SOAP

Page 9: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 9

RSSRSS Rich Site Summary (RSS) is a XML based web Rich Site Summary (RSS) is a XML based web

syndication mechanism used by newsites, and weblogssyndication mechanism used by newsites, and weblogs There are three versions 0.91 (Rich Site Summary), There are three versions 0.91 (Rich Site Summary),

(RDF Site Summary) 0.9/1.0, and 2.0 (Really Simple (RDF Site Summary) 0.9/1.0, and 2.0 (Really Simple Syndication)Syndication)

Allows a website to syndicate informationAllows a website to syndicate informationCan be used for personal diary, version updates, news itemsCan be used for personal diary, version updates, news items

Used to inform clients of things that are happeningUsed to inform clients of things that are happening Common software utility is called an aggregator that Common software utility is called an aggregator that

combines the streams and presents a new streamcombines the streams and presents a new stream RSS 2.0 allows extensions for additional functionalityRSS 2.0 allows extensions for additional functionality

Microsoft using it for ordered updatesMicrosoft using it for ordered updates

Page 10: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 10

RSS FormatRSS Format<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/"> <channel> <title>Blogger Jacks</title> <link>http://www.devspace.com</link> <description>News and Politics for the Software Industry</description> <dc:language>en-us</dc:language> <dc:creator>Christian Gross</dc:creator> <dc:date>2005-06-21T11:24:09+02:00</dc:date> <admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" /> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://www.devspace.com/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>[email protected]</managingEditor> <webMaster>[email protected]</webMaster> <item> <link>http://www.devspace.com/archives/2005/06/22T09_30_00.html</link> <title>Backward Thinking and Forward Thinking</title> <dc:date>2005-06-22T09:30:00+02:00</dc:date> <dc:creator>Christian Gross</dc:creator> <description><![CDATA[Some text]]></description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>http://www.devspace.com/ archives/2005/06/22T09_30_00.html</guid> </item> </channel></rss>

Channel Description

Item Description

Page 11: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 11

ATOMATOM Controversial because it is meant to replace RSS as it Controversial because it is meant to replace RSS as it

does the same thing as RSSdoes the same thing as RSS Meant to keep things simple when you need to retrieve, Meant to keep things simple when you need to retrieve,

update, and modify streamsupdate, and modify streamsRSS is only the viewing, not the updatingRSS is only the viewing, not the updating

ATOM is based on XML, and only one protocol HTTPATOM is based on XML, and only one protocol HTTPIncludes Syndication, Publishing, and Auto-DiscoveryIncludes Syndication, Publishing, and Auto-Discovery

Can be used to create “resources” and reference Can be used to create “resources” and reference informationinformation

Page 12: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 12

ATOM Feed ATOM Feed (http://en.wikipedia.org/wiki/Atom_(http://en.wikipedia.org/wiki/Atom_%28standard%29)%28standard%29)

Page 13: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 13

REST == Representational State TransferREST == Representational State Transfer REST is an architectural style, not a standardREST is an architectural style, not a standard

"Representational State Transfer is intended to evoke an "Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the network of web pages (a virtual state-machine), where the user progresses through an application by selecting links user progresses through an application by selecting links (state transitions), resulting in the next page (representing the (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and next state of the application) being transferred to the user and rendered for their use." - Dr. Roy T. Fieldingrendered for their use." - Dr. Roy T. Fielding

REST emphasizesREST emphasizesScalability of component interactionsScalability of component interactionsGenerality of interfacesGenerality of interfacesIndependent deployment of componentsIndependent deployment of componentsSupport for intermediariesSupport for intermediaries

Page 14: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 14

Key Principles of REST - Peter DraytonKey Principles of REST - Peter Drayton "Identification of resources""Identification of resources"

Resources are anything that can be namedResources are anything that can be namedNaming authority assigns an identifier to a resourceNaming authority assigns an identifier to a resource

"Manipulation of resources through representations""Manipulation of resources through representations"Representations capture current/intended state of resourcesRepresentations capture current/intended state of resourcesRepresentations are transferred between componentsRepresentations are transferred between componentsRepresentations often contain links to related resourcesRepresentations often contain links to related resources

"Self-descriptive messages""Self-descriptive messages"Resource identifiers, representation data formats, control dataResource identifiers, representation data formats, control data

"Hypermedia as the engine of application state""Hypermedia as the engine of application state"Servers are stateless, messages are independentServers are stateless, messages are independentClients maintain state (representations) & traverse links Clients maintain state (representations) & traverse links

Induces scalability, generality, evolvability, extensiblityInduces scalability, generality, evolvability, extensiblity

Page 15: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 15

REST Process View - REST Process View - Roy T. FieldingRoy T. Fielding

$

$

$

$

$

$

$

$

Layered Client-ServerLayered Client-Server Uniform Interface (like Pipe and Filter)Uniform Interface (like Pipe and Filter) Stateless, Cacheable CommunicationStateless, Cacheable Communication Optional Code-on-DemandOptional Code-on-Demand

Page 16: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 16

SOAPSOAP Initially used for RPC (Remote Procedure Call)Initially used for RPC (Remote Procedure Call) Has undergone quite a few revisions in a very short Has undergone quite a few revisions in a very short

period of time (0.9, 1.0, 1.1, 1.2)period of time (0.9, 1.0, 1.1, 1.2) Part of the XML Protocol working groupPart of the XML Protocol working group Based on the concept of an envelope encapsulating a Based on the concept of an envelope encapsulating a

documentdocumentLike snail mail, envelope and letter withinLike snail mail, envelope and letter within

Page 17: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 17

SOAP TheorySOAP Theory Specification is 1.2 that is split into four documentsSpecification is 1.2 that is split into four documents

Part 0: Primer, which is easy to read and understandPart 0: Primer, which is easy to read and understandPart 1: Messaging Framework, which provides the basics of Part 1: Messaging Framework, which provides the basics of the SOAP message structure. Not so easy to read.the SOAP message structure. Not so easy to read.

Part 2: Adjuncts, defines a number of “extensions” to the Part 2: Adjuncts, defines a number of “extensions” to the SOAP protocol. When read must understand Part 1.SOAP protocol. When read must understand Part 1.

Specification Assertions and Test Collection, used to define Specification Assertions and Test Collection, used to define the test conditions to validate a client or server the test conditions to validate a client or server implementation. Generally only useful for authors of SOAP implementation. Generally only useful for authors of SOAP implementationsimplementations

For end user programming purposes Part 0 is the only For end user programming purposes Part 0 is the only specification that interesting enough to be readspecification that interesting enough to be read

Page 18: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 18

SOAP Theory 1.2: MessageSOAP Theory 1.2: Message Make an HTTP Request (SOAP in payload)Make an HTTP Request (SOAP in payload)

HTTP is an example of a SOAP BindingHTTP is an example of a SOAP Binding Binding and Message are now two separate aspects of the SOAP Binding and Message are now two separate aspects of the SOAP

specificationspecification

POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml Content-Length: nnnn SOAPMethodName: Some-Namespace-URI#GetLastTradePrice

<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1"> <SOAP:Body>

<m:GetLastTradePrice xmlns:m="Some-Namespace"> <symbol>DIS</symbol>

</m:GetLastTradePrice> </SOAP:Body>

</SOAP:Envelope>

Page 19: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 19

WSDL Theory: IntroductionWSDL Theory: Introduction Web Services Description Language (WSDL)Web Services Description Language (WSDL) A way of describing your web serviceA way of describing your web service

May or MAY NOT be SOAP basedMay or MAY NOT be SOAP based Extensions include SOAP or HTTPExtensions include SOAP or HTTP

Can be anything including a proprietary protocolCan be anything including a proprietary protocol

Messages

Operation

Interface

Service interface(Abstract definition)

Binding

Service

Endpoint

Service implementation(Concrete definition)

Page 20: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 20

WSDL The Good and The BadWSDL The Good and The Bad WSDL 1.1 != WSDL 2.0WSDL 1.1 != WSDL 2.0

Major changes and there is no compatibilityMajor changes and there is no compatibility

Rich Salz has a major beef Rich Salz has a major beef ((http://http://webserviceswebservices.xml.com/pub/a/.xml.com/pub/a/wsws/2004/11/17//2004/11/17/salzsalz.html.html))His point is both valid and overblownHis point is both valid and overblown

Moves back into the COM, IDL, CORBA way of specifying an Moves back into the COM, IDL, CORBA way of specifying an interfaceinterfaceDifference is that everything is expressed using XMLDifference is that everything is expressed using XML

The problem that WSDL has its requirement to “describe the The problem that WSDL has its requirement to “describe the world”world”Requires to be very loose and open ended thus making it hard to be 100% Requires to be very loose and open ended thus making it hard to be 100% specific.specific.

What about the future? WSDL needs to address the future and whatever it What about the future? WSDL needs to address the future and whatever it encompassesencompasses

Page 21: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 21

What Do You Need To Know?What Do You Need To Know? Good question, since there are too many choicesGood question, since there are too many choices You need to know that you should not lock yourself into You need to know that you should not lock yourself into

a single protocola single protocol Understand your Web Services platformUnderstand your Web Services platform

Amazon, Google, and EBay have extensive (mostly) help on Amazon, Google, and EBay have extensive (mostly) help on how to get going with the API’s.how to get going with the API’s.

Know that the Web Service is not yours! Know that the Web Service is not yours! This means you cannot simply resell, call, manipulate or do This means you cannot simply resell, call, manipulate or do what you wantwhat you want

There are rules of conduct defined by the Web Service There are rules of conduct defined by the Web Service providerproviderIf you don’t agree with them TOUGH BANANAS! If you don’t agree with them TOUGH BANANAS!

The data is not yours and you may not use it as yoursThe data is not yours and you may not use it as yoursIn other words no permanent caches or caches in generalIn other words no permanent caches or caches in general

Page 22: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 22

Three Major Web Service PlatformsThree Major Web Service Platforms Amazon: Buying of “things”Amazon: Buying of “things”

New Web Services to send messages and search websitesNew Web Services to send messages and search websites

EBay: Buying and selling of “things” in an auction EBay: Buying and selling of “things” in an auction scenarioscenarioComprehensive platform to do many thingsComprehensive platform to do many things

Google: Doing many “things”Google: Doing many “things” There are others, but they are beyond the scope of this There are others, but they are beyond the scope of this

talktalk

Page 23: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 23

What Can You Do?What Can You Do? Buying, selling, and searching of products using EBay Buying, selling, and searching of products using EBay

SDKSDK Buying of products using Amazon SDKBuying of products using Amazon SDK Searching of the Internet using Google and Amazon Searching of the Internet using Google and Amazon

SDKSDK Simple Queuing Services using Amazon SDKSimple Queuing Services using Amazon SDK Atom / Blogger API using Blogger SDK (Google Atom / Blogger API using Blogger SDK (Google

company)company) MAP API for downloading and searchingMAP API for downloading and searching

Page 24: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 24

EBay SDKEBay SDK Developer information is available at Developer information is available at

http://developer.ebay.com http://developer.ebay.com Two main developer issuesTwo main developer issues

Application creationApplication creationCertificationCertification

You can easily develop an application in different languages and You can easily develop an application in different languages and environmentsenvironmentsSupported SOAP, Raw XML, and moving towards REST (60 API’s approx)Supported SOAP, Raw XML, and moving towards REST (60 API’s approx)Multiple languages, Java, .NET, PHP, Perl, Python, etcMultiple languages, Java, .NET, PHP, Perl, Python, etc

Data is being moved to UTF-8 for simpler international Data is being moved to UTF-8 for simpler international consumptionconsumption

Need a web service toolkit that supports https (SSL)Need a web service toolkit that supports https (SSL) If keys are lost there are issues with respect to hackers doing If keys are lost there are issues with respect to hackers doing

things on you behalfthings on you behalf

Page 25: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 25

EBay SDK (cont.)EBay SDK (cont.) All initial development is carried out in a SandboxAll initial development is carried out in a Sandbox

Is a mirror of the EBay America websiteIs a mirror of the EBay America websiteThe is American only meaning anybody can use it, but the The is American only meaning anybody can use it, but the data is presented using American notationsdata is presented using American notations

Can use fake data, and processing will be real, but is not Can use fake data, and processing will be real, but is not actually carried outactually carried out

There are two sets of keys sandbox and production There are two sets of keys sandbox and production keyskeys

Production keys are only given out when your Production keys are only given out when your application is certifiedapplication is certified

Are constantly monitored for which API’s are used and Are constantly monitored for which API’s are used and whenwhen

Page 26: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 26

EBay CertificationEBay Certification All applications must be certified before they can be All applications must be certified before they can be

used in productionused in productionProduction keys are given when application is certifiedProduction keys are given when application is certified

Certification requires filling out a formula and Certification requires filling out a formula and answering some questionsanswering some questionsGenerally a 5-7 business day processGenerally a 5-7 business day process

Certification means:Certification means:Having used EBay in the sandbox (active monitoring)Having used EBay in the sandbox (active monitoring)Specifying and having to update which API’s can be usedSpecifying and having to update which API’s can be usedUsed by EBay to assess future hardware requirementsUsed by EBay to assess future hardware requirementsImplementing the EBay guidelines, eg not storing data locally Implementing the EBay guidelines, eg not storing data locally or indicating where the data came fromor indicating where the data came from

Not yet implemented “charge on behalf”Not yet implemented “charge on behalf”

Page 27: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 27

Amazon SDKAmazon SDK Developer reference is found at:Developer reference is found at:

Surf to Surf to http://www.http://www.amazonamazon.com.comClick on “See More Stores” linkClick on “See More Stores” linkClick on “Web Services” linkClick on “Web Services” link

A developer key is requiredA developer key is required Supported is both REST and SOAPSupported is both REST and SOAP Language and platform support is not an issue Language and platform support is not an issue

because all API’s are supported regardless of because all API’s are supported regardless of technologytechnologyPlatform or language must be able to understand HTTP, and Platform or language must be able to understand HTTP, and XMLXML

Free platform, no certification, but limits on usageFree platform, no certification, but limits on usage Can get paid using affiliate serviceCan get paid using affiliate service

Page 28: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 28

Amazon SDK (cont.)Amazon SDK (cont.) Amazon has three main servicesAmazon has three main services

Amazon store: Used to browse and search for productsAmazon store: Used to browse and search for productsAmazon Alexa Service: A search engine used to search for Amazon Alexa Service: A search engine used to search for informationinformation

Amazon Simple Queuing Services: Used to send queued Amazon Simple Queuing Services: Used to send queued packets, essentially an “email” service without the emailpackets, essentially an “email” service without the email

Amazon was one of the first to implement REST, and Amazon was one of the first to implement REST, and offers both (SOAP, and REST)offers both (SOAP, and REST)Geared towards using XSLTGeared towards using XSLT

Amazon provides additional tools such as:Amazon provides additional tools such as:XML Scratch Pad: A tool used to create Amazon requests in XML Scratch Pad: A tool used to create Amazon requests in XML without having to code the XML yourselfXML without having to code the XML yourself

XPath XSLT Tool: A tool based on the Amazon Web Services XPath XSLT Tool: A tool based on the Amazon Web Services used to generate XPath and XSLT documentsused to generate XPath and XSLT documentsXSLT is often used in conjunction with REST and is very popularXSLT is often used in conjunction with REST and is very popular

Page 29: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 29

Amazon StoreAmazon Store Searches the Amazon storeSearches the Amazon store

Can specify a local store (US, DE, FR, CA, JP, UK)Can specify a local store (US, DE, FR, CA, JP, UK)Can search Amazon zShopsCan search Amazon zShops

Can perform minimal, or extensive searchesCan perform minimal, or extensive searchesMinimal as an example retrieves product information and costMinimal as an example retrieves product information and costExtensive searches include comments, image references, etcExtensive searches include comments, image references, etc

Can implement a remote shopping cartCan implement a remote shopping cartCheck out must be performed by Amazon.comCheck out must be performed by Amazon.com

Can search wishlists of other peopleCan search wishlists of other people Ability to perform multiple actions in one requestAbility to perform multiple actions in one request

Page 30: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 30

Amazon Alexa SearchAmazon Alexa Search Can execute a search using the Can execute a search using the http://www.alexa.comhttp://www.alexa.com

search enginesearch engine There are multiple ways to search:There are multiple ways to search:

Regular search like a Google searchRegular search like a Google searchCategory search: Alexa has a set of categories that can be Category search: Alexa has a set of categories that can be used to narrow down the searchused to narrow down the search

Web map, and URL info makes it possible to retrieve the Web map, and URL info makes it possible to retrieve the information regarding a specific URL, such as reference count, information regarding a specific URL, such as reference count, and popularityand popularity

Page 31: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 31

Amazon Simple QueuingAmazon Simple Queuing An odd service, but makes it possible to queue An odd service, but makes it possible to queue

information in a data store on the Internetinformation in a data store on the InternetNo idea what the intent isNo idea what the intent is

Used for distributed applications that would like to Used for distributed applications that would like to share informationshare information

Has a limitation in that queue elements can only be Has a limitation in that queue elements can only be 4KB4KB

Page 32: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 32

Google API’sGoogle API’s Google has gone from a single API for its search Google has gone from a single API for its search

engine to a repository or things that you can doengine to a repository or things that you can do Developer information found at the URLDeveloper information found at the URL

http://code.http://code.googlegoogle.com.com All of this is still in beta form and requires registrationAll of this is still in beta form and requires registration You cannot make commercial usage of any API’s You cannot make commercial usage of any API’s

unless you get written permission from Googleunless you get written permission from Google

Page 33: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 33

Google SearchGoogle Search A developer token is requiredA developer token is required Can only be used for personal non-commercial Can only be used for personal non-commercial

purposespurposesFor anything else you must write to Google and askFor anything else you must write to Google and ask

Only a SOAP interface and can be used by anything Only a SOAP interface and can be used by anything that can process a WSDL filethat can process a WSDL file

Is considered a beta service at the time for trial Is considered a beta service at the time for trial purposespurposes

Is used to search the Internet, perform spelling, etcIs used to search the Internet, perform spelling, etc

Page 34: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 34

Google AdWordsGoogle AdWords Used to manage AdWord accountsUsed to manage AdWord accounts Can be used to manage keywords dependent on your Can be used to manage keywords dependent on your

applications, or databasesapplications, or databases Only a SOAP interface, but a WSDL file is providedOnly a SOAP interface, but a WSDL file is provided

Page 35: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 35

ATOM FeedsATOM Feeds Blogger is a company purchased by Google and used Blogger is a company purchased by Google and used

to manage blogsto manage blogsNeed to use the ATOM API to add, delete and manipulate Need to use the ATOM API to add, delete and manipulate entries in a blogentries in a blog

GMail is a new web based mailing system like Yahoo GMail is a new web based mailing system like Yahoo mailmailIs used to read new emails only, and not manipulate themIs used to read new emails only, and not manipulate them

Google Groups does not have an ATOM feed, but you Google Groups does not have an ATOM feed, but you can use RSScan use RSS

All of these information feeds can be used by you for All of these information feeds can be used by you for aggregation purposesaggregation purposes

Page 36: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 36

Maps and Google EarthMaps and Google Earth Maps, and Google Earth are two new products that Maps, and Google Earth are two new products that

make it possible to research our earthmake it possible to research our earth Google Earth is a locally installed application, but it can Google Earth is a locally installed application, but it can

be enhanced by using KML (Keyhole Markup be enhanced by using KML (Keyhole Markup Language)Language)KML is used to define points, lines, and images in the Google KML is used to define points, lines, and images in the Google Earth clientEarth client

Maps is a web based application that can be enhanced Maps is a web based application that can be enhanced by interleaving user information with maps informationby interleaving user information with maps informationIs intended to be used client side in a JavaScript, but is not Is intended to be used client side in a JavaScript, but is not necessarynecessary

Page 37: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 37

In ConclusionIn Conclusion The future is the NET and major companies are The future is the NET and major companies are

making major investmentsmaking major investments Instead of a single protocol there are multiple protocols Instead of a single protocol there are multiple protocols

like ATOM, RSS, SOAP, WSDL, and REST like ATOM, RSS, SOAP, WSDL, and REST The data and service is not yours, you are a client and The data and service is not yours, you are a client and

subject to the terms of the web service providersubject to the terms of the web service provider It is a good way to provide pre-packaged functionalityIt is a good way to provide pre-packaged functionality There are other publicly available web services at the There are other publicly available web services at the

URL URL http://www.http://www.xmethodsxmethods.net.net

Page 38: Copyright © 2005, Christian Gross 1 Mailing@devspace.com Real World Web Services (was Applied Web Services) Christian Gross

Copyright © 2005, Christian GrossCopyright © 2005, Christian Gross www.devspace.comwww.devspace.com 38