Middleware, Service-Oriented Architectures and Grid Computing

advertisement
Middleware, Service-Oriented
Architectures and Grid Computing
CSE
5810
Prof. Steven A. Demurjian
Computer Science & Engineering Department
The University of Connecticut
371 Fairfield Road, Box U-2155
Storrs, CT 06269-2155
steve@engr.uconn.edu
http://www.engr.uconn.edu/~steve
(860) 486 - 4818
† Special Thanks to Prof. Alex Shvartsman, Keith Bessette, Scott Craig
and Prior CSE333 students for providing portions of this material.
MW+SOA-1
What is a Distributed Application?

CSE
5810


Distributed Computing/Applications are …
 Systems of Systems
 Interoperation of New & Existing Applications
 Legacy, Databases, COTS, New Clients, etc.
 Network Centric Environment
Distributed Computing Applications must …
 Manage, Control, Access, and Modify Data
 Allow Humans to Interact with Data
 Provide High-Availability and Performance
 Evolvable Over Time
Present & Future Health IT Systems and Health
Information Exchange Exhibit All of These
Characteristics and More!
MW+SOA-2
What is a Distributed Application?
CSE
5810
System of Systems
Heterogeneity
Hardware
OS, PLs
Network Centric Environment
DB Client
Legacy
Client
Legacy
Database
COTS
Dynamic
Environment
High-Availability
Performance
Java
Client
Server
Server
Legacy
Java
Client
Database
COTS
COTS
Client
Increase Productivity
New/Innovative
Transparent Interoperation
Information Use
MW+SOA-3
Another View – Today’s Reality

CSE
5810



Premise: Artifacts - set of
 DB, Legacy, COTS,
GOTS, Each w/ API
Premise: Users
 New and Existing
 Utilize Artifact APIs
Distributed Application, DA
 Artifacts + Users
What are the Issues?
 How Do they Interact?
 Heterogeneity
 Security Concerns
 Different Programmatic
Models
 Etc. Etc. Etc.
Database
COTS
Legacy
Legacy
Client
Java
Client
GOTS
NETWORK
GOTS
Client
Legacy
Database
Database
Client
COTS
Client
MW+SOA-4
Why is Distributed Computing Needed?

CSE
5810


Today’s Environments Contain Applications …
 Created with Multiple Prog. Languages
 Executing on Heterogeneous Platforms
 Locally and Geographically Distributed
Distributed Computing Applications Must …
 Allow Seamless and Transparent Interoperation
 Provide Tools for Engineers and Users
Result: Inter-Operating Environment
 Utilize Information in New/Innovative Ways
 Leveraged to Increase Productivity
 Support Diverse User Activities
 Dynamically Respond to Changes
MW+SOA-5
Striving for New Techniques/Technologies

CSE
5810

We Must Diverge from Business as Usual
 C Programming with RPC
 Customized Development without Reuse
 Solutions that Aren’t Extensible and Evolvable
 Cobbling Together Solutions w/o Method or
Reason is Unacceptable and Doomed to Fail!
We Must Face Today’s Realities
 Legacy Code is Fact of Life
 New Technologies Offer New Challenges
 Adopt to Leverage Their Benefits
 We Must Draw Careful Balance to Opt for
Mature Technologies While Targeting
Emerging Technologies with Potential!
MW+SOA-6
Who are the Players?

CSE
5810


Stakeholders
 Software Architects (Requirements)
 System Designers (Solutions)
 Application Builders (Implementation)
Stakeholders Striving to Provide …
 System Interaction and Information Exchange
 Utilization of Existing Applications in New and
Innovative Ways
End-Users at Various Skill Levels and with Specific
and Limited Access Requirements
 Novice vs. Adept vs. Expert
 Who Uses What When and for How Long?
MW+SOA-7
Why a Distributed Application?

CSE
5810

Reasons:
 Data used is Distributed
 Computation is Distributed
 Application Users are
Distributed
2 Key Issues for Solution:
 Platform-Independent
Models and Abstraction
Techniques
 Hide Low-Level Details
 Provide a Well-Performing
Solution
 Works Today and
Tomorrow!
Shared Objects
• Easy to Re-use
• Easy to distribute
• Easy to maintain
MW+SOA-8
Distributed Systems
Fundamental Realities of Distributed Systems
CSE
5810
Co-located
Distributed
Fast
Slower
Failures
Objects fail together
Objects fail
separately, Network
can partition
Concurrent Access
Only with multiple
threads
Yes
Yes
Not Inherently
Often Add-On
Capability
Communication
Secure
MW+SOA-9
Service Oriented Architecture
& Grid Computing
Marc Brooks, The MITRE Corporation
The author's affiliation with The MITRE Corporation is provided
for identification purposes only, and is not intended to convey or
imply MITRE's concurrence with, or support for, the positions,
opinions or viewpoints expressed by the author.
http://colab.cim3.net/file/work/EmergingTechnology_Conference/2004-06-03_MITRE/Brooks_2004_03_24.ppt
What is Service Oriented Architecture (SOA)?
An SOA application
is a composition of
services
Service
Registry
 A “service” is the
atomic unit of an
Find
Register
SOA
 Services encapsulate
Service
Service
Bind,
a business process Consumer Execute Provider
 Service Providers
Register themselves
 Service use involves:
Find, Bind, Execute

Service
Registry
SOA Actors
Find
Service
Consumer

Register
Bind,
Execute
Service Provider
 Provides
a stateless, location transparent business
service

Service Registry
 Allows
service consumers to locate service providers
that meet required criteria

Service Consumer
 Uses
service providers to complete business
processes
Service
Provider
SOA Benefits
Service
Registry
Find
Service
Consumer
Business Benefits
 Focus on Business Domain solutions
 Leverage Existing Infrastructure
 Agility
Technical Benefits
 Loose Coupling
 Autonomous Service
 Location Transparency
 Late Binding
Register
Bind,
Execute
Service
Provider
What is a Service Oriented Architecture?

CSE
5810



Solutions that Focus on Services that Need to be
Available to Meet Need of Users (Entities)
Users are Assumed to be Interacting via Client
Applications (Browser or Standalone)
 Interactions with Services Transparent to Users
(Integrated into Software)
Interactions Between Entities Occur via a Message
Exchange - Conceptual
 Resources are Software Artifact Accessible via
API Consisting of Services
 Services are Logical Grouping of Methods
(Functions) that are Available for Use
 Services are Utilized When Messages are Invoked
