Cleaning up the Internet Using AJAX, SOAP and Comet CS526 Mike Gerschefske Justin Gray James Yoo 02 May 2006 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 1 How Web Applications Work User Requests Web Page either by clicking a button or entering a URL The entire page is changed and reloaded with the server response HTTP GET http://www.google.com/ Or HTTP POST […] <HTML> <TITLE>Google</TITLE> <BODY> […] </BODY> Documents are forced </HTML> to be ‘heavy’, 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet displaying new information requires a new page request 2 How Web Applications Work Title User interaction (e.g. button click) causes a complete page reload Title UI Table UI Table UI Table UI Table Problems • This causes a complete page reload to occur on the browser • Browser is forced to reload entire document tree • Browser is forced to request all SRC tags (caching can help with this) • Server has to send ENTIRE document to client -- often consuming bandwidth • With large documents, multiple packets and latency can cause longer browser load times 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 3 IFrame – Moving Forward Title UI Table UI Table User interaction (e.g. button click) causes a smaller reload of certain sections of the web page UI Table Right Direction Provides a way to not pull entire page Wrong Implementation 5/3/2006 Send meta-data and document formatting with every page load Need a way to send just data to reduce bandwidth and decrease response time <HTML> <HTML> <TITLE>Google</TITLE> [Document Subset] <BODY> </HTML> […] <IFRAME ID=Dynamic/> […] <script> onButtonClick = { IFRAME.Dynamic.SRC = mynewpage.html } </script> </BODY> </HTML> Mike/Justin/JYoo AJAX/SOAP/Comet 4 XMLHttp – A better way Title UI Table UI Table User interaction (e.g. button click) causes a document request Document The Browser Wars • Microsoft created XMLHttp (Active X) browser plugin to allow dynamic HTTP GET/POST • Mozilla realized this was good and created XMLHttpRequest • Good idea, but nothing is standardized • Name is deceiving, can be XML but is really document exchange What does this really provide us? • A simple way to request DATA 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 5 So what is AJAX? Asynchronous JavaScript And XML This is a pattern, not a product This is a browser web based design pattern The use of XMLHttp/XmlHttpRequest to request XML based documents and use JavaScript to render them on the browser If its not Asynchronous, JavaScript or XML it’s not AJAX it’s something else – not necessarily a bad thing Why is this better? 5/3/2006 Enriches user experience by making web application feel more responsive Helps minimize traffic – server only sends data in XML apposed to HTML Minimized traffic helps reduce overall browser loading Mike/Justin/JYoo AJAX/SOAP/Comet 6 The Missing Link How the browser fits a SOA One implementation is SOAP based web services SOAP encapsulates XML in a standardized XML format The browser is able to consume those web services example: Can use web services to order books, check stocks and weather from multiple companies all on one web page Problems 5/3/2006 SOAP consumption is not built into the browser Messages have to be manually built and parsed Microsoft tried to build this functionality into a Javascript file, but didn’t work out Ultimately needs to be put in the browser Lack of standardization between browsers Mike/Justin/JYoo AJAX/SOAP/Comet 7 The next problem Browsers request data – servers send it With a request/response architecture, the client isn’t always aware if it should be asking for data i.e. a user is watching stocks request/response user has to actively ‘refresh’ a document exchange to see if the stock has changed – very wasteful as the user may over request, or under request and not be updated in time some implentations to address this involved JavaScript timers to pull on intervals Solution 5/3/2006 Another design pattern needed to allow more of a publish/subscribe model apposed to a request/response one Mike/Justin/JYoo AJAX/SOAP/Comet 8 Comet About Comet Comet, again, is just a design pattern Comet takes the TCP stream being sent to the browser and keeps it open With the stream open, the server ‘flushes’ (or pushes) the data to the client when ever the server deems necessary XMLHttp/Request is able to process this flushed data and maintain the open connection Makes the browser a serious contender for developing any new application Problems 5/3/2006 The TCP keep-alive is not exactly supported in web servers Lots of hacks exist to do it, Apache soon to support Not all browsers have a call-back to support this, so may wind up with timer client side, checking if new information arrived Mike/Justin/JYoo AJAX/SOAP/Comet 9 SOAP, AJAX and Comet Is it Cleaner? Based of the names, one would think so… Lack of standardized implementations isn’t Asynchronous good, pub/sub good, move towards SOA model good, we’re on the right track When to use it… 5/3/2006 Not all applications should be web based (local) Processor intensive, graphic intensive, etc. If users require only small sub sets of data, yet have to request large HTML documents to get it, AJAX If a pub/sub architecture is needed (meebo) Comet Mike/Justin/JYoo AJAX/SOAP/Comet 10 Looking Forward AJAX forces XML to the client which: Can provide last minute-outer edge firewalling Makes ‘services’ and web page functionality more modular Can decrease bandwidth consumption Comet provides server side call backs Something WSE (Web Service Eventing) tried creating Eliminates wasteful request/response model AJAX + Comet = ??? 5/3/2006 Next generation web applications Online equiv to Microsoft Word Microsoft Office Online Ruby on Rails Push for new companies offering “services” Backup services Have Browser? Will work! Mike/Justin/JYoo AJAX/SOAP/Comet 11 Demo Live AJAX/SOAP Demo 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 12 Questions Questions and Comments are Welcome 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 13 What is AJAX Asynchronous Javascript And XML Used in creating web application 5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 14