Objectives of the teaching unit
After this teaching unit, you should be able to:- Identify and use the main interaction patterns between distributed components (synchronous call, callbacks, orchestration, asynchronous calls, publish/subscribe) through the study and practise of several middleware (RestFul Services, Web Services, AMQP, JavaEE).
- Design and implement a distributed application made of several functional modules with computing components, persistent components, client components. The application will be realised in the context of a microproject lasting during all the teaching unit.
- Identify design patterns and architectural patterns used by middleware for distributed applications.
- Define the quality of a distributed architecture and discuss architecture choices to respond to quality of software architecture requirements (e.g. interoperability, security, scalability).
Sequencing
-
SubjectMaterialKey notions
-
Software InstallationTODO beforeTODOLecture 1
Tue. 17/09 PMIntroductionIntroduction- Middleware, interaction styles, application servers, component-based architecture
- Introduction to design patterns for distribution
Software architectureSoftware architecture- Introduction to software architecture
- Quality attributes: In the report, we ask you to analyse the architecture of the application with regard to two quality attributes chosen among 6, the following chapters may help you.
- Software architecture, views, attribute-driven design, quality attributes, tactics, architectural patterns
TODOTODOTODO- Read carefully the subject of the microproject.
- Be aware of the prerequisites and do the necessary home work to be operational, with java tutorial, and relational database tutorial.
- Discover maven (it will be used during labs and microproject)
- Read "Maven by example" Chapter "Customizing a Maven Project"
- Make the tutorial "Maven Getting Started Guide"
- Read "Maven by example" Chapter "A Simple Web Application"
- Read "Maven by example" Chapter "A Multi-module Project"
Lecture 2
Fri. 20/09 PMComponent middlewareComponent middleware- Component Middleware
- JavaEE Lab 1 — Stateless and Stateful Beans
- Explanations on code samples
- Notion of interface, component, container, application server
- Functional vs extra-functional services
- Enterprise JAVA Beans, RMI-IIOP, JAVA Naming and directory interface, Persistence
- Stateless/Stateful Session bean, Annotations, Asynchronous Method Invocation (Future)
Lectures 3 and 4
Tue. 24/09 PM and Fri. 27/09 PMComponent middleware and MicroservicesComponent middleware and Introduction to microservices with Docker- Entity bean, Multiplicities (one-to-one, one-to-many, many-to-one, many-to-many)
- Persistence management mode, container-managed, bean-managed, persistence context
- System container, Docker, Microservices
Fri. 27/09
10:00 to 12:00ConferenceConferenceLectures 3 and 4
Fri. 27/09 PMMicroprojectMicroprojectWork on microproject - TourManagement partHome WorkTODOTODO before Tue. 01/10 noon- Provide class diagrams for the TourManagement component of the microproject representing the information in the database.
- Implement the TourManagement component of the microproject with EJBs and return your code with a tag on gitlabense;
- Return these 2 elements (code and class diagrams). You will then have time to update this first version.
Lectures 6 & 7
Tue. 01/10
and Fri. 04/10 PMREST Web ServicesREST- Architectural style, WWW, RESTful, REST resource
- CRUD (HTTP): Create (POST), Read (GET), Update (PUT), Delete (DELETE)
- JAXB, Format (plain text, html, xml, json [JavaScript Object Notation], image, video),
- JAXB (JAVA Architecture for XML Binding), serialisation, Un/Marshalling, Annotations
- JAX-RS, RESTful WebServices, Annotations
Home WorkTODOTODO- Finish REST lab on git before Thursday October 10th at midnight and put a tag called "REST".
Lecture 8
Tue. 8/10 PMConferenceConferenceLecture 9
Fri. 11/10 PMConferenceConferenceLecture 10
Tue. 15/10 PMPublish-subscribe middleware (1/4)Publish-subscribe middleware (1/4)- Lecture DEBS — Basics (1/3)
- DEBS with topic-based filtering — Lab to discover AMQP–RabbitMQ
- AMQP questions after the Topic-Based DEBS lab on RabbitMQ
- Event-based (a.k.a. publish-subscribe) (initiator = provider and adressee = indirect) versus request/reply, callback (a.k.a. observer/observable), anonymous request/reply
- EBS service: notification, advertise, subscribe, publish, notify, producer, consumer
- Notification filtering: channel-based, subject-based (a.k.a. topic-based), type-based, content-based
- AMQP: message queue, exchange, binding, binding and routing keys, wildcards (/, # and *)
Home WorkTODOTODO- Finish the study of the questions on RabbitMQ
Lecture 11
Fri. 18/10 PMPublish-subscribe middleware (2/4)Publish-subscribe middleware (2/4)- Lecture DEBS — Basics (2/3)
- DEBS with topic-based filtering — Lab to discover MQTT–Mosquitto
- DEBS Lab on the microproject — group communication system
- DEBS Lab on the microproject — integration phase
- MQTT: QoS0/"At most once", QoS1/"At least once", QoS2/"Exactly once", session and CleanSessions, and RETAIN flag, wildcards (/, #, and +)
Home WorkTODOTODO- Finish the study of the Lab on MQTT
- Work on the microproject: group communication and integration phase
Lectures 12 and 13
Tue. 22/10 PM and Fri. 25/10 PMPublish-subscribe middleware (3—4/4)Publish-subscribe middleware (3—4/4)- Lecture DEBS — Basics (3/3)
- DEBS Lab on the microproject — adding authentication
- DEBS Lab on the microproject — lobby room
- AMQP, virtual host, access control
- Kafka: cluster, partitioned log, structured commit log, topic, consumers join groups, leader and followers, total order within a partition
Home WorkTODOTODO- Return Microproject on gitlabense before Wednesday November, 6th at 6:00 pm and put a tag called "FINAL VERSION" on the "main" branch.
Defense
Fri. 08/11DefenseMicroproject