190 likes | 373 Views
Introduction to Middleware for Software Engineering. Eric Wohlstadter 539D. What is Middleware?. Mediates heterogeneities (differences) Defines standard protocols for distributed computing Abstracts details of using protocols Programmers use abstractions Abstractions implement protocols
E N D
Introduction to Middleware for Software Engineering Eric Wohlstadter 539D
What 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
Some Middleware Categories • Remote Procedure • Object-oriented • Component Containers • Message-oriented
Procedural 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
RPC Approach • Define function signatures using an interface definition language (IDL) • IDL ensures compatibility across platforms
RPC Approach PL PL PL PL 1 2 1 2 PL PL PL IDL PL 6 3 6 3 PL PL PL PL 5 4 5 4 Text and Graphics from Prof. Wolfgang Emmerich, University College, London
RPC Approach • IDL is compiled into generated stubs
Object 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
Object 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
Containers • Problem Addressed • Hard to manage crosscutting concerns • Approach • Declarative Services • O/R Mapping • Examples • Enterprise Java Beans • COM+ (.NET) • Spring Framework
CORBA-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…
EJB-style method @TransactionAttribute(REQUIRED) @ Interceptor(AccountSecurity.class) transfer (int amount, Account account1, Account account2) {/* Update Account 1 */ /* Update Account 2 */ } Many details taken care of by container
EJBContainerServices EJBRemoteobject EJB How the container intervenes EJBContainer
Message-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
Pub-Sub Messages delivered through router infrastructure Deliver is based on topic subscriptions NEC && AMD Subscriber Router Router IBM IBM Subscriber Publisher
Conclusion • 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)