Middleware

Petr Tůma

This is a work in progress material created to support the Charles University Middleware lecture. It is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

This is version 113f3628aed7e29143e321c6c5a966089a516d58 (modified) generated on 2024-04-22 09:34:59. For the latest version, check http://d3s.mff.cuni.cz/teaching/nswi080.


Table of Contents

1. Concepts
1.1. Architectures
1.1.1. Client-Server
1.1.2. Distributed Objects
1.1.3. Messaging
1.1.4. Message Bus
1.2. Serialization
1.2.1. Textual
1.2.2. Binary
1.3. Protocols
1.3.1. Reliability
1.3.2. Atomicity
1.3.3. Multicast Membership
1.3.4. Multicast Reliability
1.3.5. Multicast Ordering
2. Systems
2.1. CORBA
2.1.1. Interface Definition Language
2.1.2. Language Mapping
2.1.3. Object Adapter
2.1.4. Messaging
2.1.5. Components
2.2. Data Distribution Service (DDS)
2.2.1. Reliability Related Policies
2.2.2. Presentation Related Policies
2.2.3. History Related Policies
2.2.4. Timing Related Policies
2.2.5. Miscellaneous Policies
2.3. Enterprise JavaBeans (EJB)
2.3.1. EJB Architecture
2.3.2. Session Objects
2.3.3. Message Driven Objects
2.3.4. Entity Objects
2.3.5. Transactions
2.4. etcd
2.4.1. Etcd Data Model
2.4.2. Put Request
2.4.3. Range Request
2.4.4. Transaction Request
2.4.5. Watch Request
2.4.6. Lease Request
2.4.7. Lock Request
2.4.8. Leader Election Request
2.5. Felix
2.5.1. iPOJO Service Requirement
2.5.2. iPOJO Service Provision
2.5.3. iPOJO Lifecycle Management
2.6. FlatBuffers
2.6.1. Schema Language
2.6.2. C++ Generated Code Basics
2.7. gRPC
2.7.1. Interface Description Language
2.7.2. C++ Server Code Basics
2.7.3. Java Server Code Basics
2.7.4. Python Server Code Basics
2.7.5. C++ Client Code Basics
2.7.6. Java Client Code Basics
2.7.7. Python Client Code Basics
2.8. Hazelcast
2.8.1. Hazelcast Architecture
2.8.2. Distributed Collections
2.8.3. IMap Interface
2.8.4. Distributed Communication
2.8.5. Distributed Coordination
2.9. JGroups
2.9.1. Channels
2.9.2. Building Blocks
2.9.3. Protocol Modules
2.10. Java Message Service (JMS)
2.10.1. Architecture
2.10.2. Destinations
2.10.3. Messages
2.10.4. Producers and Consumers
2.11. Apache Kafka
2.11.1. Kafka Architecture
2.11.2. Kafka Producer Interface
2.11.3. Kafka Consumer Interface
2.11.4. Kafka KStream Interface
2.11.5. Kafka KGroupedStream Interface
2.11.6. Kafka Processor Interface
2.11.7. Kafka KeyValueStore Interface
2.12. Memcached
2.12.1. Architecture
2.12.2. Usage Example
2.13. Message Passing Interface (MPI)
2.13.1. Architecture
2.13.2. Point-To-Point Communication
2.13.3. Collective Communication
2.13.4. Virtual Process Topologies
2.13.5. Remote Memory Access
2.14. Open Services Gateway Initiative (OSGi)
2.14.1. Bundles
2.14.2. Services
2.15. Protocol Buffers (protobuf)
2.15.1. Message Description Language
2.15.2. C++ Generated Code Basics
2.15.3. Java Generated Code Basics
2.15.4. Python Generated Code Basics
2.16. Redis
2.16.1. Data Model
2.16.2. Database
2.16.3. Publish Subscribe
2.16.4. Transactional Command Execution
2.16.5. Scripting
2.17. Java Remote Method Invocation (RMI)
2.17.1. Interface
2.17.2. Implementation
2.17.3. Lifecycle
2.17.4. Naming
2.18. Sun RPC
2.18.1. Interface Definition Example
2.18.2. Portmapper Services Example
2.19. Apache Thrift
2.19.1. Interface Description Language
2.19.2. C++ Server Code Basics
2.19.3. C++ Client Code Basics
2.20. Web Services
2.20.1. SOAP
2.20.2. WSDL
2.20.3. BPEL
2.21. 0MQ
2.21.1. Sockets
2.21.2. Patterns
2.22. Apache ZooKeeper
2.22.1. Architecture
2.22.2. Interface
2.22.3. Recipes