Hi, As promised, I'm typing in some more detailed information about the definition of SOA. I was going to type some text from the two books related to IONA customer experiences with SOA (mine and Enterprise SOA) but I discovered some good information among our SOA training materials (also based on experiences within our customers' SOA projects), so I'm going to be a bit lazy and just cut and paste some of that.
I hope it provides helpful detail and formality around the definition of services and SOA. Apologies for the formatting difficulties in transfering the text from PowerPoint. Eric Definition of service --------------------- A service is a package of closely related standardized functions, which are called repeatedly in a similar fashion, and should therefore be implemented by a dedicated facility, which can be specialized to perform them. Example: Account Management A service can be partitioned and have multiple service functions. Example: Open new account The smallest subunits within service functions are called service primitives. Example: Generate next available account number Characteristics needed to describe a service -------------------------------------------- Service requester (client) --Who/which components use or need the service? --For the service requester, the provided service is most important, and not how it is implemented (principle of information and implementation hiding) Service provider (server) --Who/which components implement or provide the service? --is responsible for hosting the service, and ensuring the promised QoS -- may charge for service usage Qualities of Service (QoS) -- What are the parameters that allow to distinguish good service provisioning from bad? -- Examples: Reliable, predictable execution, cost, execution time, level of privacy, other guarantees Interfaces ---------- An interface constitutes the specification of a service, that is implemented by a certain component. The interface defines a contract, to which the component that implements it has to comply. Signature of interfaces can be described using formal languages -- Web Services Description Language (WSDL) -- OMG/ISO Interface Definition Language (IDL) (for CORBA) -- UML Object Constraint Language (OCL) -- But also: Java, C++ headers, . . . Type-safe interfaces sometimes introduce tight coupling -- Web Services dont force you into type-safe interfaces -- Different message types may be acceptable to a service On the question of architecture [Mary Shaw]: -------------------------------------------- Software architecture encompasses the set of significant decisions about the organization of a software system -- selection of the structural elements from which the system is composed, and the interfaces to these -- behavior as specified in collaborations among those elements -- (de)composition of these structural and behavioral elements into a larger system -- architectural style that guides this organization On the definition of architectural style ---------------------------------------- An architectural style defines a family of systems in terms of a pattern of structural organization [Garland/Shaw 96] An architectural style defines: -- a vocabulary of design elements such as components (client, server, filter, layer, adapter ), and connector types (pipe, broadcast, queue,...) -- a set of configuration rules (constraints) on how they can be combined Example styles in Software Architecture: Event-based, Repository-based, virtual machines, layered Good reference: Martin Fowler book on Enterprise Integration Architecture introduces notation for architectural components of enterprise systems Definition of SOA ----------------- The architectural style of an application is called service-oriented if it meets the following criteria: It is not monolithic; common blocks of functionality are broken out of the applications and are instead provided by services -- A significant part of the overall functionality is implemented by services, which exist otherwise independent of the application Design elements for an SOA are: -- Components: services (can be composites), consumers, providers -- Connector type: (remote) service invocations Configuration rules for an SOA are: -- No strict layering (service implementations can use other services) -- No centralized control entity -- Services are designed for shared use, and for use that may not even have been anticipated at design time Definition of service orientation --------------------------------- Service-Orientation is an organizational principle -- A set of principles for building large systems -- It is not tied to any particular technology Examples: -- Common horizontal services: Logging, authentication/single-sign-on, systems management, Directory lookup of services, event notification -- Vertical services, specific to your business domain: Product feature search service, Address management, Order Status Tracking Service, Truck/trailer tracking service As in organizations, there is always more than one way to structure a large system The most important question: How to decompose? -- What is the guiding abstraction mechanism? -- Why would one favor one decomposition for another? and so on... __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/service-orientated-architecture/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