Against Them by Outside Users
Both Web-Based and Middleware Settings
MW+SOA-14
Middleware-Based SOA

CSE
5810

Distributed Object Computing Platforms are Well
Established in the Field - Historically
 DCE (Distributed Computing Environment)
 COM/OLE (Component Object Model/Object
Linking and Embedding)
Modern Middleware (JINI, CORBA, .NET):
 CORBA –Standards Committee (OMG) Controls
Technology – Many Programming Languages
 JINI – Sun-Based Product – The Poor Mans
CORBA – Java
 .NET – Microsoft’s Forward into the Modern
Market – C# (we will skip)
MW+SOA-15
What Must All SOA Provide?

CSE
5810
Both Middleware & Web-Based SOAs Must Provide
 Middle Layer Infrastructure that Provides Bridge
Between Software Artifacts
 Clients and Resources in Middlware Setting
 Clients (Browsers) and Resources in Web Setting
Allow Software Artifacts (Resources) to
Register/Publish their APIs (Services and
Methods) for use by Clients/Other Resources
Lookup Service: Middleware for Artifacts (Resources
and/or Clients and/or Other Resources) to Interact
 Support Dynamic Discovery – Find Services
Based on Attributes and Values
 Location Transparency to Service Requestors
 Found Service Sets up Binding Between Service
Consumer and Service Provider


MW+SOA-16
SOA Akin to CBD
CSE
5810
MW+SOA-17
Supplier /Consumer Model
CSE
5810
SUPPLY
Build New
Wrap Existing
Buy
CONSUME
Assemble
Applications
MANAGE
Publish
Subscribe
Catalog
Browse
MW+SOA-18
Objectives of SOA

CSE
5810







Can SOAs Support Highly-Available Distributed
Applications?
Can Replicated Services be Registered and Available
for Use by Clients?
Can SOAs Support a Network-Centric Environment
with Dynamic Clients and Services?
Will Clients Continue to Operate Effectively if a
Replicated Service Fails?
Can SOAs be Utilized to Maintain Data Consistency
of Replicas?
Are SOAs Easy to Learn and Use?
What is Maturity Level of SOAs Technology?
How can SOA be Leverage for HIE/HIT?
MW+SOA-19
Overview of Presentation

CSE
5810




Objective is to Explore CORBA, JINI, and .NET
Various Aspects of Three Technologies
 Overall Architecture
 Interoperability Capabilities
 Access and Usage
Exploration of Web Service-Oriented Architectures
 What are they?
 How do they Work?
 WSOAs + Middleware
Transition to Grid Computing
 What is the Grid?
 What is its Purpose and Role
 Grid + SOA + Middleware
Where does Cloud Computing Fit?
MW+SOA-20
What is CORBA?

CSE
5810


Common Object Request Broker Architecture
Architecture to Allow:
 Existing COTS, GOTS, Legacy, DB, etc. to
Interact with One Another
 Integrate These with New Clients/Servers/Etc.
Consists of Following Major Components
 Object Request Broker (ORB):
 Arbitrate and Interact
 Role of Lookup for Service Discovery

Interface Definition Language (IDL):
 Common Definitional Format
 Means for Different “Software” written in Different
Languages to Interact with One Another
MW+SOA-21
What is CORBA?

CSE
5810


CORBA is a
Specification for
Interoperability
OMG (Object
Management
Group) Supplies a
Set of Flexible
Abstraction and
Concrete Services
Vendors Must
Follow Standard
CORBA Language Mappings
Ada
C and C++
COBOL
Java to IDL
Lisp
CORBA Scripting
Language
Smalltalk
Others
Perl
Haskell
Python
Eiffel
PHP/ORBit
MW+SOA-22
What is CORBA?

CSE
5810

Differs from Typical Programming Languages
Objects can be …
 Located Throughout Network
 Interoperate with Objects on other Platforms
 Written in Ant PLs for which there is mapping
from IDL to that Language
Application
Interfaces
Domain Interfaces
Object Request Broker
Object Services
MW+SOA-23
What is CORBA?

CSE
5810
CORBA Provides a Robust set of Services (COS)
 Services to Support Integration and Interoperation of
Distributed Objects
 Services Defined on top of ORB as standard CORBA
Objects with IDL interfaces
 Vendors Must Implement CORBA Services (COS)
Factory
Naming
Context
Object Request Broker
Event
Channel
Object Life
Cycle
Naming
Events
Relationships
Externalization
Transactions
Trader
Query
Property
MW+SOA-24
What is CORBA?

CSE
5810

Allow Interactions from Client to Server CORBA
Installed on All Participating Machines
Client Application
Static
Stub
DII
Server Application
ORB
Interface
ORB
Interface
Skel
eton
DSI
Object Adapter
Client ORB Core
Network
IDL - Independent
Same for all
applications
Server ORB Core
There may be multiple
object adapters
MW+SOA-25
CORBA: Architectural Goals

CSE
5810











Simplicity
Consistency
Scalability
Usability for End Users
Usability for Administrators
Usability for Implementers
Flexibility of Security Policy
Independence of Security Technology
Application Portability
Interoperability
Performance
Object Orientation
MW+SOA-26
Role of an Object Request Broker (ORB)

CSE
5810



ORB Provides the Underlying Infrastructure for
Supporting Interoperating Software Systems
(Applications) Composed of Distributed Objects
 ORB Provides the Basic Request Delivery
 ORB Provides Interface Definitions
Location is Transparent to the Caller and Object
Implementation
Caller and the Object Implementation Can be in the
Same Process thru Opposite Sides of the World
ORB Manages Local Location and Optimization
ORB
Clie nt
Obje ct
Application
Imple me ntation
MW+SOA-27
Interface Definition Language, IDL

CSE
5810



Key Component of CORBA Is the Interface
Definition Language, IDL
 Mapping is Available in C, C++, Java, Ada, Etc.
 IDL Is Independent of Any Language/Compiler
 Multiple Inheritance
 Public Interface Oriented
 Not for Implementation
Primary Support for Interoperability Between Static
and Dynamic Request Mechanisms
Advantage: Modification of Client Code without
Impacting of Server Code, and vice-versa
Disadvantage:
 A complete new language with C++ like Syntax
 Programmers Must Prepare IDL Modules
MW+SOA-28
ORB and High Level View of Requests

CSE
5810
The Request Consists of
 Target Object
 Operation (Method)
 Parameters
 Request Context (Optional)
