SlideShare ist ein Scribd-Unternehmen logo
1 von 209
Downloaden Sie, um offline zu lesen
Pattern-Oriented Software Architectures Patterns & Frameworks for  Concurrent & Distributed Systems   Dr. Douglas C. Schmidt [email_address] www.dre.vanderbilt.edu/~schmidt/ Professor of EECS Vanderbilt University Nashville, Tennessee
Tutorial Motivation Stand-alone Architecture ,[object Object],[object Object],Observations ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Key challenge: How can we reuse the these solutions effectively in a changing,  heterogeneous world? Networked  Architecture
Tutorial Outline ,[object Object],[object Object],[object Object],[object Object],Cover OO techniques & language features that enhance software quality Modalities e.g.,  MRI, CT, CR, Ultrasound, etc. ,[object Object],[object Object],[object Object],[object Object],[object Object]
Technology Trends (1/4) ,[object Object],[object Object],These advances stem largely from standard hardware & software APIs & protocols,  e.g.: ,[object Object],[object Object],[object Object],[object Object],[object Object]
Technology Trends (2/4) ,[object Object],[object Object],Process Automation Quality Control Avionics Mission Computing Modalities e.g., MRI, CT, CR, Ultrasound, etc. Electronic Medical Imaging Software Defined Radio Hot Rolling Mills
Technology Trends (3/4) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Component middleware is maturing & becoming pervasive … Security Replication Notification Persistence Scheduling A/V Streaming Load Balancing Container … … Middleware Bus Container …
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<CONFIGURATION_PASS> <HOME>  <…>  <COMPONENT> <ID> <…></ID> <EVENT_SUPPLIER> <…events this component supplies…> </EVENT_SUPPLIER> </COMPONENT> </HOME> </CONFIGURATION_PASS> Goal is  not  to replace programmers per se – it is to provide  higher-level domain-specific languages  for middleware developers & users Model driven development is integrating generative software technologies with QoS-enabled component middleware Technology Trends (4/4) Middleware Middleware Services DRE Applications Operating Sys & Protocols Hardware &  Networks Distributed system
The Evolution of Middleware There are multiple COTS middleware layers & research/business opportunities Historically, mission-critical apps were built directly atop hardware ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],There are layers of middleware, just like there are layers of networking protocols Hardware Applications Domain-Specific Services Common Middleware Services Distribution Middleware Host Infrastructure Middleware & OS Operating Systems  & Protocols
Operating System & Protocols ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],RTP DNS HTTP UDP TCP IP TELNET Ethernet ATM FDDI Fibre Channel FTP INTERNETWORKING ARCH TFTP 20 th  Century Win2K Linux LynxOS Solaris VxWorks Middleware Middleware Services Middleware Applications MIDDLEWARE ARCH 21 st  Century
Host Infrastructure Middleware ,[object Object],[object Object],Domain-Specific Services Common Middleware Services Distribution Middleware Host Infrastructure Middleware www.cs.wustl.edu/~schmidt/ACE.html Synchronization Memory Management Physical Memory Access Asynchronous Event Handling Scheduling Asynchronous Transfer of Control www.rtj.org ,[object Object],[object Object]
Distribution Middleware ,[object Object],Domain-Specific Services Common Middleware Services Distribution Middleware Host Infrastructure Middleware Distribution middleware avoids hard-coding client & server application dependencies on object location, language, OS, protocols, & hardware ,[object Object],[object Object],en.wikipedia.org/wiki/Data_Distribution_Service realtime.omg.org/
Common Middleware Services ,[object Object],Domain-Specific Services Common Middleware Services Distribution Middleware Host Infrastructure Middleware ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Domain-Specific Middleware ,[object Object],Domain-Specific Services Common Middleware Services Distribution Middleware Host Infrastructure Middleware Modalities e.g., MRI, CT, CR, Ultrasound, etc. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Consequences of COTS  & IT Commoditization ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Not all trends bode well for long-term competitiveness of traditional R&D leaders Ultimately, competitiveness depends on success of long-term R&D on  complex  distributed real-time & embedded (DRE) systems
Why We are Succeeding Now ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Revolutionary changes in software process & methods:   Open-source, refactoring, agile methods, advanced V&V techniques, model-driven development Patterns & Pattern Languages:  Generate software architectures by capturing recurring structures & dynamics & by resolving design forces Standards-based QoS-enabled Middleware:   Pluggable service & micro-protocol components & reusable “semi-complete” application frameworks
Example: Applying COTS in Real-time Avionics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Key Results
Example: Applying COTS to Time-Critical Targets ,[object Object],[object Object],[object Object],Challenges are  also relevant to TBMD & NMD ,[object Object],[object Object],[object Object],[object Object],[object Object],Key System Characteristics Key Solution Characteristics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example:   Applying COTS to Large-scale Routers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],www.arl.wustl.edu IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM IOM BSE BSE BSE BSE BSE BSE BSE BSE BSE Key Software Solution Characteristics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example:   Applying COTS to Software Defined Radios Key Software Solution Characteristics ,[object Object],[object Object],[object Object],www.omg.org/docs/swradio   Core Framework (CF) Commercial Off-the-Shelf (COTS) Applications OE Red Hardware Bus CF Services & Applications CORBA ORB & Services (Middleware) Network Stacks & Serial Interface Services Board Support Package (Bus Layer) Black Hardware Bus CF Services & Applications CORBA ORB & Services (Middleware) Network Stacks & Serial Interface Services Board Support Package (Bus Layer) Operating System Core Framework IDL Non-CORBA Modem Components Non-CORBA Security Components Non-CORBA I/O Components RF Modem Components Link, Network Components Security Components Modem Adapter Security Adapter Security Adapter I/O Adapter I/O Components MAC API LLC/Network API LLC/Network API Link, Network Components Security API Operating System Physical  API I/O API (“Logical Software Bus” via CORBA)
Example: Applying COTS to Hot Rolling Mills ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Key Software Solution Characteristics ,[object Object],[object Object],[object Object],[object Object],[object Object],www.siroll.de
Example: Applying COTS to Real-time Image Processing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],www.krones.com Key Software Solution Characteristics ,[object Object],[object Object],[object Object],[object Object],[object Object]
Key Opportunities & Challenges in Concurrent Applications ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Key Opportunities & Challenges in  Networked & Distributed Applications ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Overview of Patterns ,[object Object],[object Object],The Proxy Pattern 1 1 Proxy service Service service AbstractService service Client ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Overview of Pattern Languages ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Taxonomy of Patterns & Idioms Active Object, Bridge, Proxy, Wrapper Façade, & Visitor Capture the static & dynamic roles & relationships in solutions that occur repeatedly  Design patterns Half-Sync/Half-Async, Layers, Proactor,  Publisher-Subscriber, & Reactor Express a fundamental structural organization for software systems that provide a set of predefined subsystems, specify their relationships, & include the rules & guidelines for organizing the relationships between them Architectural patterns Optimize for common case, pass information between layers Document rules for avoiding common design & implementation mistakes that degrade performance Optimization principle patterns Scoped locking Restricted to a particular language, system, or tool Idioms Examples Description Type
Example:   Boeing Bold Stroke Product-line Architecture Nav Sensors Expendable Management Data Links Mission Computer Vehicle Mgmt Expendable Radar ,[object Object],[object Object],[object Object],[object Object],Bold  Stroke Architecture  Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services
Example:   Boeing Bold Stroke Product-line Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services
Example:   Boeing Bold Stroke Product-line Architecture ,[object Object],[object Object],[object Object],Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services
Example:   Boeing Bold Stroke Product-line Architecture ,[object Object],[object Object],[object Object],[object Object],Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services
Example:   Boeing Bold Stroke Product-line Architecture ,[object Object],[object Object],[object Object],Avionics Interfaces Operator Real World Model Infrastructure Services Push Control Flow Pull Data Flow Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services
Legacy Avionics Architectures Board 1 VME 1553 1: Sensors  generate  data Board 2 2: I/O via  interrupts 3: Sensor  proxies  process data  & pass to  missions functions 4: Mission  functions  perform  avionics  operations ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Legacy Avionics Architectures Board 1 VME 1553 1: Sensors  generate  data Board 2 2: I/O via  interrupts 3: Sensor  proxies  process data  & pass to  missions functions 4: Mission  functions  perform  avionics  operations ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Air Frame AP Nav WTS GPS IFF FLIR Cyclic  Exec ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Decoupling Avionics Components ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Solution Problems Context  Event * Subscriber consume creates receives Event Channel attachPublisher  detachPublisher attachSubscriber detachSubscriber pushEvent Filter filterEvent Publisher produce Structure  attachSubscriber produce pushEvent event event pushEvent consume detachSubscriber :  Event :  Subscriber :  Event Channel :  Publisher Dynamics
Applying the Publisher-Subscriber Pattern to Bold Stroke Board 1 VME 1553 1: Sensors  generate  data Board 2 2: I/O via interrupts 4: Event Channel  pushes events  to  subscribers(s) 5: Subscribers  perform  avionics  operations GPS IFF FLIR HUD Nav WTS Air Frame Publishers   Subscribers   push(event)  push(event)  Event Channel 3: Sensor  publishers  push events  to event  channel ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ensuring Platform-neutral & Network-transparent Communication Wrapper Facade Layers Component internal partitioning Remoting Error Lookup Requestor Object Adapter Container Facade Business Delegate Invoker Client Proxy OS abstraction request issuing request reception error notification Broker configuration component discovery request dispatching request dispatching b roker access component access component access component creation Message Publisher- Subscriber Factory Method request encapsulation publish- subscribe communication Broker ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Solution Problems Context
Ensuring Platform-neutral & Network-transparent Communication operation (params) connect send_request marshal unmarshal dispatch operation (params) result marshal receive_reply unmarshal result start_up register_service assigned port Dynamics  :  Broker :  Client Proxy :  Object Adapter : Client :  Server ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Solution Problems Context
Applying the Broker Pattern  to Bold Stroke Board 1 VME 1553 1: Sensors  generate  data Board 2 2: I/O via interrupts 5: Event Channel  pushes events  to  subscribers(s) 6: Subscribers  perform  avionics  operations GPS IFF FLIR HUD Nav WTS Air Frame Publishers   Subscribers   push(event)  push(event)  Event Channel 4: Sensor  publishers  push events  to event  channel ,[object Object],[object Object],[object Object],[object Object],[object Object],3: Broker handles I/O  via upcalls Broker ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],Benefits of Patterns www.cs.wustl.edu/ ~schmidt/patterns.html Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services GPS IFF FLIR HUD Nav WTS Air Frame Publishers   Subscribers   push(event)  push(event)  Event Channel Broker
[object Object],[object Object],[object Object],Limitations of Patterns www.cs.wustl.edu/ ~schmidt/patterns.html Hardware (CPU, Memory, I/O) Networking Interfaces Operating System Middleware Infrastructure Mission Computing Services GPS IFF FLIR HUD Nav WTS Air Frame Publishers   Subscribers   push(event)  push(event)  Event Channel Broker
Software Design Abstractions for  Concurrent & Networked Applications ,[object Object],[object Object],[object Object],[object Object],[object Object],MIDDLEWARE ,[object Object],[object Object],[object Object]
Overview of Frameworks Framework Characteristics  Application-specific functionality  ,[object Object],Networking  Database GUI  ,[object Object],Mission Computing E-commerce Scientific Visualization ,[object Object]
Comparing Class Libraries,  Frameworks, & Components Class  Libraries Frameworks Macro-level Meso-level Micro-level Borrow caller’s thread Inversion of control Borrow caller’s thread Domain-specific or Domain-independent Domain-specific Domain-independent Stand-alone composition entities “ Semi-complete” applications Stand-alone language entities Components Class Library Architecture ADTs Strings Locks IPC Math LOCAL  INVOCATIONS APPLICATION- SPECIFIC FUNCTIONALITY EVENT LOOP GLUE CODE Files GUI A  class  is a unit of abstraction & implementation in an OO programming language Framework Architecture ADTs Locks Strings Files INVOKES A  framework  is an integrated set of classes that collaborate to produce a reusable architecture for a family of applications Reactor  GUI DATABASE  NETWORKING APPLICATION-SPECIFIC FUNCTIONALITY CALLBACKS Middleware Bus Component Architecture A  component  is an encapsulation unit with one or more interfaces that provide clients with access to its services Naming Locking Logging Events
Using Frameworks Effectively ,[object Object],[object Object],[object Object],[object Object],Successful projects are therefore often organized using the “funnel” model
Overview of the ACE Frameworks ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Acceptor Connector Service Configurator Stream Reactor  Proactor Task  Application- specific  functionality
The Layered Architecture of ACE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],www.cs.wustl.edu/~schmidt/ACE.html
Key Capabilities Provided by ACE Service Access & Control Event Handling Concurrency Synchronization
The POSA2 Pattern Language ,[object Object],[object Object],[object Object],[object Object]
POSA2 Pattern Abstracts Service Access & Configuration Patterns The  Wrapper Facade  design pattern encapsulates the functions & data provided by existing non-object-oriented APIs within more concise, robust, portable, maintainable, & cohesive object-oriented class interfaces. The  Component Configurator  design pattern allows an application to link & unlink its component implementations at run-time without having to modify, recompile, or statically relink the application. Component Configurator further supports the reconfiguration of components into different application processes without having to shut down & re-start running processes. The  Interceptor  architectural pattern allows services to be added transparently to a framework & triggered automatically when certain events occur. The  Extension Interface  design pattern allows multiple interfaces to be exported by a component, to prevent bloating of interfaces & breaking of client code when developers extend or modify the functionality of the component. Event Handling Patterns The  Reactor  architectural pattern allows event-driven applications to demultiplex & dispatch service requests that are delivered to an application from one or more clients. The  Proactor  architectural pattern allows event-driven applications to efficiently demultiplex & dispatch service requests triggered by the completion of asynchronous operations, to achieve the performance benefits of concurrency without incurring certain of its liabilities. The  Asynchronous Completion Token  design pattern allows an application to demultiplex & process efficiently the responses of asynchronous operations it invokes on services. The  Acceptor-Connector  design pattern decouples the connection & initialization of cooperating peer services in a networked system from the processing performed by the peer services after they are connected & initialized.
POSA2 Pattern Abstracts  (cont’d) Synchronization Patterns The  Scoped Locking  C++ idiom ensures that a lock is acquired when control enters a scope & released automatically when control leaves the scope, regardless of the return path from the scope. The  Strategized Lockin g design pattern parameterizes synchronization mechanisms that protect a component’s critical sections from concurrent access. The  Thread-Safe Interface  design pattern minimizes locking overhead & ensures that intra-component method calls do not incur ‘self-deadlock’ by trying to reacquire a lock that is held by the component already. The  Double-Checked Locking Optimization  design pattern reduces contention & synchronization overhead whenever critical sections of code must acquire locks in a thread-safe manner just once during program execution. Concurrency Patterns The  Active Object  design pattern decouples method execution from method invocation to enhance concurrency & simplify synchronized access to objects that reside in their own threads of control. The  Monitor Object  design pattern synchronizes concurrent method execution to ensure that only one method at a time runs within an object. It also allows an object’s methods to cooperatively schedule their execution sequences. The  Half-Sync/Half-Async  architectural pattern decouples asynchronous & synchronous service processing in concurrent systems, to simplify programming without unduly reducing performance. The pattern introduces two intercommunicating layers, one for asynchronous & one for synchronous service processing. The  Leader/Followers  architectural pattern provides an efficient concurrency model where multiple threads take turns sharing a set of event sources in order to detect, demultiplex, dispatch, & process service requests that occur on the event sources. The  Thread-Specific Storage  design pattern allows multiple threads to use one ‘logically global’ access point to retrieve an object that is local to a thread, without incurring locking overhead on each object access.
Implementing the Broker Pattern  for Bold Stroke Avionics ,[object Object],[object Object],www.omg.org ,[object Object],[object Object],2.  Communication  Resources ,[object Object],Request  Buffering Protocol Properties Explicit Binding Client Propagation & Server Declared Priority Models Portable Priorities Thread Pools Static Scheduling  Service Standard Synchonizers
Example of Applying Patterns & Frameworks to Middleware : Real-time CORBA & The ACE ORB (TAO) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],www.cs.wustl.edu/~schmidt/TAO.html ,[object Object],[object Object],[object Object],[object Object],Protocol  Properties Explicit Binding Thread  Pools Scheduling Service Standard Synchronizers Portable Priorities End-to-end Priority Propagation
Key Patterns Used in TAO www.cs.wustl.edu/~schmidt/PDF/ORB-patterns.pdf ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Enhancing ORB Flexibility  w/the Strategy Pattern   ,[object Object],[object Object],[object Object],Solution Problem Context Hook for the concurrency strategy Hook for the request demuxing strategy Hook for marshaling strategy Hook for the connection management strategy Hook for the underlying transport strategy Hook for the event demuxing strategy
Consolidating Strategies with  the Abstract Factory Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],Solution Problem Context Concrete factories create groups of strategies
Dynamically Configuring Factories  w/the Component Configurator Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],Solution Problem Context ,[object Object],[object Object]
ACE Frameworks Used in TAO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],www.cs.wustl.edu/~schmidt/PDF/ICSE-03.pdf
Summary of Pattern, Framework,  & Middleware Synergies These technologies codify expertise of skilled researchers & developers There are now powerful feedback loops advancing these technologies ,[object Object],[object Object],Application-specific functionality  Acceptor Connector Component Configurator Stream Reactor  Proactor Task  ,[object Object]
Example: Electronic Medical Imaging Systems ,[object Object],[object Object],Modalities e.g.,  MRI, CT, CR, Ultrasound, etc.
Example: Electronic Medical Imaging Systems ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Modalities e.g.,  MRI, CT, CR, Ultrasound, etc.
Example: Electronic Medical Imaging Systems Key Software Solution Characteristics (e.g., www.syngo.com) ,[object Object],[object Object],[object Object],[object Object],[object Object],Modalities e.g.,  MRI, CT, CR, Ultrasound, etc.
Image Acquisition Scenario Modalities e.g.,  MRI, CT, CR, Ultrasound, etc. Image Xfer Interface Image Xfer Component Executor Xfer Proxy Factory Proxy Diagnostic & Clinical Workstations Radiology Client ,[object Object],[object Object],[object Object],Image Database 8. New 9. Return Ref 7.New 1. Deploy 3. Bind Factory Configuration Database Configuration Container 2. Enter  info 6. Intercept & delegate 10. Invoke get_image() call 11. Query  Config. 12. Check  Authorization 5. Find Image 13. Activate Factory/Finder Security Service Naming Service 4. Find  Factory 14. Delegate
Applying Patterns to Resolve Key  Distributed System Design Challenges Patterns help resolve the following common design challenges:   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Image Xfer Interface Configuration Database Configuration Container Image Xfer Component Servant Xfer Proxy Factory Proxy Image Database Factory/Finder Security Service Naming Service Radiology Client Proxy Broker Active Object Publisher- Subscriber Component Configurator Extension Interface Factory/Finder Messaging Layers Interceptor Activator
Separating Concerns Between Tiers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DB Server DB Server ,[object Object],[object Object],comp comp Application Server ,[object Object],[object Object],[object Object],Client Client
Applying the Layers Pattern to  Image Acquisition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Image Database Patient Database ,[object Object],[object Object],[object Object],[object Object],comp comp Image Servers ,[object Object],[object Object],Diagnostic Workstations Clinical Workstations
Pros & Cons of the Layers Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Overview of Distributed Object Computing Communication Mechanisms ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Context In multi-tier systems both the  tiers  & the  components  within the tiers must be connected via  communication mechanisms We now explore various  distribution infrastructure  (P4) patterns that applications can apply to leverage these communication mechanisms
Core Distribution Infrastructure Patterns ,[object Object],[object Object],Event Formats One-to-Many Events Publisher/  Subscriber Communication Endpoints & Message Formats Many-to-One Message Messaging Component Interfaces One-to-One Remote Method Invocation Broker Component Dependencies Communication Relationship Communication Style Pattern
Improving Type-safety & Performance (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Improving Type-safety & Performance (2/2) ,[object Object],[object Object],[object Object],[object Object],Client 1 1 Solution Apply the  Proxy  design pattern (P1, GoF) to provide an OO surrogate through which clients can access remote objects Proxy service Service service AbstractService service :  Service :  Proxy :  Client service service pre-processing: e.g.,marshaling post-processing: e.g., unmarshaling
Applying the Proxy Pattern  to Image Acquisition Client 1 1 We can apply the Proxy pattern to provide a strongly-typed interface to initiate & coordinate the downloading of images from an image database  ,[object Object],[object Object],Proxy get_image() Sync Image Xfer get_image() Image Xfer get_image() Image Xfer Service Xfer Proxy Image Database Radiology Client Invoke get_image() call
Pros & Cons of the Proxy Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Enabling Client Extensibility (1/2) ,[object Object],[object Object],[object Object],Class X operation 1 () operation 2 () operation 3 () operation n () ,[object Object],[object Object],[object Object],[object Object],[object Object],operation() Object :  Class X : Client
Enabling Client Extensibility (2/2) ,[object Object],[object Object],createComponent Factory * * CreateInstance createComponent Component new * 1 queryInterface Root Implemented by 1+ <<extends>> Ask for a reference to an interface Call an operation on an interface initialize uninititialize Server queryInterface service_i Extension Interface  i callService Client queryInterface() : Client operation()
Extension Interface Pattern Dynamics :  Client Start_client :  Factory createInstance(Ext.Intf. 1) new Ref. To Extension1 create create service_1 queryInterface(Extension Interface 2) Ref. To Extension2 Note how each extension interface can serve as a “factory” to return object reference to other extension interfaces supported by a component :  Component :  Extension 1 :  Extension 2 service_2 ,[object Object],[object Object],service2
Pros & Cons of the  Extension Interface Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ensuring Platform-neutral & Network-transparent OO Communication (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Client 1 1 Proxy service Service service AbstractService service
Ensuring Platform-neutral & Network-transparent OO Communication (2/2) ,[object Object],[object Object],Wrapper Facade Layers Component internal partitioning Remoting Error Lookup Requestor Object Adapter Container Facade Business Delegate Invoker Client Proxy OS abstraction request issuing request reception error notification Broker configuration component discovery request dispatching request dispatching b roker access component access component access component creation Message Publisher- Subscriber Factory Method request encapsulation publish- subscribe communication Broker
Broker Pattern Dynamics method (proxy) locate_server server port send_request marshal unmarshal dispatch method (impl.) result marshal receive_reply unmarshal result start_up register_service :  Broker :  Client Proxy :  Server   Proxy : Client :  Server assigned port Broker middleware generates the necessary client & server proxies from higher level interface definitions Proxy Generator Proxy Code   Interface Specif.
Applying the Broker Pattern  to Image Acquisition   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Container OS &  Protocols Communication Infrastructure OS &  Protocols Client Proxy Server Proxy Object Adapter Image Xfer Component Client Common Services Broker Interface
Pros & Cons of the Broker Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supporting Async Communication (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supporting Async Communication (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Messaging Pattern Dynamics :   Client :  Message create store Message forward Message :  Message Processor create receive receive Message Message exec send Message :  Message API :  Local Queue :  Remote Queue :  Message  API Reply store forward Reply recv Reply send Reply recv Other processing
Applying the Messaging  Pattern to Image Acquisition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Local Queue store forward remove Message <<route>> Radiology Client Message API <<send>> Remote Queue store forward remove <<exec>> Message API <<recv>> Image Server Message Processor Image Xfer Service Image Database Radiology Client
Pros & Cons of the Messaging Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supporting OO Async Communication   (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],Client Server Request messages Request messages Reply messages
Supporting OO Async Communication (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Future Scheduler enqueue  dispatch MethodRequest guard call * Proxy method_1 method_n Activation List enqueue dequeue Servant method_1 method_n creates creates maintains Concrete MethodRequest1 Concrete MethodRequest2
Active Object Pattern Dynamics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Clients can obtain result from futures via blocking, polling, or callbacks :  Future method enqueue :  Proxy :  Scheduler :  Servant :  Method Request dispatch call method read write :  Client
Applying the Active Object Pattern  to Image Acquisition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],get_image() future results Future Scheduler enqueue  dispatch MethodRequest guard call * Proxy method_1 method_n Activation List enqueue dequeue Servant method_1 method_n creates creates maintains get_image() put_image() Image Xfer Service Image Database Radiology Client
Pros & Cons of the Active Object Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Decoupling Suppliers & Consumers (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Image Database Radiology Client Radiology Client Radiology Client Radiology Client Radiology Client
Decoupling Suppliers & Consumers (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Event * Subscriber consume creates receives Event Channel attachPublisher  detachPublisher attachSubscriber detachSubscriber pushEvent Filter filter Publisher produce
Publisher-Subscriber Pattern Dynamics ,[object Object],[object Object],attachSubscriber produce pushEvent event event pushEvent detachSubscriber :  Event :  Subscriber :  Event Channel :  Publisher ,[object Object],[object Object],[object Object],[object Object],[object Object],consume
Applying the Publisher-Subscriber Pattern to Image Acquisition * creates receives Event Channel attachPublisher  detachPublisher attachSubscriber detachSubscriber pushEvent ,[object Object],[object Object],Event Radiologist consume Filter filter Modality produce Image Database Radiology Client Radiology Client Radiology Client Radiology Client Radiology Client Event Channel
Pros & Cons of the Publisher-Subscriber Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Locating & Creating Components Scalably (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Modalities e.g.,  MRI, CT, CR, Ultrasound, etc.
Locating & Creating Components Scalably (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],AbstractC omp operation ConcreteC omp operation Primary Key Concrete Home find create Abstract Home find create
Factory/Finder Pattern Dynamics ,[object Object],[object Object],[object Object],find (“ImageXYZ”); Primary Key Component operation lookup :  Client :  Home :  Component :  Primary Key create Node Binding Directory * resolve listNodes navigate newBinding newSubDir remove getName getObject Client
Applying the Factory/Finder Pattern  to Image Acquisition Image Xfer Interface Factory Proxy ,[object Object],[object Object],AbstractC omp operation ImageXferC omp operation Primary Key ImageXfer Home find create Abstract Home find create 1. Deploy 2. Bind Factory 4. Intercept & delegate 6. Find Image Factory/Finder Naming Service 3. Find  Factory Image Database Radiology Client 5.New Configuration Container
Pros & Cons of the Factory/Finder Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Extending Components Transparently ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Declarative Programming Server   Component Transaction Security Resources ... Server  Component Transaction Security Resources ... ... Imperative Programming Client Client Container
Extending Components Transparently  (cont‘d) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Context ConcreteInterceptor handle_event * callback provide Dispatcher attach Framework attach_interceptor manage_interceptors AbstractInterceptor handle_event
Interceptor Pattern Dynamics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],:  Application :  Framework :  Interceptor create run_event_loop attach interceptor Place interceptor in internal interceptor map event Look for registered interceptors :  Context create context handle_event :  Dispatcher delegate www.cs.wustl.edu/~schmidt/PDF/IEEE.pdf
Applying the Interceptor Pattern  to Image Acquisition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Interceptors are used for many other middleware tasks, as well   Context Container handle_event * callback provide Dispatcher attach Image Server Framework attach_interceptor manage_interceptors AbstractInterceptor handle_event Container Component XML config
Pros & Cons of the Interceptor Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Minimizing Resource Utilization (1/2) ,[object Object],[object Object],[object Object],[object Object]
Minimizing Resource Utilization (2/2) ,[object Object],[object Object],www.cs.wustl.edu/~schmidt/PDF/Activator.pdf ,[object Object],[object Object],[object Object],[object Object]
Activator Pattern Dynamics ,[object Object],[object Object],[object Object],:  Activator   :  Client getService :  Implementation activate lookupEntry [not active] changeEntry object service result port onShutdown changeEntry :  Activation Table
Applying the Activator Pattern  to Image Acquisition Activator createService() findService() activate() deactivate() addService() remService() Activation Table lookup() insert() delete() getService useService() Server (ringil:5500) 2.1 start ,[object Object],[object Object],[object Object],[object Object],iiop://ringil:5500/poa_name/object_name ImR (ringil:5000) Client ringil:4500 plane.exe  airplane_poa server.exe poa_name ringil:5500 iiop://ringil:5000/poa_name/object_name Client ImageXferService service shutdown 1. some_request 4. LOCATION_FORWARD 2. ping 3. is_running 6. some_response 5. some_request
Pros & Cons of the Activator Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Enhancing Server (Re)Configurability (1/2) ,[object Object],[object Object],Context The implementation of certain image server components depends on a variety of factors: ,[object Object],[object Object],[object Object],[object Object],Image Processing Conn Mgmt Cache Mgmt Threading Demuxing File System I/O
Enhancing Server (Re)Configurability   (2/2) ,[object Object],[object Object],[object Object],[object Object],<<contains>> components * Component Configurator Component Repository Concrete Component A Concrete Component B Component init() fini() suspend() resume() info()
Component Configurator Pattern Dynamics run_component() run_component() fini() remove() remove() fini() Comp. A Concrete Comp. B Concrete Comp. A Concrete Comp. B ,[object Object],[object Object],[object Object],: Component Configurator init() : Concrete Component A : Concrete Component B : Component Repository insert() insert() init() Concrete
Applying the Component Configurator Pattern to Image Acquisition <<contains>> components * Component Configurator Component Repository LRU File Cache LFU File Cache Component init() fini() suspend() resume() info() ,[object Object],[object Object],Image servers can use the Component Configurator pattern to dynamically optimize, control, & reconfigure the behavior of its components at installation-time or during run-time Concrete components can be packaged into a suitable unit of configuration, such as a dynamically linked library (DLL)  Only the components that are currently in use need to be configured into an image server
Reconfiguring an Image Server Image servers can also be reconfigured dynamically to support new components & new component implementations IDLE RUNNING SUSPENDED CONFIGURE init() RECONFIGURE init() fini() fini() resume() suspend() EXECUTE run_component() SUSPEND RESUME TERMINATE TERMINATE Reconfiguration State Chart LRU File Cache Image Server # Configure an image server. dynamic File_Cache Component * img_server.dll:make_File_Cache()  &quot;-t LRU&quot; INITIAL  CONFIGURATION AFTER  RECONFIGURATION LFU File Cache Image Server # Reconfigure an image server. remove File_Cache dynamic File_Cache Component * img_server.dll:make_File_Cache()  &quot;-t LFU&quot;
Pros & Cons of the  Component Configurator Pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example: High-performance Content Delivery Servers ,[object Object],[object Object],[object Object],Key Solution Characteristics ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Graphics Adapter GUI Event Dispatcher Transfer Protocol e.g. , HTTP 1.0 Requester File Cache Protocol  Handlers HTML Parser HTTP Client HTTP Server GET /index.html HTTP/1.0 <H1>POSA page</H1>... www.posa.uci.edu TCP/IP Network OS Kernel & Protocols OS Kernel & Protocols
JAWS Content Server Framework ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Applying Patterns to Resolve Key JAWS Design Challenges Patterns help resolve the following common design challenges:   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures
Pattern-Oriented Distributed Software Architectures

Weitere ähnliche Inhalte

Was ist angesagt?

Client server-computing
Client server-computingClient server-computing
Client server-computingjayasreep3
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented MiddlewarePeter R. Egli
 
WebSphere Message Broker In Shared Runtime Environments
WebSphere Message Broker In Shared Runtime EnvironmentsWebSphere Message Broker In Shared Runtime Environments
WebSphere Message Broker In Shared Runtime EnvironmentsMårten Gustafson
 
middleware in embedded systems
middleware in embedded systemsmiddleware in embedded systems
middleware in embedded systemsAkhil Kumar
 
The Middleware technology that connects the enterprise
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise Kasun Indrasiri
 
Client computing evolution ppt11
Client computing evolution ppt11Client computing evolution ppt11
Client computing evolution ppt11Tech_MX
 
Ch 8 Client Server
Ch 8  Client  ServerCh 8  Client  Server
Ch 8 Client Serverguest8fdbdd
 
Object and component based middleware for distributed system development
Object and component based middleware for distributed system developmentObject and component based middleware for distributed system development
Object and component based middleware for distributed system developmentektabhalwara
 
Announcing DA.PO Augury Data Visualisation Services - may 2013
Announcing DA.PO Augury Data Visualisation Services - may 2013Announcing DA.PO Augury Data Visualisation Services - may 2013
Announcing DA.PO Augury Data Visualisation Services - may 2013Meng Choon Tan
 
Client Server Computing Slides by Puja Dhar
Client Server Computing Slides by Puja DharClient Server Computing Slides by Puja Dhar
Client Server Computing Slides by Puja Dharpuja_dhar
 
2 08 client-server architecture
2 08 client-server architecture2 08 client-server architecture
2 08 client-server architecturejit_123
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middlewareSajan Sahu
 
Client Server Architecture
Client Server ArchitectureClient Server Architecture
Client Server Architecturesuks_87
 
Client Server Model and Distributed Computing
Client Server Model and Distributed ComputingClient Server Model and Distributed Computing
Client Server Model and Distributed ComputingAbhishek Jaisingh
 
MJI Resume Aug 2016
MJI Resume Aug 2016MJI Resume Aug 2016
MJI Resume Aug 2016Mahesh Iyer
 

Was ist angesagt? (20)

Middleware
MiddlewareMiddleware
Middleware
 
Client server-computing
Client server-computingClient server-computing
Client server-computing
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented Middleware
 
middleware
middlewaremiddleware
middleware
 
WebSphere Message Broker In Shared Runtime Environments
WebSphere Message Broker In Shared Runtime EnvironmentsWebSphere Message Broker In Shared Runtime Environments
WebSphere Message Broker In Shared Runtime Environments
 
middleware in embedded systems
middleware in embedded systemsmiddleware in embedded systems
middleware in embedded systems
 
The Middleware technology that connects the enterprise
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise
 
Client computing evolution ppt11
Client computing evolution ppt11Client computing evolution ppt11
Client computing evolution ppt11
 
Ch 8 Client Server
Ch 8  Client  ServerCh 8  Client  Server
Ch 8 Client Server
 
Object and component based middleware for distributed system development
Object and component based middleware for distributed system developmentObject and component based middleware for distributed system development
Object and component based middleware for distributed system development
 
Announcing DA.PO Augury Data Visualisation Services - may 2013
Announcing DA.PO Augury Data Visualisation Services - may 2013Announcing DA.PO Augury Data Visualisation Services - may 2013
Announcing DA.PO Augury Data Visualisation Services - may 2013
 
Client Server Computing Slides by Puja Dhar
Client Server Computing Slides by Puja DharClient Server Computing Slides by Puja Dhar
Client Server Computing Slides by Puja Dhar
 
2 08 client-server architecture
2 08 client-server architecture2 08 client-server architecture
2 08 client-server architecture
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middleware
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
Client Server Architecture
Client Server ArchitectureClient Server Architecture
Client Server Architecture
 
Client Server Model and Distributed Computing
Client Server Model and Distributed ComputingClient Server Model and Distributed Computing
Client Server Model and Distributed Computing
 
MJI Resume Aug 2016
MJI Resume Aug 2016MJI Resume Aug 2016
MJI Resume Aug 2016
 
SANJAY KUMAR
SANJAY KUMARSANJAY KUMAR
SANJAY KUMAR
 

Andere mochten auch

Server side game_development
Server side game_developmentServer side game_development
Server side game_developmentYekmer Simsek
 
TERA Server Architecture
TERA Server ArchitectureTERA Server Architecture
TERA Server Architectureujentus
 
Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015wolf4ood
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by AndrewAgate Studio
 
Predavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - BeogradPredavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - BeogradIvan Rečević
 
جای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانیجای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانیrezamahdavi1980
 
anybuild/Hosting casual #1
anybuild/Hosting casual #1anybuild/Hosting casual #1
anybuild/Hosting casual #1Ryo Kuroda
 
Turkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyTurkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyZafer Elcik
 
ブギーボードパンフレット
ブギーボードパンフレットブギーボードパンフレット
ブギーボードパンフレットBoogieBoard_JP
 
eTwinning og medieleg i dagtilbud
eTwinning og medieleg i dagtilbudeTwinning og medieleg i dagtilbud
eTwinning og medieleg i dagtilbudClaus Berg
 
Facebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslamsFacebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslamsVladas Sapranavicius
 
Engaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment CycleEngaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment CycleMarty Bennett
 
Шобанов Константин "Боль и удовольствие в продажах"
Шобанов Константин "Боль и удовольствие в продажах"Шобанов Константин "Боль и удовольствие в продажах"
Шобанов Константин "Боль и удовольствие в продажах"PechaKucha-Cheboksary
 
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertisingThe Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertisingZigurds Zakis
 
CloudSurance - We backup web application data
CloudSurance - We backup web application dataCloudSurance - We backup web application data
CloudSurance - We backup web application dataSam Bowen
 

Andere mochten auch (20)

Server side game_development
Server side game_developmentServer side game_development
Server side game_development
 
TERA Server Architecture
TERA Server ArchitectureTERA Server Architecture
TERA Server Architecture
 
Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by Andrew
 
Predavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - BeogradPredavanje OpenIT 2011 - Beograd
Predavanje OpenIT 2011 - Beograd
 
جای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانیجای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانی
 
anybuild/Hosting casual #1
anybuild/Hosting casual #1anybuild/Hosting casual #1
anybuild/Hosting casual #1
 
Govt
GovtGovt
Govt
 
Turkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyTurkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon Valley
 
Resume
ResumeResume
Resume
 
ספר וטהר לבנו השלם.
ספר וטהר לבנו השלם.ספר וטהר לבנו השלם.
ספר וטהר לבנו השלם.
 
ブギーボードパンフレット
ブギーボードパンフレットブギーボードパンフレット
ブギーボードパンフレット
 
eTwinning og medieleg i dagtilbud
eTwinning og medieleg i dagtilbudeTwinning og medieleg i dagtilbud
eTwinning og medieleg i dagtilbud
 
Facebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslamsFacebook rinkodara Lietuvos elektroniniams verslams
Facebook rinkodara Lietuvos elektroniniams verslams
 
Snr 2012 ee020344
Snr 2012 ee020344Snr 2012 ee020344
Snr 2012 ee020344
 
Engaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment CycleEngaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment Cycle
 
Шобанов Константин "Боль и удовольствие в продажах"
Шобанов Константин "Боль и удовольствие в продажах"Шобанов Константин "Боль и удовольствие в продажах"
Шобанов Константин "Боль и удовольствие в продажах"
 
من اجلك
من اجلكمن اجلك
من اجلك
 
The Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertisingThe Virtual Strike: on pitches in advertising
The Virtual Strike: on pitches in advertising
 
CloudSurance - We backup web application data
CloudSurance - We backup web application dataCloudSurance - We backup web application data
CloudSurance - We backup web application data
 

Ähnlich wie Pattern-Oriented Distributed Software Architectures

Cloud computing - dien toan dam may
Cloud computing - dien toan dam mayCloud computing - dien toan dam may
Cloud computing - dien toan dam mayNguyen Duong
 
Eniac – Lotus Consolidation 2009
Eniac – Lotus Consolidation   2009Eniac – Lotus Consolidation   2009
Eniac – Lotus Consolidation 2009Edwin Kanis
 
Azure Overview Csco
Azure Overview CscoAzure Overview Csco
Azure Overview Cscorajramab
 
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"Fwdays
 
Cloud computingintroduction
Cloud computingintroductionCloud computingintroduction
Cloud computingintroductionKhelender Sasan
 
Cloud strategy briefing 101
Cloud strategy briefing 101 Cloud strategy briefing 101
Cloud strategy briefing 101 Predrag Mitrovic
 
Aberdeen Oil & Gas Event - Cloud Adoption Framework
Aberdeen Oil & Gas Event - Cloud Adoption FrameworkAberdeen Oil & Gas Event - Cloud Adoption Framework
Aberdeen Oil & Gas Event - Cloud Adoption FrameworkAmazon Web Services
 
SW Architecture Monolithic to SOA
SW Architecture Monolithic to SOASW Architecture Monolithic to SOA
SW Architecture Monolithic to SOARaman Kannan
 
IT Modernization For Process Modernization
IT Modernization For Process ModernizationIT Modernization For Process Modernization
IT Modernization For Process ModernizationDheeraj Remella
 
Cloud First Architecture
Cloud First ArchitectureCloud First Architecture
Cloud First ArchitectureCameron Vetter
 
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...Haisam Ido
 
Combining Private and Public Clouds into Meaningful Hybrids
Combining Private and Public Clouds into Meaningful HybridsCombining Private and Public Clouds into Meaningful Hybrids
Combining Private and Public Clouds into Meaningful HybridsDavid Chou
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics IntegrationSales Emea
 
Source-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructureSource-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructurekaveirious
 
Monish R_9163_b
Monish R_9163_bMonish R_9163_b
Monish R_9163_bsamnik60
 
Ibm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalIbm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalMauricio Godoy
 

Ähnlich wie Pattern-Oriented Distributed Software Architectures (20)

C++ N Pv2
C++ N Pv2C++ N Pv2
C++ N Pv2
 
soa1.ppt
soa1.pptsoa1.ppt
soa1.ppt
 
Cloud computing - dien toan dam may
Cloud computing - dien toan dam mayCloud computing - dien toan dam may
Cloud computing - dien toan dam may
 
Legacy Migration Overview
Legacy Migration OverviewLegacy Migration Overview
Legacy Migration Overview
 
Legacy Migration
Legacy MigrationLegacy Migration
Legacy Migration
 
Eniac – Lotus Consolidation 2009
Eniac – Lotus Consolidation   2009Eniac – Lotus Consolidation   2009
Eniac – Lotus Consolidation 2009
 
Azure Overview Csco
Azure Overview CscoAzure Overview Csco
Azure Overview Csco
 
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
Serhiy Kalinets "Embracing architectural challenges in the modern .NET world"
 
Cloud computingintroduction
Cloud computingintroductionCloud computingintroduction
Cloud computingintroduction
 
Cloud strategy briefing 101
Cloud strategy briefing 101 Cloud strategy briefing 101
Cloud strategy briefing 101
 
Aberdeen Oil & Gas Event - Cloud Adoption Framework
Aberdeen Oil & Gas Event - Cloud Adoption FrameworkAberdeen Oil & Gas Event - Cloud Adoption Framework
Aberdeen Oil & Gas Event - Cloud Adoption Framework
 
SW Architecture Monolithic to SOA
SW Architecture Monolithic to SOASW Architecture Monolithic to SOA
SW Architecture Monolithic to SOA
 
IT Modernization For Process Modernization
IT Modernization For Process ModernizationIT Modernization For Process Modernization
IT Modernization For Process Modernization
 
Cloud First Architecture
Cloud First ArchitectureCloud First Architecture
Cloud First Architecture
 
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...
Unified Situational Awareness Dashboard for Spacecraft Operations: an inte...
 
Combining Private and Public Clouds into Meaningful Hybrids
Combining Private and Public Clouds into Meaningful HybridsCombining Private and Public Clouds into Meaningful Hybrids
Combining Private and Public Clouds into Meaningful Hybrids
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics Integration
 
Source-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructureSource-to-source transformations: Supporting tools and infrastructure
Source-to-source transformations: Supporting tools and infrastructure
 
Monish R_9163_b
Monish R_9163_bMonish R_9163_b
Monish R_9163_b
 
Ibm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalIbm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_final
 

Kürzlich hochgeladen

Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 

Kürzlich hochgeladen (20)

Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 

Pattern-Oriented Distributed Software Architectures

  • 1. Pattern-Oriented Software Architectures Patterns & Frameworks for Concurrent & Distributed Systems Dr. Douglas C. Schmidt [email_address] www.dre.vanderbilt.edu/~schmidt/ Professor of EECS Vanderbilt University Nashville, Tennessee
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Taxonomy of Patterns & Idioms Active Object, Bridge, Proxy, Wrapper Façade, & Visitor Capture the static & dynamic roles & relationships in solutions that occur repeatedly Design patterns Half-Sync/Half-Async, Layers, Proactor, Publisher-Subscriber, & Reactor Express a fundamental structural organization for software systems that provide a set of predefined subsystems, specify their relationships, & include the rules & guidelines for organizing the relationships between them Architectural patterns Optimize for common case, pass information between layers Document rules for avoiding common design & implementation mistakes that degrade performance Optimization principle patterns Scoped locking Restricted to a particular language, system, or tool Idioms Examples Description Type
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43. Comparing Class Libraries, Frameworks, & Components Class Libraries Frameworks Macro-level Meso-level Micro-level Borrow caller’s thread Inversion of control Borrow caller’s thread Domain-specific or Domain-independent Domain-specific Domain-independent Stand-alone composition entities “ Semi-complete” applications Stand-alone language entities Components Class Library Architecture ADTs Strings Locks IPC Math LOCAL INVOCATIONS APPLICATION- SPECIFIC FUNCTIONALITY EVENT LOOP GLUE CODE Files GUI A class is a unit of abstraction & implementation in an OO programming language Framework Architecture ADTs Locks Strings Files INVOKES A framework is an integrated set of classes that collaborate to produce a reusable architecture for a family of applications Reactor GUI DATABASE NETWORKING APPLICATION-SPECIFIC FUNCTIONALITY CALLBACKS Middleware Bus Component Architecture A component is an encapsulation unit with one or more interfaces that provide clients with access to its services Naming Locking Logging Events
  • 44.
  • 45.
  • 46.
  • 47. Key Capabilities Provided by ACE Service Access & Control Event Handling Concurrency Synchronization
  • 48.
  • 49. POSA2 Pattern Abstracts Service Access & Configuration Patterns The Wrapper Facade design pattern encapsulates the functions & data provided by existing non-object-oriented APIs within more concise, robust, portable, maintainable, & cohesive object-oriented class interfaces. The Component Configurator design pattern allows an application to link & unlink its component implementations at run-time without having to modify, recompile, or statically relink the application. Component Configurator further supports the reconfiguration of components into different application processes without having to shut down & re-start running processes. The Interceptor architectural pattern allows services to be added transparently to a framework & triggered automatically when certain events occur. The Extension Interface design pattern allows multiple interfaces to be exported by a component, to prevent bloating of interfaces & breaking of client code when developers extend or modify the functionality of the component. Event Handling Patterns The Reactor architectural pattern allows event-driven applications to demultiplex & dispatch service requests that are delivered to an application from one or more clients. The Proactor architectural pattern allows event-driven applications to efficiently demultiplex & dispatch service requests triggered by the completion of asynchronous operations, to achieve the performance benefits of concurrency without incurring certain of its liabilities. The Asynchronous Completion Token design pattern allows an application to demultiplex & process efficiently the responses of asynchronous operations it invokes on services. The Acceptor-Connector design pattern decouples the connection & initialization of cooperating peer services in a networked system from the processing performed by the peer services after they are connected & initialized.
  • 50. POSA2 Pattern Abstracts (cont’d) Synchronization Patterns The Scoped Locking C++ idiom ensures that a lock is acquired when control enters a scope & released automatically when control leaves the scope, regardless of the return path from the scope. The Strategized Lockin g design pattern parameterizes synchronization mechanisms that protect a component’s critical sections from concurrent access. The Thread-Safe Interface design pattern minimizes locking overhead & ensures that intra-component method calls do not incur ‘self-deadlock’ by trying to reacquire a lock that is held by the component already. The Double-Checked Locking Optimization design pattern reduces contention & synchronization overhead whenever critical sections of code must acquire locks in a thread-safe manner just once during program execution. Concurrency Patterns The Active Object design pattern decouples method execution from method invocation to enhance concurrency & simplify synchronized access to objects that reside in their own threads of control. The Monitor Object design pattern synchronizes concurrent method execution to ensure that only one method at a time runs within an object. It also allows an object’s methods to cooperatively schedule their execution sequences. The Half-Sync/Half-Async architectural pattern decouples asynchronous & synchronous service processing in concurrent systems, to simplify programming without unduly reducing performance. The pattern introduces two intercommunicating layers, one for asynchronous & one for synchronous service processing. The Leader/Followers architectural pattern provides an efficient concurrency model where multiple threads take turns sharing a set of event sources in order to detect, demultiplex, dispatch, & process service requests that occur on the event sources. The Thread-Specific Storage design pattern allows multiple threads to use one ‘logically global’ access point to retrieve an object that is local to a thread, without incurring locking overhead on each object access.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79. Broker Pattern Dynamics method (proxy) locate_server server port send_request marshal unmarshal dispatch method (impl.) result marshal receive_reply unmarshal result start_up register_service : Broker : Client Proxy : Server Proxy : Client : Server assigned port Broker middleware generates the necessary client & server proxies from higher level interface definitions Proxy Generator Proxy Code Interface Specif.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84. Messaging Pattern Dynamics : Client : Message create store Message forward Message : Message Processor create receive receive Message Message exec send Message : Message API : Local Queue : Remote Queue : Message API Reply store forward Reply recv Reply send Reply recv Other processing
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116. Reconfiguring an Image Server Image servers can also be reconfigured dynamically to support new components & new component implementations IDLE RUNNING SUSPENDED CONFIGURE init() RECONFIGURE init() fini() fini() resume() suspend() EXECUTE run_component() SUSPEND RESUME TERMINATE TERMINATE Reconfiguration State Chart LRU File Cache Image Server # Configure an image server. dynamic File_Cache Component * img_server.dll:make_File_Cache() &quot;-t LRU&quot; INITIAL CONFIGURATION AFTER RECONFIGURATION LFU File Cache Image Server # Reconfigure an image server. remove File_Cache dynamic File_Cache Component * img_server.dll:make_File_Cache() &quot;-t LFU&quot;
  • 117.
  • 118.
  • 119.
  • 120.