Lecture 4 Middleware: Client-Server Computing

quicksandwalleyeInternet and Web Development

Oct 31, 2013 (3 years and 7 months ago)

80 views

Lecture 4

Middleware: Client
-
Server
Computing

Wireless and Mobile Systems Design

Middleware: Client
-
Server Computing



2


Lecture Objectives


Differentiate and exemplify client
-
server,

client
-
agent
-
server, and client
-
intercept
-
server
models of middleware


Understand functionality provided by middleware for
client, agent, and server software development


Understand how the client
-
server computational
model middleware is able to deal with heterogeneous
wireless devices and scalability


Characterize the design requirements of example
client
-
server applications and rationalize the choice
of middleware and design for application
development

Middleware: Client
-
Server Computing



3


Resources


H. Gunzer, “Introduction to Web Services,” March
2002, http://bdn.borland.com/article/images/28818/

webservices.pdf


Microsoft Developer Network, “Web Services
Basics,” http://msdn.microsoft.com/webservices/

understanding/webservicebasics/

Middleware: Client
-
Server Computing



4


Agenda


Client
-
server and middleware overview


Client
-
server computational models


Client
-
server


Client
-
agent
-
server


Client
-
intercept
-
server


Web services overview


Web services based on Extensible Markup Language
(XML) for mobile devices


Small Object Access Protocol (SOAP)


Web Service Description Language (WSDL)

Middleware: Client
-
Server Computing



5


Middleware (Review)


Middleware is a layer between the operating system
and applications that provides a set of services


Abstract interface to the application


Uniform view of operating systems, networks, and hardware
platforms

Operating System

and Networking Services

Middleware

Application Programs

API

Middleware: Client
-
Server Computing



6


Client
-
Server Computing

Client
-
Server vs. Peer
-
to
-
Peer

Server


Client initiates
communications


Client issues request
to a server


Server replies or
performs some service

Peer
-
to
-
Peer Computing


Any participant can
initiate communication


Any device can
generate a request


Any device may
provide a response

Middleware: Client
-
Server Computing



7


Client
-
Server Models for Middleware


Client
-
server


Client
-
agent
-
server


Client
-
intercept
-
server models


Middleware: Client
-
Server Computing



8


Client
-
Server Model (1)


Communication models


Message passing with queuing


Remote procedure call (RPC)


Client
-
server synchronization


Synchronous


Inadequate


Client is blocked if disconnected


Asynchronous


Client requests are queued locally and control is returned
immediately to the client


When the mobile is connected, the queue is drained in
the background and any queued messages or calls are
forwarded to the server

Middleware: Client
-
Server Computing



9


Mobile Host

Client
-
Server Model (2)


Optimization for mobile/wireless involves changes at
both the client and server


Example (worst
-
case)


Standard web browser accessing an HTTP server over a
wireless link

Application

Client

Application

Server

Fixed

Network

Wireless

Network

Middleware: Client
-
Server Computing



10


Client
-
Agent
-
Server Model (1)


Computation is split into two units


Client
-
agent


optimized for mobile environment


Agent
-
server

traditional (non
-
mobile) design


Dealing with disconnection


Clients submit requests to the agent and retrieve responses
from the agent upon reconnection


The agent can employ optimization and transformation
techniques to the data to be transmitted depending, based
on


Type of data


Type of devices


Application
-
specific requirements

Middleware: Client
-
Server Computing



11


Client
-
Agent
-
Server Model (2)


Optimization for mobile/wireless involves client and
agent


Single application server to support both fixed
network clients and mobile clients

Mobile Host

Application

Client

Application

Server

Fixed

Network

Wireless

Network

Agent

Middleware: Client
-
Server Computing



12


Client
-
Agent
-
Server Example


Wireless Application Protocol (WAP)


Mobile device runs the client


The gateway acts as the agent


Standard HTTP server can be used

Client

Web

Browser

Server

HTTP

Server

CGI,

etc.

Gateway

Encoders

Decoders

encoded

request

encoded

response

request