Client
Application
Object
Implementation
Object Call
IDL Boundary
Object reference
Methods and D ata
ORB
Request
IDL Boundary
Object dispatcher
MW+SOA-29
CORBA Components and Interfaces
CSE
5810





Client Stub: Client Invokes a Particular Object Op.
Dynamic Invocation: Run-Time-Construction of
Operation Invocations
Implementation Skeleton: Interface Through Which a
Method Receives a Request
Object Adapter: Provides (De)activation, Object
Creation/Reference Mgmt. for Implementations
ORB Interface: Common ORB Operations
Client
Dynamic
Invoke
Client
Stubs
Object Implementation
ORB
Interface
Implementation
Skeletons
Object
Adapter
ORB Core
One interface
One interface per object adaptor
One interface per object operation
ORB internal interface
MW+SOA-30
Interfaces

CSE
5810


Objects are Defined in IDL via Interfaces
Object Definitions (Interfaces) are Manifested as
Objects in the Interface Repository, as Client Stubs,
and as Implementation Skeletons
Descriptions of Object Implementations are
Maintained as Objects in the Impl. Repository
IDL Interface
Definitions
Interface
Repository
Access
Client
Stubs
Includes
Client
Implementation
Installation
Implementation
Skeletons
Includes
Implementation
Repository
Describes
Object Implementation
MW+SOA-31
CORBA: Repositories

CSE
5810
Interface Repository




Client access to
definitions
Type checking for
signatures
Traversal of
inheritance graphs
Implementation Repository





IDL Interface
Definitions
Interface
Repository
Location of
implementation
Activation information
Administration control
Security
Resource allocation
Implementation
Installation
Client
Stubs
Implementation
Skeletons
Implementation
Repository
Access
Includes
Client
Describes
Includes
Object Implementation
MW+SOA-32
Client Side

CSE
5810


Clients Perform Requests Using Object References
Clients Issue Requests through Object Interface Stubs
(Static) or DII (Dynamic Invocation Inter.)
Clients May Access General ORB Services:
 Interface Repository (IR)
 Context Management
 Request Management
Client
Object
Repository
Object Implementation
Dynamic
Invoke
Client
Stubs
ORB
Interface
Implementation
Skeletons
Object
Adapter
ORB Core
MW+SOA-33
Object Implementation Side

CSE
5810


Implementations Receive Requests Thru Skeletons
Object Adapter Adapts to Specifics of Object
Implementation Schemes
Basic Object Adapter (BOA) Provides:
 Management of References
 Method Invocation
 Authentication
 Implementation Registration
 Activation / Deactivation
Object Implementation
Client
Dynamic
Invoke
Client
Stubs
ORB
Interface
ORB Core
Implem.
Skeletons
Implementation
Repository
Object Adapter
MW+SOA-34
Repositories: Interface and Implementation

CSE
5810

Interface Repository
 Dynamic Client Access to Interface Definitions to
Construct a Request
 Dynamic Type Checking of Request Signatures
 Traversal of Inheritance Graphs
Implementation Repository
 Location of Implementations and Methods
 Activation Information
 Administration Control
 Resource Allocation
 Security
MW+SOA-35
Three Types of ORBs

Single Process Library Resident
CSE
5810
Client
ORB

Object
ORB and implementations
implemented as libraries
(routines) resident in
the client.
Request
Client and Implementation Resident
Client
ORB
Object
ORB implemented as
libraries (routines) resident
in the clients and in the
implementations.
Request
MW+SOA-36
Three Types of ORBs

Server or Operating System Based
CSE
5810
Client
ORB
Object
Request
ORB is implemented as
a server (separate process)
which brokers requests
between client and
implementation processes.
ORB is part of the
operating system.
MW+SOA-37
Three Types of Implementations
CSE
5810

Single Process “one shot” Object
Object Implementation
Single Process
Single
method
invocation

Implementation is a single
process that is activated
upon the request delivery
Multi-Threaded “resident” Object
Object Implementation
Single Process
Implementation is a permanent
or resident multi-threaded
process
Method C
Method B
Method A
MW+SOA-38
Three Types of Implementations
CSE
5810

Multi-Process Object
Object Implementation
Process 1
Method A
Process 2
Method B
Implementation is a set
of processes dedicated to
a particular (group of)
method(s)
Process 3
Method C
Processes can be distributed
MW+SOA-39
Interface Definition Language, IDL

CSE
5810




Language used to describe the interfaces that client
objects call and object implementations provide.
Obeys the same lexical rules as C++, but introduces
some new keywords.
Supports standard C++ preprocessing features.
Interfaces can have operations and attributes.
 Operation declaration consists of a return type, an
identifier, a parameter list, and an optional raises
expression (exceptions).
 Attribute declaration is logically equivalent to
declaring a pair of accessor operations. May be
declared as readonly.
Interface specifications are placed in a source file
having the extension “.idl”
MW+SOA-40
IDL: Modules and Interfaces

CSE
5810

Module: Used to scope IDL identifiers.
 Mapped to C++ namespace with the same
name. Mapped to a C++ class if the namespace
construct is not supported.
 Mapped to Java package with the same name.
 IDL declarations not enclosed in any module have
global scope when mapped.
Interface: Description of set of operations that a
client may request of an object.
 Multiple inheritance supported
 Interface body may contain the following kinds of
declarations: constant, type, attribute, and
operation.
MW+SOA-41
IDL: Basic Types
CSE
5810
Type
Range
short
-215 .. 215-1 (16-bit)
unsigned short
0 .. 216-1 (16-bit)
long
-231 .. 231-1 (32-bit)
unsigned long
0 .. 216-1 (32-bit)
float
IEEE single-precision floating point
double
IEEE double-precision floating point
char
8-bit quantity
boolean
TRUE or FALSE
octet
8-bit (guaranteed during transmission)
any
values that can express any IDL type
MW+SOA-42
IDL: Complex Types

CSE
5810


Structures:
 struct FixedLengthStruct {
long
field1; // 32-bit
short
field2; // 16-bit
};
 struct VariableLengthStruct {
long
field1; // 32-bit
string
field2;
};
Discriminated Unions: Cross between the C union
and switch statements.
Enumerations: Ordered list of identifiers.
 enum quality_t {
Poor, Fair, Good, Excellent};
MW+SOA-43
IDL: Complex Types (cont.)

CSE
5810


