Probably SOA is mostly linked with Web Services: They are mostly used to open existing architectures and systems on specific points and allocate them via HTTP or
HTTPS. This procedure features mainly one thing: An easy way of B2B connection. Because of the loose coupling of Web Services are optimal for reuse. This idea
results in the (older) idea, of building a “legobox” of interoperable, reusable services. All we need next is an architecture that allows to composite the existing Services.
And this architecture could be SOA.
But wait: Module, composition, reusability: Isn’t that an old hat? What’s the difference to Enterprise Application or component based architecture? Isn’t that the
same idea? It probably is. But there are a few details, which make a big difference.
Component-based architecture:
A component is a software object, meant to interact with other components, encapsulating certain functionality or a set of functionalities. A component has a
clearly defined interface and conforms to a prescribed behaviour common to all components within an architecture.
The goal of generative and component-based software engineering is to increase productivity, quality, and time-to-market in software development thanks to the
deployment of both standard componentry and production automation. One important paradigm shift implied here is to build software systems from standard
componentry rather than "reinventing the wheel" each time. This requires thinking in terms of system families rather than single systems. Another important paradigm
shift is to replace manual search, adaptation, and assembly of components with the automatic generation of needed components on demand. Generative and
component-based software engineering seeks to integrate domain engineering approaches, component-based approaches, and perespective based architecture.
A component model is probably used for the developing and executing of components. This model defines a framework, which defines structural requirements
for connection- and composition options as well as behaviour-oriented requirements for collaboration options to the components. Beyond that a component model
provides an infrastructure which implements frequently used mechanism like persistence, message-exchange, security and versioning. The idea is to build
exchangeable software units through clearly defined interfaces. Different manufactures offer platforms like DCOM, JavaBeans, Enterprise JavaBeans, and
CORBA.
Service-oriented architecture (SOA)
There are a lot of definitions of Service Oriented Architecture, some of which are: A service Oriented Architecture is a set of components which can be invoked and
whose interface descriptions can be published and discovered. (W3C) SOA is an architectural style whose goal is to achieve loose coupling among
interacting software agents. A service is a unit of work done by a service provider to achieve desired end results for a service consumer. Both provider and consumer are
roles played by software agents on behalf of their owners. Service-oriented architecture (SOA) is an architectural software concept that defines
the use of services to support business requirements. In an SOA, resources are made available to other participants in the network as independent services that are
accessed in a standardized way. Most definitions of SOA identify the use of web services (using SOAP, WSDL and UDDI) in its implementation; however it is possible
to implement SOA using any service-based technology. Unlike traditional object-oriented architectures, SOAs are comprised of loosely
joined, highly interoperable business services. As these services are interoperable via different development technologies (such as Java and .NET), the software components are very reusable. In this way, SOA shares fundamental similarities with CORBA.
The variety and inaccuracy of the definitions of the Service-oriented architecture makes it hard to say if SOA is only accessible with Web Services or if for example
interfaces for Enterprise JavaBeans can also be “invoked, published and discovered.” These possibilities will not be excluded to consider similarities and varieties of the
Service-oriented architecture and component based architecture (like the referred Enterprise JavaBeans) in more detail.
The Service provider publishes the Web Service at a discovery agency. The potential service requestor searches for a service at the discovery agency, acquires the URL of the
required service, gets the WSDL file, builds the client and uses the provided service.
In table below I explain deference between web service and com
|
|
Web Services
|
Shared Components
|
|
Client Application
|
Can be any client application (.Net or not .Net) like:
Other web services, web applications, windows application, Flex applications
|
must be .Net application only like:
web services, web applications, windows application, …
|
|
Client Environment
|
Local or Remote
|
local or Remote
|
|
References
|
It can have a reference to other web services or other shared components
|
It can have only references to the other shared components and not web services.
|
|
Client Update
|
Is updated automatically.
|
You must copy the new assembly to the client.
|
|
Reusability
|
You should just know the URL of the existing web service, and enjoy using it.
|
You must copy the assembly with all its dependency involved to the new place.
|
|
Performance in the same .Net environment
|
Lower, as it desterilize and serialize objects to XML
|
Higher, because you can access it directly in a .Net application only.
|
|
Security
|
Higher because IIS applies its security
|
Lower, as you should apply the security manually
|