Separation of Concerns in Service-Oriented ...

3 downloads 60143 Views 979KB Size Report
With such, efforts developers code the application assuming that providers adhere ... DI4WS is instead based on pervasive development patterns (Dependency ...
Separation of Concerns in Service-Oriented Applications Based on Pervasive Design Patterns Cristian Mateos, Marco Crasso, Alejandro Zunino, Marcelo Campo ISISTAN Research Institute - UNICEN and CONICET (Argentina)

Problem statement Service-Oriented Computing (SOC) is a relative new and exciting paradigm for distributed computing Key goals (from a developer's perspective): Reusability Discoverability (e.g. UDDI) Loose coupling

The Web Service canonical model

Problem statement (cont.) Service-Oriented Computing (SOC) is a relative new and exciting paradigm for distributed computing Key goals (from a developer's perspective): Reusability Discoverability (e.g. UDDI) Loose coupling

So, how do we take advantage of these three without making SOC development a painful experience?

Related efforts Many of the existing approaches consider service-related details when invoking Web Services as crosscutting concerns Existing efforts share a common idea, i.e. to isolate applications from such details

Separation of concerns seems to be the right path towards truly loose coupling Layering (Daios, WSIF, Apache CXF) Source code annotations (Spring) AOP (WSSI, WSML)

Related efforts (cont.) Some related efforts are contract-subordinated, or API-based: WSIF, Apache CXF, Daios, Spring, WSSI and WSML With such, efforts developers code the application assuming that providers adhere to abstract contracts, which is not true Other efforts also consider service contracts as crosscutting concerns Generative Programming is used to free developer from adapting providers' specific contracts to abstract contracts Motahari Nezhad et al., (framework placeholders) Cavallaro et al. (custom XML-based mapping language) Nagano et al. (generic formal specifications)

Our proposal - DI4WS DI4WS advocates to a code-first approach to service outsourcing Unlike existing code-first approaches, DI4WS avoids the usage of ad-hoc languages and formalisms DI4WS is instead based on pervasive development patterns (Dependency Injection and Adapters) DI4WS is based on the well-established component-oriented development paradigm and assumes good development practices DI4WS is technology-agnostic (we have an implementation based on Java/Spring/WSDL2Java though)

DI4WS - Component model

Loose coupling in DI4WS Lightweight formalism If a SOC application with m internal components {C1..Cm} invokes n services {S1..Sn}, its overall Ce (Efferent Coupling) can be determined by: m n

C e =∑ ∑ C ij i=1 j =1

When Ci j = 1, the in-house component Ci is coupled to the contract of Sj

Loose coupling in DI4WS Lightweight formalism (cont.) non DI4WS

n

Suggest Documents