Sequences: One-dimensional array with maximum
size (fixed at compile time) and length (set at run
time).
 Unbounded Sequence:
typdef sequence<long> longSeq;
 Bounded Sequence:
sequence<long,10> fieldname;
Strings: Declared using keyword string. May be
bounded or unbounded.
 string name<32>; //bounded
Arrays: Multidimensional, fixed-size arrays of any
IDL data type.
MW+SOA-44
IDL Example: GUI
CSE
5810
/*
* File Name:
*/
GUI.idl
#ifndef GUI_IDL
#define GUI_IDL
module GUI {
struct timespec_t {
long tv_sec;
long tv_nsec;
};
interface Dialog1 {
void update(in Dialog1Data_t val);
};
interface Dialog2 {
void update(in Dialog2Data_t val);
};
};
#endif
// GUI_IDL
struct Dialog1Data_t {
timespec_t
DataTime;
float
val;
};
struct Dialog2Data_t {
timespec_t
DataTime;
long
val;
};
interface MainWindow {
void logEvent(in timespec_t timestamp,
in string val);
};
MW+SOA-45
IDL Example: Server
CSE
5810
/*
* File Name:
*/
Server.idl
#ifndef SERVER_IDL
#define SERVER_IDL
#include "GUI.idl"
interface Server {
enum reason_t {
NotInitialized,
ErrorDetected
};
exception NotAvailable {
reason_t reason;
};
exception OperationTimeout {};
void registerMainWindow(
in GUI::MainWindow val,
in boolean flag)
raises (OperationTimeout);
void setMainWindowEnabled(
in boolean flag)
raises (OperationTimeout);
void registerDialog1(
in GUI::Dialog1 val,
in boolean flag)
raises (OperationTimeout);
void setDialog1Enabled(
in boolean flag)
raises (OperationTimeout);
GUI::Dialog1Data_t getDialog1Data()
raises (OperationTimeout,
NotAvailable);
void registerDialog2(
in GUI::Dialog2 val,
in boolean flag)
raises (OperationTimeout);
void setDialog2Enabled(
in boolean flag)
raises (OperationTimeout);
GUI::Dialog2Data_t getDialog2Data()
raises (OperationTimeout,
NotAvailable);
};
#endif
// SERVER_IDL
MW+SOA-46
A Comparison of
Jini and CORBA
Andrew See
Liyuan Yu
Zhongying Wang
Michael Collins
What is CORBA?



Common Object Request Broker Architecture
(CORBA) specification defines a framework for
object-oriented distributed applications..
It is an open standard for heterogeneous
computing.
Allows distributed programs in different
languages and different platforms to interact as
though they were in a single programming
language on one computer
Object Request Broker (ORB)

A software component that mediates transfer of
messages from a program to an object located
on a remote host.
0. Invocation ( with an
Client
ORB
Network
ORB
Server
object reference)
1.
Locate CORBA objects
and marshal parameters
invocation
0
1
CORBA Object
2.
Network Delay
3.
Unmarshal parameters
4.
Method Execution
5.
Result marshal
6.
Network Delay
7.
Result unmarshal
2
3
5
4
execution
6
7
CORBA Objects and IDL

Each CORBA object has a clearly defined interface
specified in CORBA interface definition language
(IDL).


Distributed objects are identified by object references,
which are typed by the IDL interfaces.
The interface definition specifies the member functions
available to the client without any assumption about the
implementation of the object.
Example of IDL
stockMarket.idl
module stockMarket{
interface StockServer {
float getStockValue (in string stockName);
void setStockValue (in string stockName, in long value);
}
…………..
}
No Implementation details in IDL
Stub and Skeleton

“Glue” that connects language-independent IDL interface
specifications to language –specific implementation
Client
Object
Object
Stub
Client
Stub
ORB

Automatically generated by IDL compiler
Design of the Game Project with CORBA

Centralized Version:
locate service
return server reference
locate service
Naming Service
return server reference
Player1
Player2
play
register Service
play
play
Game Server
Two Games:

Guess Game:
Two Games (Cont.)

HangMan:
Design Details--IDL
module GameApp{
interface Player
{
void displayMessage(in string m);
string getPlayerID();
};
interface GuessPlayer: Player
{
};
interface HangmanPlayer: Player
{
void drawMan(in long numWrong);
};
interface Server
{
void addPlayer(in Player p);
void removePlayer(in string playerID);
void startGame(in string playerID);
void QuitGame(in string playerID);
void takeTurn(in string playerID);
};
interface GuessServer: Server
{
void takeTurn(in long number, in string
playerID);
};
interface HangmanServer: Server
{
void takeTurn(in char w,in string word,
in string playerID);
};
};
Design Details--UML
<<interface>>
GuessPlayer
<<interface>>
HangmanPlayer
<<interface>>
GuessServer
<<interface>>
HangmanServer
+takeTurn()
+takeTurn()
<<interface>>
Interface1
<<interface>>
Player
+addPlayer()
+removePlayer()
+StartGame()
+QuitGame()
+takeTurn()
+getPlayerID()
+displayMessage()
implements
Automatically generated
by IDLtoJAVA compiler
implements
Java Implementation
GameServerImpl
PlayerImpl
+addPlayer()
+removePlayer()
+StartGame()
+QuitGame()
+takeTurn()
+getPlayerID()
+DisplayMessage()
GuessPlayer
HangmanPlayer
GuessServerImpl
HangmanServerImpl
+DrawMan()
+takeTurn()
+takeTurn()
Design of the Game Project with
CORBA

Decentralized Version
play
Player1
return server info
locate service
return server info
Naming Service
Player2
locate service
register Service
Return partner info
Create playerlist
Game Server
Return partner info
Design Details-IDL
module GameApp
{
interface Player
{
void receiveMessage(in string m);
string getPlayerID();
void startGame(in string data);
void startNewGame(in string data);
void QuitGame();
void response(string number, in string data);
void takeTurn();
};
interface Server
{
string addPlayer(in string p, in string ncRef);
};
};
Design Details- UML
Interface generated
By IDL Compile
Implement by
programmer
What is JINI?

CSE
5810

An Infrastructure for Network Centric Applications in
Spontaneous Environment
 Clients Enter/Leave Network Unpredictably
 Resources and Services Enter/Leave due to
Failure, Redundancy, Topology Change
 Both Typify Present/Future Army Systems
Goals of JINI
 Plug-and-Play of Clients and Services
 Erasing Hardware/Software Distinction:
Everything is a Service
 Enable Spontaneous Network Applications
 Architecture where Services Define Function
 Strive for Easy to Use/Understand Technology
MW+SOA-61
Sun’s JINI Technology

CSE
5810



JINI is a Sophisticated Java API
Construct Distributed Applications Using JINI by
 Federating Groups of Users
 Resources Provide Services (Database Access,
Printing, Real-Time Sensor) for Users
JINI and Stakeholders
 Core of Technologies to Architect, Design,
Implement, and Test Distributed Applications
 Construct Software “Resistant” to Failure
JINI and Users
 High Availability Through Redundancy
 Dynamic Responses to User Requests
Regardless of Network & Resource Changes
MW+SOA-62
Current Status of JINI

CSE
5810


Now an Apache Project
 https://river.apache.org/about.html
 https://river.apache.org/
 https://river.apache.org/doc/specs/html/jinispec.html
Continued Further Development and Advancement of
JINI
Apache River 2.2.3 Released - February 21, 2016
MW+SOA-63
Java Computing Architecture and JINI
CSE
5810
MW+SOA-64
JINI Components and Dependencies
CSE
5810
Base
Java
Infrastructure
Programming
Model
Services
Java VM
Java APIs
JNDI
RMI
JavaBeans
Enterprise Beans
Java Security
JTS
JMS
Java +
JINI
Discovery/Join
Leasing
Distributed
Security
Lookup
Transactions
Transaction
Manager
JavaSpaces
Events
Lookup service
MW+SOA-65
How Does JINI Work?

CSE
5810



Distributed Application Constructed Using One or
More Lookup Services
Lookup Service Support Interactions by
 Resources: “Advertise” Services
Discover, Register Services, Renew Lease
 Client: “Locate/Utilize” Services
Discover, Search for Services, Invocation
Multiple Lookup Services
 Resources Responsible for Registering All
 Clients Interact with Multiple Lookups
 Stakeholders Must Write “Apropos” Code
Discovery Initiates Process for Client or Resource
MW+SOA-66
Discovery by Resource & Client
CSE
5810
JINI
Lookup
Service
Discovery to
Locate Services
JINI
Lookup
Service
Discovery to
Register Services
Resource
Client
Service Object
Service Attributes
MW+SOA-67
Basic JINI Concepts

CSE
5810




JINI Lookup Service Maintains Registry for
Available Services of Distributed Application
Resources Provide Services that Register and Join
with JINI Lookup Service
Clients Discover and Utilize Services Based on
Interface of Services
 Ask Lookup for RegisterForCourse(CSE900)
 Return Proxy for Execution of Service
 Location of Service Transparent to Client
Locations of Clients, Services, Lookup Service, etc.,
can Change over Time
Conceptually, JINI Similar to Distributed OS with
Dynamically Definable/Changeable Resources
MW+SOA-68
Basic JINI Concepts

CSE
5810

A Resource Provides a Set of Services for Use by
Clients (Users) and Other Resources (Services)
A Service is Similar to a Public Method
 Exportable - Analogous to API
 Any Entity Utilized by Person or Program
 Samples Include:
 Computation, Persistent Store, Printer, Sensor
 Software Filter, Real-Time Data Source
 Anything that is Relevant for Your Domain!
Services: Concrete Interfaces of Components
Services Register with Lookup Service
 Clearinghouse for Resources to Register Services
and Clients to Locate Services


MW+SOA-69
JINI Resources & Services
CSE
5810
JINI
Lookup
Service


Register
Services
Printer Resource
Service Object
Service Attributes
Sun’s Initial Perspective
 JINI for Hardware
Class and
Methods
 Printers, Digital
Define
Cameras, etc.
Services
 Plug-and-Play on
to be
Network
PrinterActions Class Defines Registered
the “Component” that is
Registered with JINI
PrinterActions Class
enqueuePrintJob
dequeuePrintJob
getPrinterStatus
getPrinterType
installPrinter
removePrinter
startJob
cancelJob
MW+SOA-70
Objectives and Utility of JINI

CSE
5810

For Users, JINI Offers
 Sharing of Resources (Services) over Network
 Location Transparency of Users and Services
 Both Critical for “Moving” Personnel
For Stakeholders, JINI Provides
 Infrastructure for Federating Services in
Distributed Setting
 Programming Model to Register & Discover
Services
 Availability of Services Throughout Distributed
Setting
Leading to Ease in Constructing, Maintaining, and
Evolving Network Centric Applications
MW+SOA-71
How Does JINI Work?

CSE
5810


Resources Discover and Join Lookup Service
When Resources Leave or Fail to Renew Leases
 Lookup Service Must Adjust Registry
 Time Lag Between Departure and Removal of
Services from Registry
 What Happens When Client Receives Service
Just Prior to Failure?
 Utilization of Java Exception Handling
 Client Code Written to Dynamically Adapt
Resource Register
 Services on Class-by-Class Basis
 Service Object (Java API - Method Signatures)
 Optional Descriptive Service Attributes
MW+SOA-72
JINI Concepts and Terms

CSE
5810


Registration of Services via Leasing Mechanism
 Resource Leases Services to Lookup Service
 Resources Renew Services Prior to Expiration
 If not, Services Become Unavailable
 Lookup Service Maintains Registry
 Limit Availability of Services Based on Time,
Workload, User Requirements, etc.
 Services as Available “Components”
Leasing Supports High-Availability
 Registration and Renewal Process
 Upon Failure, Services Removed from Registry
Clients, Resources, Lookup Can Occupy Same or
Different Computing Nodes
MW+SOA-73
Registration & Leasing

CSE
5810


FOREVER or EXPIRATION DATE (millisecs)
Renewal Must Occur Prior to Expiration
JINI Provides Lease Renewal Manager to Allow
Resource to Delegate Renewal Responsibility
JINI
Lookup
Service
Leasing/Lease Renewal
Lease for 5 minutes (3000000 msec)
Must Renew Before 5 Minutes Expire
If Not Renewed, Lookup Removes
If Failure, Lookup May Still Supply
Service Until Expiration (5 mins)
Client MUST be SMART!
Printer Resource
Service Object
Service Attributes
Class and
Methods
Define
Services
to be
Registered
PrinterActions Class
enqueuePrintJob
dequeuePrintJob
getPrinterStatus
getPrinterType
installPrinter
removePrinter
startJob
cancelJob
MW+SOA-74
JINI Support for Distributed Computing
CSE
5810
Clients
Using
Services
JINI Lookup
Service
Redundant
Lookups
Java
Client
Database
Legacy
Resources
Provide
Services
COTS
Java
Client
Legacy
Legacy
Client
COTS
Database
Client
COTS
Client
Database
JINI Lookup
Service
Legacy
COTS
MW+SOA-75
Component Perspective and JINI