response

Protocol

Gateways

wireless

Middleware: Client
-
Server Computing



13


Client
-
Intercept
-
Server Model (1)


Inter
-
agent optimization protocols can be used
between the client
-
side agent and the server
-
side
agent


Minimize communication cost via…


Caching


Differencing


Header reduction


One
-
HTTP connection per session


Caching/prefetching at the client agent to allow
disconnected operations


For example, ADO .NET/SQL server CE

Middleware: Client
-
Server Computing



14


Client
-
Intercept
-
Server Model (2)


Example


IBM Web Express


Web Browser (client)


HTT倠


Ci敮t
-
獩d攠慧敮琠


TC倯I倠
捯nn散瑩on


卥S癥v 獩d攠慧敮琠


HTT倠


W敢 獥s癥v


Mobile Host

Application

Server

Fixed

Network

Wireless

Network

Agent

Client

Client

Side

Agent

Middleware: Client
-
Server Computing



15


Web Services


Web Services are encapsulated, loosely coupled
contracted functions offered via standard protocols
where:


Encapsulated


implementation of the function is never seen
from the outside


Loosely coupled


changing the implementation of one
function does not require change of the invoking function


Contracted


there are publicly available descriptions of the
function’s behavior, how to bind to the function, and its
input and output parameters


From webservices.org, quoted in H. Gunzer, “Introduction to Web Services

Middleware: Client
-
Server Computing



16


Web Services Architecture (1)

Service

Broker

Service

Provider

Service

Requester

inquire

publish

bind

Middleware: Client
-
Server Computing



17


Web Services Architecture (2)


Service broker


Look up service between a service provider and a service
requestor


Service provider


Publishes its services to the service broker


Service requester


Asks the service broker where to find a suitable service
provider and then binds itself to the provider


Middleware: Client
-
Server Computing



18


Web Services Components


XML


Extensible
Markup Language


SOAP


Simple Object
Access Protocol


WSDL


Web Services
Definition Language


UDDI


Universal
Discovery Description
Integration

UDDI

WSDL

SOAP

XML

HTTP

FTP

SMTP

Web Services

XML normally
carried using
HTTP

UDDI is the
“yellow pages”
of web services

Middleware: Client
-
Server Computing



19


Extensible Markup Language (XML)


XML is a platform
-
neural data standard for
describing, storing and transporting data across the
web


XML is a core technology for web services


XML is the basis for separately developed web services to
interact with each other


XML facilitates component development


Package application functionality as small, easily
connected web services


Compose an application using “web services”
components

Middleware: Client
-
Server Computing



20


XML and Microsoft’s .NET


.NET is a Microsoft technology to develop XML web
services on many platforms


.NET Active Server Page (ASP)


used to develop web
services


.NET Compact Framework (CF)


used to develop web
services on small devices


Microsoft Internet Toolkit (MIT)


used to develop server
-
side
proxies to deal with heterogeneous mobile devices

Middleware: Client
-
Server Computing



21


XML and Wireless Web Access (1)


The synergy between XML and wireless can be
considered from two perspectives:


XML as a data representation technology


XML as a meta
-
language (a set of rules to define domain
-
specific data definition languages)


XML as a data representation technology


Facilitates content delivery (via XML transformation) to a
wide variety of mobile devices and platforms

Middleware: Client
-
Server Computing



22


XML and Wireless Web Access (2)


XML as a meta
-
language


Key to the success of XML
-
based wireless web access
initiatives


WML


XML
-
compliant language used by WAP 1.0


XHTML


XML
-
compliant language adopted by WAP 1.2 and
future i
-
mode


Web Service Description Language (WSDL)


XML
-
compliant
language normally used in a WSDL document to describe a
web service’s interface


Provides clients with information on how to invoke a web
service

Middleware: Client
-
Server Computing



23


XML Transformation


XML separates the data
from a fixed description
of how the data should
be displayed


Extensible Style
-
Sheet
Language (XLS)
describes how to
display content


XSLT is a scheme to
transform XML data into
device
-
specific formats

