Suchen und Finden
Contents
6
Preface
10
1 Introduction
12
1.1 Research Goal
14
1.2 Overview of Approach
15
1.3 Limitations
15
1.4 Hypothesis Statement
16
1.5 Contribution
16
1.6 Publications Overview
16
1.7 Book Structure
17
2 Distributed Systems Development
18
2.1 Introduction
18
2.2 Sockets-Based Programming
19
2.2.1 BSD Socket Interface
20
2.2.2 Socket Example
21
2.2.3 Summary
24
2.3 Remote Procedure Calls
24
2.3.1 Stubs and Skeletons
25
2.3.2 Interface Definition Language
26
2.3.3 Data Representation
27
2.3.4 Calls Semantics
27
2.3.5 Binding
29
2.3.6 Open Network Computing (ONC) Example
29
2.3.7 Summary
32
2.4 CORBA
32
2.4.1 CORBA Event Service
34
2.4.2 CORBA Example IDL
34
2.4.3 CORBA Example Implementation
36
2.4.4 Summary
36
2.5 Java Remote Method Invocation (RMI)
36
2.5.1 RMI Example
41
2.5.2 Summary
43
2.6 Message-Oriented Middleware
44
2.6.1 Message Queues
45
2.6.2 Publish/Subscribe
47
2.6.3 Durable Topics
49
2.7 Chapter Summary
49
3 An Aspect-Oriented Approach
51
3.1 Introduction
51
3.2 Crosscutting Concerns and Aspects
51
3.3 AOP Semantics
52
3.4 Static and Dynamic Weaving
53
3.5 Language-Based Implementations
54
3.5.1 AspectJ
54
3.6 Framework-Based Implementations
57
3.6.1 The JBoss AOP Framework
58
3.7 AOP and Autonomics
61
3.7.1 The TOSKANA Toolkit
63
3.7.2 The QuO Toolkit
65
3.7.3 Reflection and AOP
66
3.8 AOP and the Distribution Concern
67
3.8.1 Domain-Specific Aspect Language Implementations
68
3.8.2 AspectJ Implementations
72
3.8.3 J-Orchestra
73
3.8.4 Other Systems
73
3.8.5 Our Approach
74
3.9 Chapter Summary
74
4 The Distribution Definition Language
77
4.1 Introduction
77
4.2 Motivation and Design Principles
77
4.2.1 Issues with Distributed Systems Development
77
4.2.2 Autonomic Computing
78
4.2.3 Separation of Concerns
79
4.2.4 Simplicity
79
4.3 The Distribution Definition Language
79
4.3.1 Comments
80
4.3.2 Keywords
80
4.3.3 Import Statements
80
4.3.4 Service Statement
80
4.3.5 Service Recovery Statements
81
4.3.6 Protocol Statements
82
4.3.7 Options Statements
82
4.3.8 Pointcut Statements
82
4.4 Influences
83
4.5 Current Limitations
84
4.5.1 Callbacks
84
4.5.2 Object Passing
84
4.5.3 Concurrency
85
4.6 Chapter Summary
85
5 The RemoteJ Compiler/GeneratorImplementation
86
5.1 Introduction
86
5.2 Compiler/Generator Overview
86
5.2.1 Bytecode Rewriting
88
5.3 Recovery Implementation
89
5.4 RMI Protocol Implementation
93
5.4.1 RMI Protocol Implementation Overview
93
5.4.2 RMI Interface Generation Phase
95
5.4.3 RMI Server Generation Phase
96
5.4.4 RMI Client Generation Phase
96
5.4.5 RMI Server Bootstrap
96
5.5 JMS Protocol Implementation
97
5.5.1 JMS Protocol Implementation Overview
97
5.5.2 JMS Client Generation
98
5.5.3 JMS Server Generation
100
5.6 REST Protocol Implementation
100
5.6.1 REST Protocol Implementation Overview
101
5.7 Implementation Issues
102
5.8 Chapter Summary
103
6 Evaluation
105
6.1 Introduction
105
6.2 Adding a Protocol – a Case Study
106
6.2.1 The Event-Driven Model
106
6.2.2 Adding the Protocols
107
6.2.3 Testing and Evaluation
108
6.2.4 Summary
109
6.3 Evaluating Distributed Application Development in RemoteJ
110
6.3.1 Bank Example
111
6.3.2 Remote Desktop Example
113
6.3.3 Other Applications
115
6.3.4 Summary
115
6.4 Recovery Evaluation
117
6.4.1 Automatic Recovery
117
6.4.2 User-Defined Recovery Routines
120
6.4.3 Summary
123
6.5 Chapter Summary
123
7 Conclusions and Future Work
124
7.1 Introduction
124
7.2 Challenges and Design Decisions
125
7.2.1 Compiler/Generator
125
7.2.2 Language Features
125
7.2.3 Protocol Implementations
126
7.3 Future Work
126
7.3.1 Parameters and Return Values
126
7.3.2 Callback Support
127
7.3.3 Recovery
127
7.3.4 Autonomic Features
128
7.4 Conclusion
129
Appendix A: RemoteJ Syntax
130
References
132
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.