Content deleted Content added
cpy editing needed, merge tag, single source |
|||
Line 1:
{{
{{copyedit}}
{{1source}}
'''Service Layers''' is a [[Design_pattern_(computer_science)|design pattern]], applied within the [[service-orientation]] [[Design_paradigm|design paradigm]], which aims to organize the services<ref name='services'>[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 the same type of functionality. This helps to reduce the governance burden related to the service inventory as the services belonging to the same layer only contain a particular type of solution logic and as a result are easy to maintain.
==Rationale==
As more and more services are added to a service inventory, the management of services within the service inventory gets difficult. In an unorganized service inventory, just by having a look at a service, it’s very hard to predict what kind of functionality is contained in it. This further makes it difficult to pickup the right type of service until all of its functions are reviewed. Similarly, a service can be designed in a manner that it contains both the reusable logic as well as the process-specific logic. When it comes to change the process-specific logic, this can inadvertently impact the reusable logic as well, which means that the reusability potential of such a service is reduced. Contrary to this, the [[Service Reusability Principle|Service Reusability]] design principle dictates that services should be designed in a manner so that they can be reused as much as possible. Similarly, the [[Service Composability Principle|Service Composability]] design principle advocate designing services in a manner so that they can be composed into multiple service compositions<ref name='servicecompositions'>[http://www.whatissoa.com/p12.php service compositions]</ref>. Both of these qualities are only possible if the service only contains a specific type of logic e.g. either reusable logic or process-specific logic.
<br/>
Line 10 ⟶ 11:
==Usage==
[[Image: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.]]
[[Image: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.]]
Line 16:
<br/>
Although service grouping can be performed based different types of functionalities, however, to keep the grouping standardized across the enterprise, the actual groups can be based on established service models<ref name='service models'>[http://www.soamethodology.com/p5.php service models]</ref> that depict the most common types of logic that services would normally contain. Depending upon the particular area of the business, a service inventory would usually be divided into task<ref name='task'>[http://www.soamethodology.com/p7.php Task Service]</ref>, entity<ref name='entity'>[http://www.soamethodology.com/p6.php Entity Service]</ref> and utility<ref name='utility'>[http://www.soamethodology.com/p8.php Utility Service]</ref> services. Each of these different types of service models bear specific characteristics that would be eventually demonstrated by the services that belong to the layer, which is based on a particular service model. To design a service based on the aforementioned service models the Process Abstraction<ref name='ProcessAbstraction'>[http://www.soapatterns.org/process_abstraction.php Process Abstraction]</ref>, the [[Entity Abstraction Pattern|Entity Abstraction]] and the [[Utility Abstraction Pattern|Utility Abstraction]] design patterns can be applied as these design patterns help in structuring the solution logic of the services according to specific types.
The application of the Service Layers pattern would necessitate a change in the architecture of the service and the overall architecture of the service inventory<ref name="SvcArch">[[Service-Oriented_Architecture_Types|SOA Types]]</ref>.
==Considerations==
The application of this design pattern depends upon having enough knowledge about the kind of services in a service inventory before they are actually developed. Consequently, a [[Top-down_and_bottom-up_design|top-down]] service delivery approach<ref name="TopDown">[http://www.soamethodology.com/p9.php Top-Down Service Delivery Approach]</ref> needs to be adopted so that a pool of candidate services exists from which the need for different service layers can be established. This will increase the time and efforts required to actually deliver a set of usable services. Secondly, the confidence with which the need for different types of service layers can be established is directly proportional to the size of the service inventory. This means that as more and more services are added to the service inventory, the already established service layers may need to be modified in case new services do not fit into these existing service layers.
|