Web Services

Kenneth M. Anderson <kena@cs.colorado.edu>

Lecture 06: Web Technologies

Copyright Notice

Some material in this lecture is adapted from the teaching materials of the book “Web Services: Concepts, Architectures and Applications” and is thus Copyright © 2003 Gustavo Alonso, ETH Zürich and/or Copyright © 2004 Springer-Verlag Berlin Heidelberg.

All other material is Copyright © 2006 Kenneth M. Anderson

Web Technologies

The need to integrate, however, is not limited to the systems within a single company. The same advantages that can be derived from automating a company's business processes can be obtained from automating business processes encompassing several companies… This chapter serves as a transition between the chapters that precede, which focus on [single company EAI], and the chapters that follow, which describe Web services for [multiple company EAI]. The purpose of this chapter is to introduce the basic Web technologies that are used to implement the “Web” portion of Web services.
    — Introduction to Chapter 4 of our Textbook

Core Web Technologies

HTTP Methods

Basic Architectural Elements of the World Wide Web

Disadvantages of HTTP (and their Solutions)

Web-Based Remote Clients

Remote clients can access services via the Internet

Technologies for Achieving Remote Clients

Applets enable rich client-side functionality

CGI scripts allow programs to dynamically generate HTML content

Servlets are similar to CGI scripts but make more efficient use of a server's resources

Application Servers

Application Server Architecture

J2EE-based APIs for Application Servers

Application Server Support for the Application Layer

Support for application logic in J2EE-based application servers

Application Server Support for the Presentation Layer

Support for presentation layer in J2EE-based application servers

                <% for product in @products %>
                  <div class="catalogentry">
                      <img src="<%= product.image_url %>" />
                      <h3><%= h(product.title) %></h3>
                      <%= product.description %>
                      <span class="catalogprice"><%= fmt_dollars(product.price) %></span>
                      <%= link_to 'Add to Cart',
                                  {:action => 'add_to_cart', :id => product },
                                  :class => 'addtocart' %><br />
                  </div>
                  <div class="separator">&nbsp;</div>
                <% end %>
                <%= link_to "Show my cart", :action => "display_cart" %>
            
                <html>
                  <head>
                    <title>Pragprog Books Online Store</title>
                    <%= stylesheet_link_tag "scaffold", "depot", :media => "all" %>
                  </head>
                  <body>
                    <div id="banner">
                      <img src="/images/logo.png" />
                      <%= @page_title || "Pragmatic Bookshelf" %>
                    </div>
                    <div id="columns">
                      <div id="side">
                        Home<br />
                        Questions<br />
                        News<br />
                        Contact<br />
                      </div>
                      <div id="main">
                        <% if @flash[:notice] -%>
                          <div id="notice"><%= @flash[:notice] %></div>
                        <% end -%>
                        <%= @content_for_layout %>
                      </div>
                    </div>
                  </body>
                </html>
            
                <html>
                  <head>
                    <title>Pragprog Books Online Store</title>
                    <link href="/stylesheets/scaffold.css?1127302403" media="all" rel="Stylesheet" type="text/css" />
                <link href="/stylesheets/depot.css?1127302540" media="all" rel="Stylesheet" type="text/css" />
                  </head>
                  <body>
                    <div id="banner">
                      <img src="/images/logo.png" />

                      Pragmatic Bookshelf
                    </div>
                    <div id="columns">
                      <div id="side">
                        Home<br />
                        Questions<br />
                        News<br />
                        Contact<br />

                      </div>
                      <div id="main">

                  <div class="catalogentry">
                      <img src="http://www.cs.colorado.edu/users/kena/images/sk_auto_small.jpg" />
                      <h3>Pragmatic Project Automation</h3>
                      A rip-roaring, thigh-slapping read. I laughed, I cried, and then I laughed some more. A must-have book for anyone writing web applications.
                      <span class="catalogprice">$29.95</span>
                      <a href="/store/add_to_cart/1" class="addtocart">Add to Cart</a><br />

                  </div>
                  <div class="separator">&nbsp;</div>

                  <div class="catalogentry">
                      <img src="http://www.cs.colorado.edu/users/kena/images/ken.jpg" />
                      <h3>Ken's Book</h3>
                      This is a really cool book about software design.
                      <span class="catalogprice">$300.00</span>
                      <a href="/store/add_to_cart/3" class="addtocart">Add to Cart</a><br />

                  </div>
                  <div class="separator">&nbsp;</div>

                  <div class="catalogentry">
                      <img src="http://www.cs.colorado.edu/users/kena/images/rubyonrails.png" />
                      <h3>Ruby On Rails</h3>
                      A pretty good introduction to the Ruby on Rails framework.
                      <span class="catalogprice">$30.00</span>
                      <a href="/store/add_to_cart/2" class="addtocart">Add to Cart</a><br />

                  </div>
                  <div class="separator">&nbsp;</div>

                <a href="/store/display_cart">Show my cart</a>

                      </div>
                    </div>
                  </body>
                </html>
            

Web Technologies for Application Integration

Number of Ways Two 3-Tier Systems can be Integrated Across a WAN

A standard protocol makes middleware to middleware integration possible.

HTTP is used to tunnel messages between applications because port 80 is typically not blocked by firewalls

Coming up Next