Title: Introduction to Middleware for Software Engineering
1Introduction to Middleware for Software
Engineering
2What is Middleware?
- Mediates heterogeneities (differences)
- Defines standard protocols for distributed
computing - Abstracts details of using protocols
- Programmers use abstractions
- Abstractions implement protocols
- Provided as off-the-shelf software
- Not traditionally integrated in the operating
system
3Problems with Distribution
4Some Middleware Categories
- Remote Procedure
- Object-oriented
- Component Containers
- Message-oriented
5Procedural Middleware
- Problems Addressed
- Tedious to build distributed applications with
sockets - Heterogeneous data types
- Memory management (buffers)
- Network failures
- Approach
- Compiler generated socket code
- Socket code becomes the assembly language
- Examples
- Sun RPC
- SOAP
6RPC Approach
- Define function signatures using an interface
definition language (IDL) - IDL ensures compatibility across platforms
7RPC Approach
PL
PL
PL
PL
2
1
2
1
PL
PL
PL
PL
IDL
6
3
6
3
PL
PL
PL
PL
5
4
5
4
Text and Graphics from Prof. Wolfgang Emmerich,
University College, London
8RPC Approach
- IDL is compiled into generated stubs
9Object Middleware
- Problem Addressed
- Tedious to build distributed applications with
RPC - Extensibility is hard
- Difficult to manage stateful resources
- Approach
- Distributed Objects
- Examples
- CORBA
- Java RMI
- DCOM
10Object Approach
- Interface inheritance allows server to add new
features without invalidating clients - Client can create and destroy instances of
objects which live on server - Client maintains distinct stub instances for each
distributed object - Objects can be migrated and/or replicated
11Containers
- Problem Addressed
- Hard to manage crosscutting concerns
- Approach
- Declarative Services
- O/R Mapping
- Examples
- Enterprise Java Beans
- COM (.NET)
- Spring Framework
12CORBA-style method
transfer(int amount,int account1, int account2)
/ Apply access control / / Signal
beginning of transaction / / Update Database
for account1 / / Update Database for account2
/ / Signal Commit or Rollback of Transaction
/ Programmer must handle persistence,
transactions, security
13EJB-style method
- _at_TransactionAttribute(REQUIRED)
- _at_ Interceptor(AccountSecurity.class)
- transfer (int amount, Account account1, Account
account2) / Update Account 1 / - / Update Account 2 /
-
- Many details taken care of by container
14How the container intervenes
EJBContainer
15Message-Oriented Middleware
- Problems Addressed
- High-coupling between client and server
- Approach
- Message Queuing
- Temporal Decoupling
- Pub-Sub
- Referential Decoupling
- Can be combined
- Examples
- MSMQ
- MQSeries
16Point-to-Point
17Pub-Sub
- Messages delivered through router infrastructure
- Deliver is based on topic subscriptions
NEC AMD
Subscriber
Router
Router
IBM
Subscriber
IBM
Publisher
18Conclusion
- Evolution of RPC to Containers and MOM
- We will look at
- Using AOP to implement middleware
- Applying AOP to distributed application
programming - Distributed AOP
- Designing new kinds of middleware (mobile, P2P,
service-oriented)