The Component System … a bit further

Slides:



Advertisements
Similar presentations
Agents & Mobile Agents.
Advertisements

Tutorials 2 A programmer can use two approaches when designing a distributed application. Describe what are they? Communication-Oriented Design Begin with.
One.box Distributed home service interface. Core Components Pop3 client Router Storage Pop3 Server.
Lightweight Remote Procedure Call Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, Henry M. Levy ACM Transactions Vol. 8, No. 1, February 1990,
Server Architecture Models Operating Systems Hebrew University Spring 2004.
Communication in Distributed Systems –Part 2
ECSE Software Engineering 1I HO 7 © HY 2012 Lecture 7 Publish/Subscribe.
© DSRG 2001www.cs.agh.edu.pl Cross Grid Workshop - Kraków Krzysztof Zieliński, Sławomir Zieliński University of Mining and Metallurgy {kz,
Community Manager A Dynamic Collaboration Solution on Heterogeneous Environment Hyeonsook Kim  2006 CUS. All rights reserved.
Client/Server Software Architectures Yonglei Tao.
Lecture 4: Parallel Programming Models. Parallel Programming Models Parallel Programming Models: Data parallelism / Task parallelism Explicit parallelism.
Reactive Extensions Ye olde introduction and walk-through, with plenty o’ code.
Architecting Web Services Unit – II – PART - III.
Design Patterns: Structural Design Patterns
Remote Procedure Calls Adam Smith, Rodrigo Groppa, and Peter Tonner.
Architectures of distributed systems Fundamental Models
In the name of Allah The Proxy Pattern Elham moazzen.
Deferred Messaging Brown Bag 1. Agenda 2 Background Solution Implementation Details Additional Information.
Real Time Systems Modeling Structure in UML (Part I)
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
Introduction to Java Beans CIS 421 Web-based Java Programming.
Jini Architecture Alessandro Brawerman. Contents Jini definition Advantages Architecture How it works Websites to check.
Electronic Payment Systems (1)
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
Eric Tryon Brian Clark Christopher McKeowen. System Architecture The architecture can be broken down to three different basic layers Stub/skeleton layer.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Secure middleware patterns E.B.Fernandez. Middleware security Architectures have been studied and several patterns exist Security aspects have not been.
1 Distributed Systems Distributed Object-Based Systems Chapter 10.
Policy-Based Dynamic Negotiation for Grid Services Authorization Ionut Constandache, Daniel Olmedilla, Wolfgang Nejdl Semantic Web Policy Workshop, ISWC’05.
By Nitin Bahadur Gokul Nadathur Department of Computer Sciences University of Wisconsin-Madison Spring 2000.
Implementing Remote Procedure Call Landon Cox February 12, 2016.
© Oxford University Press 2011 DISTRIBUTED COMPUTING Sunita Mahajan Sunita Mahajan, Principal, Institute of Computer Science, MET League of Colleges, Mumbai.
Computer Science Lecture 4, page 1 CS677: Distributed OS Last Class: RPCs RPCs make distributed computations look like local computations Issues: –Parameter.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Object Interaction: RMI and RPC 1. Overview 2 Distributed applications programming - distributed objects model - RMI, invocation semantics - RPC Products.
Object Interaction: RMI and RPC 1. Overview 2 Distributed applications programming - distributed objects model - RMI, invocation semantics - RPC Products.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
How Android Starts an App
Advanced Topics in Concurrency and Reactive Programming: Asynchronous Programming Majeed Kassis.
middleware a guide to middleware construction (roughly) based on Boris
Extending Java RMI for Dynamic Reconfiguration
Distributed Components and Futures: Models and Challenges
Knowledge Byte In this section, you will learn about:
Programming Models for Distributed Application
Gabor Madl Ph.D. Candidate, UC Irvine Advisor: Nikil Dutt
Distributed Systems - Comp 655
Lecture 3 From process-oriented to agent-oriented programming.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
DISTRIBUTED COMPUTING
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
Architectures of distributed systems Fundamental Models
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Time And Global Clocks CMPT 431.
Architectures of distributed systems Fundamental Models
Bond-Jini Interoperability
JINI ICS 243F- Distributed Systems Middleware, Spring 2001
Distribution Infrastructures
Could Jiro™ Extend the Jini™ Pattern Lanuguage?
Indirect Communication Paradigms (or Messaging Methods)
Indirect Communication Paradigms (or Messaging Methods)
Architectures of distributed systems
Ch 17 - Binding Protocol Addresses
Architectures of distributed systems Fundamental Models
11. MVC SE2811 Software Component Design
11. MVC SE2811 Software Component Design
Presentation transcript:

The Component System … a bit further Contact: werner.van.belle@vub.ac.be

Catch up Component System Component Asynchronous message delivery Scheduling Naming Service Component Own code & data space Reactive

Sending Messages ?  To contact another component the Httpd can send a message to another component using the special .. Notation ...{... message RespondTo() {dispatcher(URL)..GenerateHtml(<Url:URL>);} ...}

Use of the Architecture Implementing timing contracts The generation of ‘glue’ components The generation of interface adaptors

Problems we encountered Unable to monitor components Unable to filter messages towards components Unable to filter messages from components

Filtering messages to a component Write a stub, with the same interface Difficult to adapt at runtime Need a stub object for every real object

Filtering Messages from a component Place stubs at all possible receivers of the object Requires a lot of stub-management Very difficult if receivers already exists

What we need Better meta level architecture Dynamic incoming wrappers Dynamic outgoing wrappers Write these wrappers as components

Proxy-tables (i) Before sending a message, the CS checks whether there is a proxy. If there is one, we wrap the message in an SendMessage(<Message:..>) message and queue it. Otherwise the message goes to the scheduler

Proxy-tables (ii) Before receiving a message, the CS checks whether there is a proxy. If there is one, we wrap the message in an ReceiveMessage(<Message:..>) message and queue it. If there is an immediate target, we call receiveMessage upon the target. Otherwise, we wrap the message in an Undeliverable(<Message:…>) message and queue it.

Filtering all Incoming messages (i)

Filtering all Incoming messages (ii) A, B

Filtering all Incoming messages (iii) A, C A__, B

Filtering all Outgoing messages (i)

Filtering all Outgoing messages (ii) D

Filtering all Outgoing messages (iii) D E A

Combining both E D A_ A, C A__, B / A_ B A__ C D A E Recving proxy Sending proxy sender/receiver E D A_ A, C A__, B

Meta Level Architecture Introspection Look at components Absorption Change the behavior of components Can we change the component system ?

The CS as a Component The component system has become a component itself. componentsystem.CreateComponent(…) “ComponentSystem”..CreateComponent(…)

The CS as a Component The component system has become a component itself. componentsystem.DestroyComponent(…) “ComponentSystem”..DestroyComponent(…)

The CS as a Component The component system has become a component itself except for sendMessage & receiveMessage componentsystem.sendMessage(…) componentsystem.receiveMessage(…)

Let’s Try It: The Portal When creating a component, the instance name has to be prefixed with the name of the machine When sending a messages to a local undeliverable target, we forward it to the effective machine. When receiving a forwarded message, we send it through to the actual target

The Portal (i) ComponentSystem

The Portal (i) ComponentSystem Portal __ComponentSystem

The Portal (ii): Creation Instance Create ComponentSystem Portal send recv __ComponentSystem

The Portal (ii): Forwarding IncomingMsg Portal II ComponentSystem Portal sendMessage Undeliverable __ComponentSystem

Advantages of using a CS Composing applications by means of glue components Much better MLA for distributed environments Constraints can be checked Semantic information can be extracted Plugable architecture: Scheduling can be domain dependent Testing of components on target architecture Contract plugins

The End

Xtra: Threads vs Events (i) Some concurrency problems are unavoidable Deadlocks Race Conditions Access to Shared Data

Xtra: Thread vs Events (ii) Threads Require a Shared Data Space Locking problems Events Easy in distributed environments Adds semantic information X Logical processes can be mapped upon Y actual processes.

Xtra: Why No Jini ? Not suitable for a large number of small components 2 pages to look up a service 2 pages to publish a service Java RMI is not suitable as a paradigm Listen … listen … listen… Wait … wait … wait … No pluggable architecture Discovery protocol cannot be adapted Error resolution strategy is fixed