XML

WML

XHTML

cHTML

XSLT

Middleware: Client
-
Server Computing



24


XSLT to Target XML to Different Devices

WML

cHTML

PDA
-
specific

<?xml version=‘1.0’?>

<response id=“Result”>


<class


ECE/CS 4984


</class>


<price>


Invaluable


</price>

</response>


XSLT

for WAP

XSLT

for i
-
mode

XSLT

for PDA

XSLT

Engine

Middleware: Client
-
Server Computing



25


SOAP for Invoking Web Services (1)


Small Object Access Protocol (SOAP) is a standard
for invoking XML web services through remote
procedure calls over HTTP


Used by Microsoft’s .NET


.NET Compact Frame implements SOAP 1.1 to allow smart
devices to establish connections and move data to other
devices

UDDI

WDSL

SOAP

XML

Middleware: Client
-
Server Computing



26


SOAP for Invoking Web Services (2)


To make a method call to a web service…


Client first learns the service interface via the server’s Web
Services Description Language (WSDL) document


Client then sends a request to the URL where the service is
running in a SOAP message in XML format for the RPC

UDDI

WDSL

SOAP

XML

Middleware: Client
-
Server Computing



27


SOAP and WSDL


WSDL document specifies


The name of the method to be invoked


The namespace Universal Resource Identifier (URI) for the
method name


A namespace is a unique string to fully qualify XML
element and attribute names


The parameter names and their data types


The SOAPAction


Placed in the HTTP header that the client sends when it
invokes the service


The URL at which the service is running

Middleware: Client
-
Server Computing



28


Accessing Web Services

From http://www.learnxmlws.com/tutors/wsdl/wsdl.aspx


Middleware: Client
-
Server Computing

Middleware: Client
-
Server Computing



29


WSDL for Defining Web Services


WSDL is an XML
-
based language used to…


Define a web service


Describe how to access methods provided by the service

UDDI

WDSL

SOAP

XML

Middleware: Client
-
Server Computing



30


Example: WSDL of a Weather Service


<definitions> element is the root element of the
WSDL document


Declare the WSDL name space as the default name
space for the document


All elements and attributes belong to this name space
unless they have another name space prefix


Each service is defined using a service element

<definitions name ='weatherservice'



xmlns='http://schemas.xmlsoap.org/wsdl/'>



<service name='WeatherService' >






</service>

</definitions>

Middleware: Client
-
Server Computing



31


Port Definitions in WSDL


Within a service element, you specify the different
“ports” on which this service is accessible


A port specifies the service URL


Each port has a unique name and a binding attribute


When using SOAP, the port element contains a
<soap:address/> element with the service address
URL




Middleware: Client
-
Server Computing



32


Example: WSDL Port Definitions


If the URL is http://www.ws/demos/wsdl/devxpert/

weatherservice.asp, the port definition would look
like …



<port name=‘WeatherSoapPort’


binding=‘wsdlns:WeatherSoapBinding’>


<soap:address location=


‘http://www.ws/demos/wsdl/devxpert/weatherservice.asp’ />

</port>

Middleware: Client
-
Server Computing



33


WSDL Message Element


To use web services in an RPC model, WSDL
describes the message structures by using the
<message> element


Each <message> contains zero or more <part> elements.


A <part> corresponds to a parameter or a return value in the
RPC call

Middleware: Client
-
Server Computing



34


Example: Messages Elements


The GetTemperature method would include one input
message and one output message

<message name='Weather.GetTemperature'>


<part name='zipcode' type='xsd:string'/>


<part name='celsius' type='xsd:boolean'/>

</message>


<message name='Weather.GetTemperatureResponse'>


<part name='Result' type='xsd:float'/>

</message>

xsd: float is predefined in http://www.w3.org/2001/XMLSchema

Middleware: Client
-
Server Computing



35


WSDL Operation Element


The WSDL <operation> element is used to specify
which message is the input and which message is
the output



