Autonomics Development: A Domain-Specific Aspect Language Approach

von: Paul Soule

Birkhäuser Basel, 2010

ISBN: 9783034605403 , 134 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 53,49 EUR

Mehr zum Inhalt

Autonomics Development: A Domain-Specific Aspect Language Approach


 

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