CSE
5810
Resources as Components
 Resources Provide Services
 What Service Provides: Component Interface
 Clients, Servers, Resources, Use Component
Interface to Design/Construct Functionality
Java
Client
Constructed via Services of
Legacy, COTS, Database, etc.
Lookup Registered Services
Functionality via Service Reuse
Services as Component APIs
Legacy
COTS
JINI
Lookup
Service
Database
Legacy
COTS
MW+SOA-76
Two Example Resources

CSE
5810



University Application
 Students can Register/Drop Courses and Check
the Schedule/Catalog
 Faculty can Alter Course DB and Check the
Schedule/Catalog
Military Application - Database of Parts
 Ability to Requisition/Add/Delete Parts
 Different User Authority Based on Rank
For Both:
 Client to JINI to Discover Services
 Client to Resource for Method Invocation
(Resembles RMI)
How Would Health Care Application Define
Resources?
MW+SOA-77
What Does an Actual System Look Like?
CSE
5810
Java
GUI
UDB Client
UDBServer Service
GetClasses();
PreReqCourse();
GetVacantClasses();
EnrollCourse();
AddCourse();
RemoveCourse();
Java
GUI
MDB Client
JINI
Lookup
Service
MDBServer
GetParts
GetRequisition
GetReqParts
WriteParts
WriteRequisition
DeletePart
DeleteRequisition
AddParts
RemovePart
AddRequisition
University DB
Resource (UDB)
Military
Requisition
DB
Resource
MW+SOA-78
Join, Lookup, and Service Invocation
CSE
5810
Request
Service
AddCourse(CSE900)
Lookup Service
Registry of Entries
Return
Service
Proxy to
AddCourse( )
Client
Service Object
Service Attributes
J Register & Lease Services
CourseDB Class
o
i Contains Method
AddCourse ( )
n
Service Invocation via Proxy
by Transparent RMI Call
Resource
Service Object
Service Attributes
1. Client Invokes AddCourse(CSE900) on Resource
2. Resource Returns Status of Invocation
MW+SOA-79
Services of Military Application

CSE
5810




Query Service:
 GetParts: Queries DB for Parts
 GetRequisition: Queries DB for Requisition
 GetReqParts: All Requisition Details for a
Particular Part
Update Service:
 WriteParts: Store Part to DB
 WriteRequisition: Requisition Changes to DB
 DeletePart: Deletes Part from DB
 DeleteRequisition: Deletes Requisition from DB
Other Services/Methods Omitted
Notice: These are Just Public Methods Organized into
Logical Groupings
JINI Allows Searching of Groupings by Service
MW+SOA-80
Execution Process of Client using JINI
CSE
5810
1 Register_Client(Harris,Security Off., Military)
Military
Client
4 Return Result,Create_Token(Security Off., Token)
2 Verify_UR(Harris, Security Off.)
5. Discover/Lookup(MilitaryDb,Modification,
CreateRequisition) Returns Proxy to Military Client
6 CreateRequisition(Token, Tank Details, Harris)
11 Return Result,CreateRequisition(…)
Lookup
Service
Security
Registration
Services
3 Client OK?
USR
Security
Authorization
Services
7 IsClient_Registered(Token)
9 Check_Privileges(Token, MilitaryDb, Modification,
CreateRequisition, [Tank Details, Harris])
MilitaryDB
Resource
8 Return Result of IsClient_Registered(…)
Security
Policy
Services
10 Return Result of Check_Privileges(…)
MW+SOA-81
Services Console
CSE
5810
MW+SOA-82
Services GUI
CSE
5810
MW+SOA-83
Jini
Jini Background
Embedded hardware is network-centric,
not disk-centric
 Networks are dynamic; so is Jini
 Object interface; not network protocol
 Service: A network-accessible device that
provides a useful function
 Client: Any user who requests services

Runtime Architecture

Federation of services
 No

central authority
Lookup Service
 Directory
of currently available services
 Services can be searched by clients
 Execution of services is independent of Jini
 As backup, Jini also allows network protocol
How Jini Works
Separation of Interface &
Implementation

Services may grant varying access to
clients
 Entire
service is downloaded and run locally
 Service object is a proxy to remote server

Methods are remote calls to service, which actually
does the work
 Both
local and remote objects share work
Separation of Interface &
Implementation


Client is not required to know network protocol
between proxy & service
Service responsible for service object; may
communicate using RMI, CORBA, DCOM, etc.
Jini Program Design

Player
 One

player for all Games
Games
 Separate
communication from game specific
rules
 Generalize common game tasks
Add/remove a player
 Take a turn
 Update Player state

Design – Games
Interface
GameProxy
Interface
Game
Interface
RemoteGame
BasicGameProxy
AbstractGame
TurnBasedGame
HangmanProxy BlackjackProxy
GuessingGame
Hangman
Blackjack
Design – Players
Interface
Player
PlayerImpl
(terminal based)
GuiPlayer
(GUI based)
Terminal and GUI
based clients have
same functionality.
Implementation
Lease
Jini
name service
Register
GameProxy
GameProxy
Lookup
Server
Remote Game
Player
addPlayer,
TakeTurn
addPlayer,
GameProxy TakeTurn
(local processing)
Implementation – Code samples
 Creating the server-side object:
Game impl = new GuessingGame();
RemoteGame implProxy =
(RemoteGame)exporter.export(impl);
 Creating the proxy:
smartProxy = new BasicGameProxy(implProxy);
 Registering the proxy:
ServiceItem item = new ServiceItem(null, smartProxy,
attrs);
…
reg = registrar.register(item, Lease.FOREVER);
Implementation – Code samples
(cont.)

Player taking a turn:
Player:
protected void takeTurn(String action){
game.takeTurn(action,id); }
 GameProxy – this version just forwards to remote
implementation:
public void takeTurn(String action, Object id)
throws RemoteException {
impl.takeTurn(action,id); }
…
player.setGameData(data);


The rules for the game could be in the RemoteGame
implementation, or the Game Proxy, or split between
them.
Web Service Oriented Architectures (WSOA)

CSE
5810