The parameterOrder attribute is optional and may be
used to specify a space
-
delimited list of part names
to indicate the order of parameters when making the
RPC call


<input> and <output> elements are specified within
an <operation> element


Each refers to the corresponding message by its fully
qualified name

Middleware: Client
-
Server Computing



36


Example: Operation Element


Example: wsdlns:Weather.GetTemperature


<portType name='WeatherSoapPort'>


<operation name='GetTemperature'


parameterOrder='zipcode celsius'>


<input message='wsdlns:Weather.GetTemperature' />


<output message='wsdlns:Weather.GetTemperatureResponse' />


</operation>



<!
--

other operations would go here
--
>


</portType>

Middleware: Client
-
Server Computing



37


WSDL Binding Element (1)


The WSDL <binding> element is used to bind a
<port>






Inside the <binding>, element the <soap:binding>
extension element can specify the transport protocol
and style of the request


SOAP can be used over HTTP, SMTP, or, possibly, any other
transport


RPC and document are the two styles

<binding name='WeatherSoapBinding'

type='wsdlns:WeatherSoapPort' >





</binding>


Middleware: Client
-
Server Computing



38


WSDL Binding Element (2)


For each operation that this service exposes, a value
of the SOAP Action is specified in the
<soap:operation> element


The client must put the SOAP Action value in the HTTP
header when it invokes the service

Middleware: Client
-
Server Computing



39


Example: Binding Element

<binding name='WeatherSoapBinding'




type='wsdlns:WeatherSoapPort' >


<soap:binding style='rpc'









transport='http://schemas.xmlsoap.org/soap/http' />


<operation name='GetTemperature' >


<soap:operation










soapAction='http://tempuri.org/action/


Weather.GetTemperature' />





</operation>

</binding>

Middleware: Client
-
Server Computing



40


WSDL Example I (1)


<binding name='WeatherSoapBinding' type='wsdlns:WeatherSoapPort' >


<soap:binding style='rpc'








transport='http://schemas.xmlsoap.org/soap/http' />


<operation name='GetTemperature' >


<soap:operation


soapAction='http://tempuri.org/action/Weather.GetTemperature' />


<input>


<soap:body use='encoded' namespace='http://tempuri.org/message/'




encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />


</input>


<output>


<soap:body use='encoded' namespace='http://tempuri.org/message/'




encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />


</output>


</operation>

</binding>

Middleware: Client
-
Server Computing



41


WSDL Example I (2)


The <operation> element can…


Include <input> and an <output> element


Use a <soap:body> element within each to specify how the
data is encoded


The URI http://schemas.xmlsoap.org/soap/encoding/
indicates the SOAP encoding style as described in
the SOAP 1.1 specification


Middleware: Client
-
Server Computing



42


WSDL Example II (1)


WSDL of XMethods, a delayed stock quote XML web
service

Middleware: Client
-
Server Computing



43


WSDL Example II (2)


<service name="net.xmethods.services.stockquote.StockQuoteService">



<documentation>net.xmethods.services.stockquote.StockQuote web
service</documentation>


<port name="net.xmethods.services.stockquote.StockQuotePort"
binding="tns:net.xmethods.services.stockquote.StockQuoteBinding">




<soap:address location="http://66.28.98.121:9090/soap" />



</port>



</service>



<message name="getQuoteResponse1">




<part name="Result" type="xsd:float" />



</message>


<message name="getQuoteRequest1">




<part name="symbol" type="xsd:string" />



</message>


<portType name="net.xmethods.services.stockquote.StockQuotePortType">



<operation name="getQuote" parameterOrder="symbol">





<input message="tns:getQuoteRequest1" />





<output message="tns:getQuoteResponse1" />




</operation>



</portType>

Middleware: Client
-
Server Computing



44


Summary


Examined client
-
server computational model,
including models for client
-
server middleware


Client
-
server


Client
-
agent
-
server


Client
-
intercept
-
server


Discussed web services


Examined web services based on XML

UDDI

WSDL

SOAP

XML

HTTP

FTP

SMTP