Real World Web Services (was Applied Web Services) Christian Gross [email protected] Copyright © 2005, Christian Gross www.devspace.com.
Download ReportTranscript Real World Web Services (was Applied Web Services) Christian Gross [email protected] Copyright © 2005, Christian Gross www.devspace.com.
Real World Web Services (was Applied Web Services) Christian Gross [email protected] Copyright © 2005, Christian Gross www.devspace.com 1 Introduction: Christian Gross Trainer, Consultant, Mentor Open / Shared Source / Binary technologies Technologies (Web Services, Apache / XML, Java, C++, .NET) Website http://www.devspace.com Author: Applied Software Engineering Using Apache Jakarta Commons “Open Source for the Windows Administrator” Upcoming “(Re)Learning OOP using .NET Patterns” Upcoming “AJAX/REST Patterns and Best Practices” Contact: [email protected] Copyright © 2005, Christian Gross www.devspace.com 2 Why Rename Of Session? A funny thing happened… I was late with this tutorial, and I thought I had everything ironed out HA! Web Services has changed in its implementation Originally this tutorial was about using SOAP, and WSDL to interact with EBay, Google, and Amazon But the big players EBay, Google, and Amazon have changed tack Some of it was already happening, but now the ball is rolling! Copyright © 2005, Christian Gross www.devspace.com 3 Agenda Outline of what Applied Web Services means Defining and illustrating what EBay, Google, and Amazon are doing Code walk through during entire tutorial [email protected] Copyright © 2005, Christian Gross www.devspace.com 4 What Is Applied Web Services? Applied Web Services is when two computers communicate to exchange data that only the computers are interested in Sounds like Theory of Web Services? Difference is that the computers are made to work together in a heterogeneous environment Many pieces of Web Services is based on unknown theory that may or may not work, as people are churning out the specifications Many internal web service applications are based on the same platform Kind of ironic, no? Sort of like buying a fleet of Mercedes and getting them repaired at a Ford dealership. Misguided “just in case” thinking Even though interoperability is an issue, I wonder if it is not a red herring argument Copyright © 2005, Christian Gross www.devspace.com 5 Applied Web Services The big dream of web services is to have a meta-data with appropriate specifications results in two computers being able to transfer data Wrong idea, and will never happen! Better idea is to apply web services with specific domain knowledge, with specific protocols Challenge (you will get one of my books your choice): Easy: What is a six-pack Medium: What is a two by four? Hard: What is a two-four? The problem is that people like to optimize and use path of least resistance! Copyright © 2005, Christian Gross www.devspace.com 6 How Does It Affect You? Most of the time your web services will be fully under your control Internal, sub-contractor, etc But for EBay, Google, and Amazon and other corporations you are not in control Think of it as computing across the Internet YOU MUST BE CONNECTED ALWAYS! Not optional and introduces a new paradigm Involves using Web Services as a consumer and not service provider Of course you can offer your own Web Service (eg create a service that combines the best Entertainment System) Copyright © 2005, Christian Gross www.devspace.com 7 Different Protocols ATOM RSS Consumer REST Provider SOAP Copyright © 2005, Christian Gross www.devspace.com 8 RSS Rich Site Summary (RSS) is a XML based web syndication mechanism used by newsites, and weblogs There are three versions 0.91 (Rich Site Summary), (RDF Site Summary) 0.9/1.0, and 2.0 (Really Simple Syndication) Allows a website to syndicate information Can be used for personal diary, version updates, news items Used to inform clients of things that are happening Common software utility is called an aggregator that combines the streams and presents a new stream RSS 2.0 allows extensions for additional functionality Microsoft using it for ordered updates Copyright © 2005, Christian Gross www.devspace.com 9 RSS 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 Description <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> Item Description Copyright © 2005, Christian Gross </rss> www.devspace.com 10 ATOM Controversial because it is meant to replace RSS as it does the same thing as RSS Meant to keep things simple when you need to retrieve, update, and modify streams RSS is only the viewing, not the updating ATOM is based on XML, and only one protocol HTTP Includes Syndication, Publishing, and Auto-Discovery Can be used to create “resources” and reference information Copyright © 2005, Christian Gross www.devspace.com 11 ATOM Feed (http://en.wikipedia.org/wiki/Atom_%28standard%29) Copyright © 2005, Christian Gross www.devspace.com 12 REST == Representational State Transfer REST is an architectural style, not a standard "Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use." - Dr. Roy T. Fielding REST emphasizes Scalability of component interactions Generality of interfaces Independent deployment of components Support for intermediaries Copyright © 2005, Christian Gross www.devspace.com 13 Key Principles of REST - Peter Drayton "Identification of resources" Resources are anything that can be named Naming authority assigns an identifier to a resource "Manipulation of resources through representations" Representations capture current/intended state of resources Representations are transferred between components Representations often contain links to related resources "Self-descriptive messages" Resource identifiers, representation data formats, control data "Hypermedia as the engine of application state" Servers are stateless, messages are independent Clients maintain state (representations) & traverse links Induces scalability, generality, evolvability, extensiblity Copyright © 2005, Christian Gross www.devspace.com 14 REST Process View - Roy T. Fielding $ $ $ $ $ $ $ $ Layered Client-Server Uniform Interface (like Pipe and Filter) Stateless, Cacheable Communication Optional Code-on-Demand Copyright © 2005, Christian Gross www.devspace.com 15 SOAP Initially used for RPC (Remote Procedure Call) Has undergone quite a few revisions in a very short period of time (0.9, 1.0, 1.1, 1.2) Part of the XML Protocol working group Based on the concept of an envelope encapsulating a document Like snail mail, envelope and letter within Copyright © 2005, Christian Gross www.devspace.com 16 SOAP Theory Specification is 1.2 that is split into four documents Part 0: Primer, which is easy to read and understand Part 1: Messaging Framework, which provides the basics of the SOAP message structure. Not so easy to read. Part 2: Adjuncts, defines a number of “extensions” to the SOAP protocol. When read must understand Part 1. Specification Assertions and Test Collection, used to define the test conditions to validate a client or server implementation. Generally only useful for authors of SOAP implementations For end user programming purposes Part 0 is the only specification that interesting enough to be read Copyright © 2005, Christian Gross www.devspace.com 17 SOAP Theory 1.2: Message Make an HTTP Request (SOAP in payload) HTTP is an example of a SOAP Binding Binding and Message are now two separate aspects of the SOAP specification 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> Copyright © 2005, Christian Gross www.devspace.com 18 WSDL Theory: Introduction Web Services Description Language (WSDL) A way of describing your web service May or MAY NOT be SOAP based Extensions include SOAP or HTTP Can be anything including a proprietary protocol Messages Service interface (Abstract definition) Operation Interface Binding Service implementation (Concrete definition) Service Endpoint Copyright © 2005, Christian Gross www.devspace.com 19 WSDL The Good and The Bad WSDL 1.1 != WSDL 2.0 Major changes and there is no compatibility Rich Salz has a major beef (http://webservices.xml.com/pub/a/ws/2004/11/17/salz.html) His point is both valid and overblown Moves back into the COM, IDL, CORBA way of specifying an interface Difference is that everything is expressed using XML The problem that WSDL has its requirement to “describe the world” Requires to be very loose and open ended thus making it hard to be 100% specific. What about the future? WSDL needs to address the future and whatever it encompasses Copyright © 2005, Christian Gross www.devspace.com 20 What Do You Need To Know? Good question, since there are too many choices You need to know that you should not lock yourself into a single protocol Understand your Web Services platform Amazon, Google, and EBay have extensive (mostly) help on how to get going with the API’s. Know that the Web Service is not yours! This means you cannot simply resell, call, manipulate or do what you want There are rules of conduct defined by the Web Service provider If you don’t agree with them TOUGH BANANAS! The data is not yours and you may not use it as yours In other words no permanent caches or caches in general Copyright © 2005, Christian Gross www.devspace.com 21 Three Major Web Service Platforms Amazon: Buying of “things” New Web Services to send messages and search websites EBay: Buying and selling of “things” in an auction scenario Comprehensive platform to do many things Google: Doing many “things” There are others, but they are beyond the scope of this talk Copyright © 2005, Christian Gross www.devspace.com 22 What Can You Do? Buying, selling, and searching of products using EBay SDK Buying of products using Amazon SDK Searching of the Internet using Google and Amazon SDK Simple Queuing Services using Amazon SDK Atom / Blogger API using Blogger SDK (Google company) MAP API for downloading and searching Copyright © 2005, Christian Gross www.devspace.com 23 EBay SDK Developer information is available at http://developer.ebay.com Two main developer issues Application creation Certification You can easily develop an application in different languages and environments Supported SOAP, Raw XML, and moving towards REST (60 API’s approx) Multiple languages, Java, .NET, PHP, Perl, Python, etc Data is being moved to UTF-8 for simpler international consumption Need a web service toolkit that supports https (SSL) If keys are lost there are issues with respect to hackers doing things on you behalf Copyright © 2005, Christian Gross www.devspace.com 24 EBay SDK (cont.) All initial development is carried out in a Sandbox Is a mirror of the EBay America website The is American only meaning anybody can use it, but the data is presented using American notations Can use fake data, and processing will be real, but is not actually carried out There are two sets of keys sandbox and production keys Production keys are only given out when your application is certified Are constantly monitored for which API’s are used and when Copyright © 2005, Christian Gross www.devspace.com 25 EBay Certification All applications must be certified before they can be used in production Production keys are given when application is certified Certification requires filling out a formula and answering some questions Generally a 5-7 business day process Certification means: Having used EBay in the sandbox (active monitoring) Specifying and having to update which API’s can be used Used by EBay to assess future hardware requirements Implementing the EBay guidelines, eg not storing data locally or indicating where the data came from Not yet implemented “charge on behalf” Copyright © 2005, Christian Gross www.devspace.com 26 Amazon SDK Developer reference is found at: Surf to http://www.amazon.com Click on “See More Stores” link Click on “Web Services” link A developer key is required Supported is both REST and SOAP Language and platform support is not an issue because all API’s are supported regardless of technology Platform or language must be able to understand HTTP, and XML Free platform, no certification, but limits on usage Can get paid using affiliate service Copyright © 2005, Christian Gross www.devspace.com 27 Amazon SDK (cont.) Amazon has three main services Amazon store: Used to browse and search for products Amazon Alexa Service: A search engine used to search for information Amazon Simple Queuing Services: Used to send queued packets, essentially an “email” service without the email Amazon was one of the first to implement REST, and offers both (SOAP, and REST) Geared towards using XSLT Amazon provides additional tools such as: XML Scratch Pad: A tool used to create Amazon requests in XML without having to code the XML yourself XPath XSLT Tool: A tool based on the Amazon Web Services used to generate XPath and XSLT documents XSLT is often used in conjunction with REST and is very popular Copyright © 2005, Christian Gross www.devspace.com 28 Amazon Store Searches the Amazon store Can specify a local store (US, DE, FR, CA, JP, UK) Can search Amazon zShops Can perform minimal, or extensive searches Minimal as an example retrieves product information and cost Extensive searches include comments, image references, etc Can implement a remote shopping cart Check out must be performed by Amazon.com Can search wishlists of other people Ability to perform multiple actions in one request Copyright © 2005, Christian Gross www.devspace.com 29 Amazon Alexa Search Can execute a search using the http://www.alexa.com search engine There are multiple ways to search: Regular search like a Google search Category search: Alexa has a set of categories that can be used to narrow down the search Web map, and URL info makes it possible to retrieve the information regarding a specific URL, such as reference count, and popularity Copyright © 2005, Christian Gross www.devspace.com 30 Amazon Simple Queuing An odd service, but makes it possible to queue information in a data store on the Internet No idea what the intent is Used for distributed applications that would like to share information Has a limitation in that queue elements can only be 4KB Copyright © 2005, Christian Gross www.devspace.com 31 Google API’s Google has gone from a single API for its search engine to a repository or things that you can do Developer information found at the URL http://code.google.com All of this is still in beta form and requires registration You cannot make commercial usage of any API’s unless you get written permission from Google Copyright © 2005, Christian Gross www.devspace.com 32 Google Search A developer token is required Can only be used for personal non-commercial purposes For anything else you must write to Google and ask Only a SOAP interface and can be used by anything that can process a WSDL file Is considered a beta service at the time for trial purposes Is used to search the Internet, perform spelling, etc Copyright © 2005, Christian Gross www.devspace.com 33 Google AdWords Used to manage AdWord accounts Can be used to manage keywords dependent on your applications, or databases Only a SOAP interface, but a WSDL file is provided Copyright © 2005, Christian Gross www.devspace.com 34 ATOM Feeds Blogger is a company purchased by Google and used to manage blogs Need to use the ATOM API to add, delete and manipulate entries in a blog GMail is a new web based mailing system like Yahoo mail Is used to read new emails only, and not manipulate them Google Groups does not have an ATOM feed, but you can use RSS All of these information feeds can be used by you for aggregation purposes Copyright © 2005, Christian Gross www.devspace.com 35 Maps and Google Earth Maps, and Google Earth are two new products that make it possible to research our earth Google Earth is a locally installed application, but it can be enhanced by using KML (Keyhole Markup Language) KML is used to define points, lines, and images in the Google Earth client Maps is a web based application that can be enhanced by interleaving user information with maps information Is intended to be used client side in a JavaScript, but is not necessary Copyright © 2005, Christian Gross www.devspace.com 36 In Conclusion The future is the NET and major companies are making major investments Instead of a single protocol there are multiple protocols like ATOM, RSS, SOAP, WSDL, and REST The data and service is not yours, you are a client and subject to the terms of the web service provider It is a good way to provide pre-packaged functionality There are other publicly available web services at the URL http://www.xmethods.net Copyright © 2005, Christian Gross www.devspace.com 37 Copyright © 2005, Christian Gross www.devspace.com 38