Wireless and Mobile Systems Design
Lecture 4
Middleware: Client-Server
Computing
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
2
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
3
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
4
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
API
Application Programs
Middleware
Operating System
and Networking Services
Middleware: Client-Server Computing
5
Client-Server vs. Peer-to-Peer
Client-Server Computing
Peer-to-Peer Computing
Server
• Client initiates
communications
• Client issues request
to a server
• Server replies or
performs some service
Middleware: Client-Server Computing
• Any participant can
initiate communication
• Any device can
generate a request
• Any device may
provide a response
6
Client-Server Models for Middleware
● Client-server
● Client-agent-server
● Client-intercept-server models
Middleware: Client-Server Computing
7
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
8
Client-Server Model (2)
Wireless Fixed
Network Network
Mobile Host
Application
Client
Application
Server
● 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
Middleware: Client-Server Computing
9
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
10
Client-Agent-Server Model (2)
Wireless Fixed
Network Network
Mobile Host
Application
Client
Agent
Application
Server
● Optimization for mobile/wireless involves client and
agent
● Single application server to support both fixed
network clients and mobile clients
Middleware: Client-Server Computing
11
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
encoded
request
Gateway
request
Server
Encoders
Decoders
HTTP
Server
Protocol
encoded
Gateways response
response
CGI,
etc.
wireless
Middleware: Client-Server Computing
12
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
13
Client-Intercept-Server Model (2)
Wireless Fixed
Network Network
Mobile Host
Client
Client
Side
Agent
Agent
Application
Server
● Example – IBM Web Express
■ Web Browser (client)  HTTP  Client-side agent  TCP/IP
connection  Server side agent  HTTP  Web server
Middleware: Client-Server Computing
14
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
15
Web Services Architecture (1)
Service
Broker
inquire
Service
Requester
Middleware: Client-Server Computing
publish
bind
Service
Provider
16
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
17
Web Services Components
Web Services
UDDI is the
“yellow pages”
of web services
UDDI
WSDL
SOAP
XML
HTTP FTP SMTP
XML normally
carried using
HTTP
Middleware: Client-Server Computing
● XML – Extensible
Markup Language
● SOAP – Simple Object
Access Protocol
● WSDL – Web Services
Definition Language
● UDDI – Universal
Discovery Description
Integration
18
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
19
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
20
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
21
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
22
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
XML
display content
● XSLT is a scheme to
transform XML data into
device-specific formats
Middleware: Client-Server Computing
cHTML
XSLT
XHTML
WML
23
XSLT to Target XML to Different Devices
WML
<?xml version=‘1.0’?>
<response id=“Result”>
<class
ECE/CS 4984
</class>
<price>
Invaluable
</price>
</response>
XSLT
for WAP
cHTML
XSLT
for i-mode
XSLT
Engine
PDA-specific
XSLT
for PDA
Middleware: Client-Server Computing
24
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
25
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
26
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
27
Accessing Web Services
From http://www.learnxmlws.com/tutors/wsdl/wsdl.aspx
Middleware: Client-Server Computing
28
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
29
Example: WSDL of a Weather Service
<definitions name ='weatherservice'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<service name='WeatherService' >
…
</service>
</definitions>
● <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
Middleware: Client-Server Computing
30
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
31
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
32
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
33
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
34
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
35
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
36
WSDL Binding Element (1)
● The WSDL <binding> element is used to bind a
<port>
<binding name='WeatherSoapBinding'
type='wsdlns:WeatherSoapPort' >
…
</binding>
● 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
Middleware: Client-Server Computing
37
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
38
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
39
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
40
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
41
WSDL Example II (1)
● WSDL of XMethods, a delayed stock quote XML web
service
Middleware: Client-Server Computing
42
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
43
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
Middleware: Client-Server Computing
44
Descargar

ECE/CS 4984: Lecture 1