Almost all developers know something about Object Oriented
Programming (OOP) which has been a common way to build software for a long
time. But what is Service Oriented architecture?
In recent years, development moved from building centralized
local systems to distributed systems which run on several places. Each part of
these systems are hosted somewhere and provide some services. The idea of
having services to answer to common needs through the web became serious and
development technologies answered to this need by providing Web Services in
their core, but day after day distributed systems became more common and the
idea of Service Orientation (SO) was born.
Service Orientation is a complement to Object Orientation. It
means you will not kick Object Orientation out to use Service Orientation. Service
Orientation uses Object Orientation in its core, but there are some distributed
scenarios that can be viewed by Object Orientation so you use Service
Orientation to describe these scenarios.
In Service Orientation you think different and describe
things via services and divide your system into smaller parts which run as
services. These services can communicate with others via messages. In each
service you can apply Object Orientation to accomplish goals of that service.
One important benefit of Service Orientation is here because you can use
different technologies and platforms to design a service by using Object
Orientation then use universal formats to build messages and start
communication between different pieces of your system.
There are four principles in Service Orientation (you may
see them as tenets on other resources):
Boundaries are explicit.
Services are autonomous.
Services share schema and contract, not class.
Service compatibility is determined based on policy.
You can read more about these fundamentals (they are
important principles) on MSDN.
Generally, you have to change your point of view in Service
Oriented design, but this should not change your view for Object Oriented Programming.
You should get enough experience to divide a system to logical independent
services then choose appropriate platform to build each piece. Thankfully,
Microsoft helps you in all stages and you can use powerful Microsoft
technologies to build your distributed software.
Service Oriented Architecture (SOA) is a concept beyond the
scope of these tutorials. I recommend you to read good books about Service
Oriented Architecture to learn more about it. Having a good understanding of
this architecture is an important requirement to be success in this field.