Client
Server Middleware Tools
- Network components:
- Pipes:
- general:
- distributed directories
- authentication services
- peer-to-peer communication:
- transport independent API
- remote procedure calls (RPCs)
- message-oriented middleware (MOM)
- publish and subscribe
- transport stacks
- data representation protocols
- specific:
- database-specific
- OLTP-specific
- groupware-specific
- object-specific
- internet-specific
- system management specific
- Platforms:
- transaction monitors
- object transaction monitors
- web application servers
- see also:
Network
components:
- LANs:
- network operating
systems (NOS):
- NOS vendors:
- Unix-based
- PC LAN based:
- Enterprise-based:
- Distributed Computing
Environment (DCE):
- from Open Software
Foundation (OSF) in 1992
- provides DCE RPCs,
naming services, time
synchronisation service,
network security service
& a threads package
- Internet-based:
- most players are
converging technology
onto open Internet
standards forming an
intergalactic NOS derived
from tecnologies from
both Unix, PC &
Internet aspects.
- Netscape (now AOL) - web
browser, HTTP servers,
LDAP directories, SSL
security, certificate
servers, CORBA IIOP
- JavaSoft
- NOS-independent directory systems:
- X.500 DAP:
- too bulky & overly
complicated
- Lightweight Distributed Access
Protocol (LDAP):
- designed by Netscape to
provide a simplified
version of the X.500 DAP
that could also run on
TCP/IP networks
- Netscape's Directory
Server 3.0 (Feb1998) - a
native LDAP server
- Object Request Brokers (ORBs):
- will subsume NOSs & expand
their scope
- an object bus that lets
components interoperate across
address spaces, languages,
operating systems & networks
- also provides mechanisms that let
components exchange metadata
& discover each other
- examples:
- protocols with
their own network adapter cards
such as:
- Token Rings
- Ethernets
- ISDN
- logical network
drivers:
- interfaces protocol stacks to network
adapter cards
- protocol transport
stacks:
- TCP/IP, IPX/SPX, NetBIOS, SNA
- transport-independent
API:
- sit on top of transport stacks &
allow developers to plug their programs
into a single interface that supports
multiple protocols
- Sockets interface is becoming the main
interface
- Others:
- Transport Layer Interface (TLI) -
used in NetWare & many Unix
implementations
- CPI-C: the modern SNA
peer-to-peer API that can now run
over both SNA & TCP/IP stacks
- Named Pipes: runs on top of
TCP/IP, IPX/SPX, NetBIOS
- protocol
matchmakers:
- allow applications designed to run over
one protocol, run over a different
protocol without re-writing code
- bridges:
- are computers or devices that
interconnect LANs using a link-layer
routing information & physical
addresses
- protocols that require bridges include
NetBIOS as it does not support
inter-networking
- routers:
- interconnect LANs using
protocol-dependent routing information
- create & maintain dynamic routing
tables of the destinations they know
- used with protocols that support a
network layer eg. TCP/IP, IPX/SPX, APPN,
XNS, AppleTalk, OSI
- LAN to WAN connection:
- router connects to WAN via
dedicated leased lines (usually
T1 or T3 line type)
- switcher technology is typically
Frame Relay, X.25 or just
point-to-point (PPP)
- multi-protocol
routers:
- support different combinations of network
layer protocols
- bridge/routers:
- are single devices that combine functions
of bridges & routers so that netBIOS
LAN's can be connected to TCP/IP LANs
- gateways:
- devices that perform brute force
translations between protocols
- WAN public &
private packet-switched networks:
- X.25:
- Frame Relay:
- uses virtual circuits to allocate
bandwidth on demand
- the current LAN-toWAN connection
technology
- Asynchronous
Transfer Mode (ATM):
- the ultimate isochronous technology
- allocates LAN/WAN bandwidth on demand via
virtual circuits
- uses high-speed, hardware-based,
circuit-switching technology that is
potentially capable of unleashing an
awesome amount of bandwidth at very low
cost (every node is given its own
dedicated LAN segment into the switch)
- up to 2.4Gb/s
Pipes:
- provide the intercomponent & interapplication
communication services
- general pipes:
- provide substrate for most C/S interactions
- include:
- communication stacks
- network time - synchronisation of clocks
across the network
- queuing services
- network operating system extensions such
as distributed file & print services
- examples:
- distributed directories:
- authentication services:
- firewalls
- certificate servers
- SSL
- peer-to-peer interfaces
that let apps communicate using
close-to-the-wire send/receive semantics:
- low-level,
conversational, protocols
(hard to code & maintain):
- transport-independent
API:
- NetWare's
Transport Layer Interface
(TLI):
- introduced by
AT&T in 1986, similar
to Sockets but more
network independent - a
cleaner version of
Sockets
- NetWare's
Named Pipes:
- file-like programming
API that abstracts a
session-based two-way
exchange of data
- built-in to NT, Win
95/98 & is supported
in Unix via LAN Manager/X
- Sockets:
- introduced in 1981 as
the Unix BSD 4.2 generic
interface
- Sun introduced NFS
& RPC over sockets in
1985
- supported on
virtually every OS (eg.
Winsock for TCP/IP in
Windows)
- socket address = IP
address + Port address
- Oracle & Sybase
DBMSs have their own
well-known ports!
- Common
Programming Interface for
Communications (CPI-C):
- IBM product that
builds on top of APPC
& masks its
complexities &
irregularities, thereby
allowing porting of
programs to all SNA
platforms
- NetBIOS:
- the premier protocol
for LAN-based,
program-to-program
communications
- introduced by IBM
& Sytek in 1984 for
the IBM PC Network
- used by NetWare as an
interface to both TCP/IP
& IPX/SPX
- used by MS as an
interface to both TCP/IP
& NetBEUI
- remote
procedure calls (RPCs):
- synchronous,
telephone-like,
call-return style fast
messaging
- 1970's:
- HTTP:
- internet messaging protocol which is plain text
based & layers request-response communications
over TCP
- HTTP requests:
- a HTTP request may be as simple as:
- POST /foobar HTTP/1.1
- Host: 209.110.197.12
- Content-Type: text/plain
- Content-Length: 12
- {blank line needed here}
- Hello, world
- 1st line must be: HTTP method (eg. GET/POST)
Target URI HTTP version
- 2nd line must be Host IP address
- 3rd line must be the MIME type of the content
being sent
- 4th line must be length of content being sent in
bytes
- optionally next line can be Connection:
Keep-Alive to maintain TCP connection
- header must be separated from content by a blank
line
- finally the content
- HTTP responses:
- the web server then returns a HTTP text response
as follows:
- 200 0K (the HTTP error message, this
one means all went well)
- Content-Type: text/plain
- Content-Length: response content length
- {blank line needed here}
- response content
- Uniform Resource Identifier (URI):
- is simply a formatted string that uniquely
identifies a resource and come in 2 flavours:
- Uniform Resource Locator
(URL):
- encode the underlying protocol needed to
locate the resource being identified &
have the syntax:
- protocol:// <host>
[":" <port>]
[<path> ["?" <qry>]]
- where host = IP address of the
server, port is the TCP port number,
path is the absolute URI to be passed
as the Request-URI
- Uniform Resource Name (URN):
- are location-independent and in no way
imply any protocol or mechanism for
locating the resource
- the syntax is structured so that URN's
are unique across disparate organisations:
- "urn:" <NID>
":" <NSS>
- where NID is the namespace
identifier and NSS is the
namespace-specific string
- 1980's:
- SUN RPC:
- its most popular
application is the Network File
System used by most Unix
systems
- DCE RPC:
- its most popular application is
Windows NT which uses it for a
number of its system services
- most use NDR as its data
representation protocol
- MS-RPC
- Object RPC's (ORPCs):
- attempted to marry object
orientation with network protocols
with the main difference from earlier
RPC protocols being the codification
of the mapping of a communication
endpoint to a language-level object.
- 1990's:
- Microsoft's DCOM:
- only runs on Wintel
machines, not good for
internet applicability;
problems with firewalls
- instead of HTTP's URI, it
has a DCOM IPID
- CORBA's Internet Inter-ORB
Protocol (IIOP) flavour of
the General Inter-ORB Protocol (GIOP)
:
- compatibility problems
between vendors, not good for
internet applicability
- problems with firewalls
- instead of HTTP's URI, it
has a IIOP/GIOP object_key
- 2000:
- Microsoft's
SOAP:
- XML-based, readily passes
firewalls & able to
communicate with either DCOM
or CORBA
- the HTTP payload of a SOAP
request is simply an XML
document that contains the
values of the [in] and [in,out]
parameters of the method.
These values are encoded as
child elements of a
distinguished call element
that shares the method name
and namespace URI of the
SOAPMethodName HTTP header.
- thus the HTTP request is as
for usual EXCEPT:
- content type = text/xml
- additional header:
SOAPMethodName: URN
- the content must have:
- the SOAP tags
<Envelope> and
at end
</Envelope>
- the 1st child
element under
<Body> must
match the
SOAPMethodName
- message-oriented
middleware (MOM):
- asynchronous, post-office
like, queued & thus
slow messaging
- MS NT5.0 MSMQ
- IBM's MQSeries
- BEA's MessageQ
- PeerLogic's Pipes
- TIBCO's TIB/Rendezvous
- CORBA Messaging
- publish-and-subscribe:
- transport stacks:
- TCP/IP:
- Novell
NetWare's IPX/SPX:
- an implementation of
Xerox Network Services
(XNS) transport &
network protocol
- on the decline?
- NetBEUI:
- the original transport
for NetBIOS commands
- offers powerful datagram
& connection-oriented
services
- lacks a network layer
& security
- data representation protocols:
- a protocol that specifies how the data is structured
in a data packet being sent
- MIME - specifies various types of multimedia
formatting of data
- NDR
- CDR
- XML:
- a text-based, extremely flexible object oriented
data structure specification
- to support extensibility, every element and
attribute in XML has a namespace
URI associated with it
- Service-specific
pipes:
- Database-specific
middleware:
- SQL API's:
- ODBC
- JDBC
- SQLJ
- DRDA
- EDA/SQL
- SAG/CLI
- OLE DB
- OQL
- Oracle SQL*Net
- OLTP-specific:
- Tuxedo's ATMI & /WS
- Encina's Transactional RPC
- X/Open's TxRPC & XATMI
- CORBA's OTS
- MS DTC & TIP
- Groupware-specific:
- MAPI
- VIM
- JavaMail
- SMTP
- Web/NNTP
- S/MIME
- POP3
- IMAP
- Workflow
- Lotus Notes calls
- Object-specific:
- OMG's CORBA/IIOP
- MS COM+
- JavaSoft's RMI-over-IIOP
- Internet-specific:
- System
management-specific:
- SNMP
- CMIP
- RMON
- DMTF
- WFM
- JMAPI
- WEBEM
- ORBs
Platforms:
- the application servers that run the server-side
components (NOT the client side)
- examples:
- TP monitors
- Object Transaction Monitors:
- Web Application Servers