An SOA is often Cast in a Web-Based Setting
Possible Services include:
 Data Transfer (e.g. FTP) or Storage Service
 Troubleshooting Service
Service Operations (Messages) are Encapsulated
Behind a Message-Oriented Service Interface
 Hides Details of Service Implementation/Location
 Assumes an Architecture for Access
 Provides a Logical View that is Message-Oriented
 Available Service/Messages are Descriptively
Supplied for Purpose of Discovery/Lookup
 Network-Oriented
 Scalable – Add New Services/Extend Existing
Services for New/Improved Functionality
MW+SOA-97
WSOA in Practice

CSE
5810
From Web Services Architecture, W3C
A Web service is a software system designed to
support interoperable machine-to-machine
interaction over a network. It has an interface
described in a machine processable format
(specifically WSDL). Other systems interact with the
Web service in a manner prescribed by its description
using SOAP messages, typically conveyed using
HTTP with an XML serialization in conjunction with
other Web-related standards.
MW+SOA-98
Web Services Architecture from W3C

CSE
5810

Complex
Architecture with
Many Different
Capabilities and
Features
 Open Ended
(Like Web)
 Target Multiple
Domains/Usages
Current Web and
Future (Emerging?)
Semantic Web
MW+SOA-99
Another WSOA Example
CSE
5810
From: http://www.service-architecture.com/
MW+SOA-100
Another WSOA Example
CSE
5810
From: http://www.service-architecture.com/
MW+SOA-101
Service Oriented Architecture
& Grid Computing
Marc Brooks, The MITRE Corporation
The author's affiliation with The MITRE Corporation is provided
for identification purposes only, and is not intended to convey or
imply MITRE's concurrence with, or support for, the positions,
opinions or viewpoints expressed by the author.
What is Grid Computing?
“A computational grid is a hardware and software infrastructure
that provides dependable, consistent, pervasive, and
inexpensive access to high-end computational capabilities.”
-”The Grid: Blueprint for a New Computing Infrastructure”, Kesselman & Foster
Criteria for a Grid*:
1. Coordinates resources that are not subject
to centralized control.
2. Uses standard, open, general-purpose
protocols and interfaces.
3. Delivers nontrivial qualities of service
Source: “What is the Grid? A Three Point Checklist”, Ian Foster, Argonne National Laboratory & University of Chicago
Grid Computing Benefits

Exploit Underutilized resources

CPU Scavenging, Hotspot leveling
Resource Balancing
 Virtualize resources across an enterprise



Data Grids, Compute Grids
Enable collaboration for virtual
organizations
Two Key Grid Computing Groups
The Globus Alliance (www.globus.org)
 Composed of people from:
Argonne National Labs, University of Chicago, University of Southern
California Information Sciences Institute, University of Edinburgh and
others.

OGSA/I standards initially proposed by the Globus Group

Based off papers “Anatomy of the Grid” & “Physiology of the Grid”
The Global Grid Forum (www.ggf.org)
 History


Heavy involvement of Academic Groups and Industry


First meeting in June of 1999, Based off the IETF charter
(e.g. IBM Grid Computing, HP, United Devices, Oracle, UK e-Science
Programme, US DOE, US NSF, Indiana University, and many others)
Process

Meets three times annually
 Solicits involvement from industry, research groups, and academics
Companies involved in Grid Computing













Avaki
Axceleon
CapCal
Centrata
DataSynapse
Distributed Science
Elepar
Entropia.com
Grid Frastructure
GridSystems
Groove Networks
IBM
Intel











Jivalti
Mithral
Mind Electric
Mojo Nation
NewsToYou.com
NICE, Italy
Noemix, Inc.
Oracle
Parabon
Platform Computing
Popular Power
Source: http://www.gridcomputing.com/










Powerllel
ProcessTree
Sharman Networks Kazza
Sun Gridware
Sysnet Solutions
Tsunami Research
Ubero
United Devices
Veritas
Xcomp
Standards involved with SOA & Grid Computing
SOA Standards
 WSDL
 UDDI
 BPEL
 WS-Profile
 WS-Security
 WS-Choreography
And many others…
Grid Standards
 OGSI
 Extension
to WSDL
 WS-Resource
 WS-ResourceLifetime
 WS-
ResourceProperties
 WSRenewableReferences
 WS-ServiceGroup
 WS-BaseFaults
