Return to Home Page
Overview
    History
    Acknowledgements
    Podcasts
    Notification Form
    Feedback Form
    Press Release #1
    Press Release #2
    Press Release #3

Master SOA Design
Pattern Catalog
    Master Pattern List (alphabetical)
    Master Pattern List (by category)
    Master Pattern List with
Page Numbers (PDF)
    Master Pattern List (Text)
    Pattern Notation
    Pattern Profiles
    Symbol Legend
    Pattern Contribution Form

SOA Candidate Patterns
    SOA Patterns Review Committee
    Candidate Patterns Overview
    Candidate Patterns List
    Candidate Pattern Contribution Form
    Candidate Pattern
Feedback Form
    SOA Pattern Template

Design Pattern Basics
    What's a Design Pattern?
    What's a Design Pattern Language?
    What's a Compound Pattern?

Supplemental
    SOA Patterns and Application Technologies
    SOA Design Patterns Historical Influences
    SOA Design Patterns and Design Principles
    SOA Design Patterns and Design Granularity
    Legal

Resources
    Design Patterns Publications
    Reference Posters
    SOAPrinciples.com
    WhatIsSOA.com
    SOA Visio Stencil

About the Book



SOA Design Patterns
by Thomas Erl

For more information visit: www.soapatterns.com

Related Publications


"Introducing SOA Design Patterns", SOA World Magazine (PDF)



"The Case for Single-Purpose Services: Understanding the Non-Agnostic Context and a Strategy for Implementation", SOA Magazine (HTML)



"REST-Inspired SOA Design Patterns", SOA Magazine (HTML)



"Service-Orientation and Object-Orientation Part I: A Comparison of Goals and Concepts", SOA Magazine (HTML)



"Service-Orientation and Object-Orientation Part II: A Comparison of Design Principles", SOA Magazine (HTML)



"Service Facade", InformIT (HTML)



"Non-Agnostic Context", InformIT (HTML)



"Domain Inventory", InformIT (HTML)



"Service Normalization", InformIT (HTML)



"Service Decomposition", InformIT (HTML)



"Canonical Schema", InformIT (HTML)



"Policy Centralization", InformIT (HTML)





Code-on-Demand (candidate)


Home > Candidate Patterns List > Code-on-Demand

How can service consumers be extended or customized at run-time without being upgraded?  

Problem

Existing deployed clients may not be capable of taking advantage of new contract features when service contracts change. Similarly for a uniform contract, service consumers may be implemented too generally to sufficiently reflect the individual service's requirements and capabilities. Services may be prevented from effectively evolving by the installed base of consumers that cannot be easily upgraded.

Solution

Include implementation logic within capability response messages, and execute this logic within the service consumer.

Application

Service consumers are equipped with a virtual machine for running the logic supplied by the service at run-time. The consumer downloads this logic by invoking service capabilities, and executes it locally.

The virtual machine must itself provide capabilities sufficient to implement useful logic against. This includes support for client-side processing, the ability to invoke new or specialized service capabilities, and may include features such as supporting local storage of data and/or supporting user interaction.

Impacts

Processing effort is decentralized. Execution occurs in service consumers rather than in services.

Custom capability invocation is less able to be understood by common network intermediaries between the service provider and service consumer. Firewalls and caches alike may be unable to perform their usual function.

Executing service logic can significantly increase the area of attack within service consumers for security vulnerabilities.

Principles

Service Statelessness

Architecture

Inventory, Composition, Service

Status

Under Review

Contributors

Balasubramanian, Carlyle, Pautasso
 

Embedding a common virtual machine within service consumers allows their functionality be extended at run-time. Service providers can off-load state and processing to consumers, instruct consumers at run-time on how to interact with an extended service contract, and also provide interactions with the underlying hardware and its human user.



Web browsers make heavy use of customization logic in the form of JavaScript, applets, and forms. These are obtained via the uniform interface, but often include support to invoke service-specific capabilities as well as to enrich the user experience. These features are also used to extend the browser to trial new contract and media type extensions prior to their formal standardization or in the early stages of their deployment. For example, the explosion of video content on the Internet was initially only made possible by the embedding of flash-based players.


Related Patterns in This Catalog

Message-based State Deferral (Balasubramanian, Carlyle, Pautasso ), Fine-grained Servie Endpoint, Uniform Contract (Balasubramanian, Webber, Erl, Booth)


Related Service-Oriented Computing Goals

Increased Organizational Agility, Reduced IT Burden

The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Home    SOA Books    SOA Magazine    What is SOA?    SOA Principles    SOASchool.com    SOA Glossary Copyright © 2007-2010
SOA Systems Inc.