Service layer pattern: Difference between revisions

Content deleted Content added
m ISBNs (Build KE)
clean up, remove promotional links, needs reliable sources
Line 2:
{{One source|date=April 2010}}
 
'''Service Layers''' is a [[Design pattern (computer science)|design pattern]], applied within the [[service-orientation]] [[design paradigm]], which aims to organize the services<ref, within a service inventory, into a set of logical layers. Services that are categorized into a particular layer share functionality. This helps to reduce the conceptual overhead related to managing the service inventory, as the name='services'> belonging to the same layer address a smaller set of activities.
[http://www.whatissoa.com/p11.php services]</ref>, within a service inventory<ref name='serviceinventory'>
[http://www.whatissoa.com/p13.php service inventory]</ref>, into a set of logical layers. Services that are categorized into a particular layer share functionality. This helps to reduce the conceptual overhead related to managing the service inventory, as the services belonging to the same layer address a smaller set of activities.
 
==Rationale==
Grouping services into functional layers reduces the impact of change. Most changes affect only the layer in which they're made, with few side-effects that impact other layers. This fundamentally simplifies service maintenance.
 
The [[Service Reusability Principle|Serviceservice Reusabilityreusability]] principle dictates that services should be designed to maximize reuse. Similarly, the [[Service Composability Principle|Serviceservice Composabilitycomposability]] principle advocates designing services so that they can be composed into various ways.<ref name='servicecompositions'>[http://www.whatissoa.com/p12.php service compositions]</ref> Both principles require that a service contain only a specific type of logic e.g., either reusable or process-specific logic.<ref name='SOAMag'>[[Thomas Erl]].[http://soa.sys-con.com/node/645271?page=0,1 Introducing SOA Design Pattern][Online]. Date accessed:6 April 2010.</ref> Restricting each layer to a particular functionality, simplifies the design of the service.
[[Thomas Erl]].[http://soa.sys-con.com/node/645271?page=0,1 Introducing SOA Design Pattern][Online].Date accessed:6 April 2010.</ref> Restricting each layer to a particular functionality, simplifies the design of the service.<ref name='WK' />
 
==Usage==
[[File:Service Layers Image A.JPG|thumb|alt=Diagram A|Diagram A<br/>In the absence of any layers, services contain a mixture of different types of logic. This makes it difficult to manage these services.]]
[[File:Service Layers Image B.JPG|thumb|alt=Diagram B|Diagram B<br/>A service inventory divided into layers where each layer contains the same type of logic.]]
[http://www.soamethodology.com/p2.phpApplying this pattern requires creating a service inventory blueprint]</ref>, a list of services with associated functionality. Next, group the services into layers according to function. Adopting a common layering strategy across the enterprise facilitates reuse in other applications, because developers don't have as much to learn (or invent) when they join a project.<ref name='service models'>[http://www.soamethodology.com/p5.php service models]</ref> One common layering uses task,<ref name='task'>[http://www.soamethodology.com/p7.php Task Service]</ref> [[Entity Abstraction Pattern|entity]] <ref name='entity'>[http://www.soamethodology.com/p6.php Entity Service]</ref> and [[Utility Abstraction Pattern|utility]] <ref name='utility'>[http://www.soamethodology.com/p8.php Utility Service]</ref> layers.<ref name='ProcessAbstractionWK'>
Applying this pattern requires creating a service inventory blueprint,<ref name='serviceinventoryblueprint'>
[http://www.soamethodology.com/p2.php service inventory blueprint]</ref> a list of services with associated functionality. Next, group the services into layers according to function. Adopting a common layering strategy across the enterprise facilitates reuse in other applications, because developers don't have as much to learn (or invent) when they join a project.<ref name='service models'>[http://www.soamethodology.com/p5.php service models]</ref> One common layering uses task,<ref name='task'>[http://www.soamethodology.com/p7.php Task Service]</ref> [[Entity Abstraction Pattern|entity]] <ref name='entity'>[http://www.soamethodology.com/p6.php Entity Service]</ref> and [[Utility Abstraction Pattern|utility]] <ref name='utility'>[http://www.soamethodology.com/p8.php Utility Service]</ref> layers.<ref name='ProcessAbstraction'>
[http://www.soapatterns.org/process_abstraction.php Process Abstraction]</ref><ref name='WK'>
Wajid Khattak [http://www.informit.com/articles/article.aspx?p=1583177 Service Layers][Online].Date accessed: 21 April 2010.</ref>.
 
An alternative layering from Bieberstein et al.<ref>Bieberstein. et al.[http://books.google.com/books?id=NISyExeJ5mAC&pg=PA88&dq=%22service+layer%22&lr=&hl=sv#PPA87,M1 Service-oriented Architecture Compass: Business Value, Planning, and Enterprise Roadmap].FT Press, 2005. ISBN 0-13-187002-5, ISBN 978-0-13-187002-4</ref>, involves five layers, namely Enterpriseenterprise, Processprocess, Serviceservice, Componentcomponent and Objectobject.
 
The Serviceservice Layerslayers pattern invokes a specific [[Service-Orientedoriented Architecturearchitecture Typestypes|service architecture]].
 
The [[Top-down and bottom-up design|top-down]] service delivery approach<ref name="TopDown">facilitates the use of this pattern.
[http://www.soamethodology.com/p9.php Top-Down Service Delivery Approach]</ref> facilitates the use of this pattern.
 
== References ==
{{Reflist}}
 
* [[Thomas Erl|Erl]] et al.,(2009).[http://www.amazon.com/dp/0136135161 SOA Design Patterns]. Prentice Hall. ISBN 0-13-613516-1.
* Mauro. et al. [http://www.computer.org/portal/web/csdl/doi/10.1109/HICSS.2010.336 Service Oriented Device Integration - An Analysis of SOA Design Patterns.] [Online], pp.&nbsp;1–10, 2010 43rd Hawaii International Conference on System Sciences, 2010. Date accessed: 6 April 2010.
* Dave Oliver.[http://geekswithblogs.net/SabotsShell/archive/2006/07/11/84708.aspx SOA Logical Model][Online].Date accessed: 17 April 2010.
* Srikanth Seshadri.[http://www.javaworld.com/javaworld/jw-01-2007/jw-01-soa.html A logical architecture for SOA][Online].Date accessed: 17 April 2010.
* www.binaryspectrum.com.[http://www.binaryspectrum.com/service-oriented_architecture/soa_and_Java_2.html Service-Oriented Architecture and Java - Service Layer][Online].Date accessed: 17 April 2010.
* Bernhard Borges, Kerrie Holley and Ali Arsanjani.[http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1006206,00.html Service-oriented architecture][Online].Date accessed: 17 April 2010.
* Norbert Bieberstein, Keith Jones, Robert G. Laird, Tilak Mitra.[http://www.informit.com/articles/article.aspx?p=1194198 Executing SOA: A Methodology for Service Modeling and Design][Online].Date accessed: 17 April 2010.
* The Open Group.[http://www.opengroup.org/projects/soa-book/page.tpl?ggid=1334 High-Level Perspective of the SOA Reference Architecture][Online].Date accessed: 17 April 2010.
 
== External links ==
* [http://www.whatissoa.com/ SOA Concepts]
* [http://www.soaglossary.com/ SOA Terms Glossary]
* [http://www.soapatterns.org SOA Design Patterns]