Grid and Web Services Standards
Started far
apart in
applications
&
technology
Have been
converging
WSRF
WS-I Compliant
Technology
Stack
Convergence of Core Technology Standards allows
Common base for Business and Technology Services
Service Oriented Architecture
“What is Service-Oriented Architecture?”. Hao He.
http://webservices.xml.com/lpt/a/ws/2003/09/30/soa.html
“Service-Oriented Architecture: A Primer”. Michael S. Pallos.
http://www.bijonline.com/PDF/SOAPallos.pdf
“The Benefits of a Service-Oriented Architecture”. Michael Stevens.
http://www.developer.com/design/article.php/1041191
Web Services Specifications - http://www.w3.org/2002/ws/
Grid Computing
Global Grid Forum (http://www.ggf.org)
The Globus Alliance ( http://www.globus.org)
“The Physiology of the Grid”. Ian Foster, Carl Kesselman, Jeffrey M.
Nick, Steven Tuecke. http://www.globus.org/research/papers/ogsa.pdf
“The Anatomy of the Grid”. Ian Foster, Carl Kesselman, Steven Tuecke.
http://www.globus.org/research/papers/anatomy.pdf
Web Services Resource Framework - http://www.globus.org/wsrf/
What is the Grid?
• The World Wide Web provides seamless access to information that
is stored in many millions of different geographical locations
• In contrast, the Grid is an emerging infrastructure that provides
seamless access to computing power and data storage capacity
distributed over the globe.
From: http://gridcafe.web.cern.ch/gridcafe/demos/Grid-beginners.ppt
What is the Grid?
• The term Grid was coined by Ian Foster and Carl
Kesselman (Grid bible “The Grid: blueprint for a new
computing infrastructure”).
• The name Grid is chosen by analogy with the
electric power grid: plug-in to computing power
without worrying where it comes from, like a toaster.
• The idea has been around under other names for a
while (distributed computing, metacomputing, …).
•This time, technology is in place to realise the
dream on a global scale.
How will it work?
• The Grid relies on advanced software, called middleware, which
ensures seamless communication between different computers and
different parts of the world
• The Grid search engine will not only find the
data the scientist needs, but also the data
processing techniques and the computing
power to carry them out
• It will distribute the
computing task to
wherever in the world
there is spare
capacity, and send the
result to the scientist
How will it work?
The GRID middleware:
• Finds convenient places for the scientists “job” (computing task) to be run
• Optimises use of the widely dispersed resources
• Organises efficient access to scientific data
• Deals with authentication to the different sites that the scientists will be
using
• Interfaces to local site authorisation
and resource allocation policies
• Runs the jobs
• Monitors progress
• Recovers from problems
… and ….
Tells you when the work is complete and transfers the result back!
What are the challenges?
Must share data between thousands of scientists with multiple
interests
Must link major computer centres, not just PCs
Must ensure all data accessible anywhere, anytime
Must grow rapidly, yet remain reliable for more than a decade
Must cope with different management policies of different centres
Must ensure data security: more is at stake than just money!
Must be up and running by 2007
Benefits for Science
• More effective and seamless collaboration of dispersed
communities, both scientific and commercial
• Ability to run large-scale applications comprising thousands of
computers, for wide range of applications
• Transparent access to distributed resources from your desktop,
or even your mobile phone
• The term “e-Science” has been coined to express these
benefits
Grid projects in the world
•UK e-Science Grid
•Netherlands – VLAM, PolderGrid
•Germany – UNICORE, Grid proposal
•France – Grid funding approved
•Italy – INFN Grid
•Eire – Grid proposals
•Switzerland - Network/Grid proposal
•Hungary – DemoGrid, Grid proposal
•Norway, Sweden - NorduGrid
•NASA Information Power Grid
•DOE Science Grid
•NSF National Virtual Observatory
•NSF GriPhyN
•DOE Particle Physics Data Grid
•NSF TeraGrid
•DOE ASCI Grid
•DataGrid (CERN, ...)
•DOE Earth Systems Grid
•EuroGrid (Unicore)
•DARPA CoABS Grid
•DataTag (CERN,…)
•NEESGrid
•Astrophysical Virtual Observatory
•DOH BIRN
•GRIP (Globus/Unicore)
•NSF iVDGL
•GRIA (Industrial applications)
•GridLab (Cactus Toolkit)
•CrossGrid (Infrastructure Components)
•EGSO (Solar Physics)
Grid Applications for Science
• Medical/Healthcare (imaging, diagnosis and
treatment )
• Bioinformatics (study of the human genome and
proteome to understand genetic diseases)
• Nanotechnology (design of new materials from the
molecular scale)
• Engineering (design optimization, simulation, failure
analysis and remote Instrument access and
control)
• Natural Resources and the Environment
(weather forecasting, earth observation, modeling
and prediction of complex systems)
Medical/Healthcare Applications
• Digital image archives
• Collaborative virtual environments
• On-line clinical conferences
“The Grid will enable a
standardized, distributed digital
mammography resource for
improving diagnostic
confidence"
“The Grid makes it possible to use
large collections of images in new,
dynamic ways, including medical
diagnosis.”
“The ability to visualise 3D
medical images is key to
the diagnosis of
pathologies and presurgical planning”
Quotes from: http://gridoutreach.org.uk
Bioinformatics
• Capturing the complex and evolving patterns of genetic
information, determining the development of an embryo
• Understanding the genetic interactions that underlie the processes
of life-form development, disease and evolution.
“Every time a new genome
is sequenced the result is
compared in a variety of
ways with other genomes.
Each code is made of 3.5
billion pairs of chemicals…”
Nanotechnology
• New and 'better' materials
• Benefits in pharmaceuticals, agrochemicals, food production,
electronics manufacture from the faster, cheaper discovery of new
catalysts, metals, polymers, organic and inorganic materials
“The Grid has the potential
to store and analyze data on
a scale that will support
faster, cheaper synthesis of
a whole range of new
materials.”
Quotes from: http://gridoutreach.org.uk
Natural Resources/Environment
• Modeling and prediction of earthquakes
• Climate change studies and weather forecast
• Pollution control
• Socio-economic growth planning, financial modeling and
performance optimization
“Federations of
heterogeneous databases
can be exploited through
the Grid to solve complex
questions about global
issues such as
biodiversity.”
Quotes from: http://gridoutreach.org.uk
Precursors of the Grid
• SETI@home: sharing of spare PC processing power to analyze
radio signals
• Napster: sharing of data (music) between computers
• Entropia DCGrid: commercial solution for sharing workstations
within a company
The difference:
The Grid CERN is developing will combine resources at major
computer centers, and require dedicated equipment and
sophisticated middleware to monitor and allocate resources
SETI@home: a grassroots Grid
>1 million years of computer processing time
>3.5 million have downloaded the screensaver
>30 Teraflops rating (ASCI White = 12 Teraflops)
Spinoff from SETI@home
Spawned a cottage industry
Xpulsar@home, Genome@home, Folding@home,
evolutionary@home, FightAIDS@home, SARS@home...
Spawned a real industry
Entropia, United Devices, Popular Power...
Major limitations:
Only suitable for “embarrasingly parallel” problems
Cycle scavenging relies on goodwill
Who will use Grids?
• Computational scientists & engineers: large scale
modeling of complex structures
• Experimental scientists: storing and analyzing large
data sets
• Collaborations: large scale multi-institutional projects
• Corporations: global enterprises and industrial
partnership
• Environmentalists: climate monitoring and modeling
• Training & education: virtual learning rooms and
laboratories
Comments on Grid Computing

CSE
300


What is Applicability of Grid Computing to the
Medical Domain and its Applications?
Let’s Review Three Other Presentations Briefly
 http://www.aciagir.org/publis/posterAgirParistic2006.PPT
 http://bmi.osu.edu/resources/presentations/BISR_o
verview_poster.ppt
 http://www.dma.unina.it/~murli/ISSGC06/session
31.5/ISSGC06%20Experience%20with%20biome
d%20applications%20v1.ppt
All Links on Course Web Page
MW+SOA-126
Final Comments

CSE
300


Three Converging Technologies:
 Classic (CORBA) and Emerging (Jini, .NET)
Middleware
 Web-Based Service Oriented Architectures and
Computing
 Grid Computing
Think back to “Macro Architectures”
 Systems of Systems
 Old + New
 Centralized + Distributed
 Solving “Huge” Problems
 Facilitating Access (Services)
How Does Cloud Computing Fit In?
MW+SOA-127
Download