Soa
Soa
Ô
Ô
!
þ SOA Basics
þ SOA In The Real World
þ Connected Systems Architectures
þ SOA Clients
·
"#
þ Why SOA
þ 4 Tenets of SOA
þ roblems:
Systems today are bigger than ever before
³Complexity increases exponentially with size´ - Juval Lowey
Systems need to be interconnected
OO solved the problems of small-medium sized systems
CO (Component Orientation) solved problems OO couldn¶t on
medium-large systems
Neither OO nor CO could cope with the problems of very large
systems, systems of systems, or integration between systems
å
"#
$ %"&
"#
$ "'
þ Inefficient for:
Small ± medium sized systems
Non-distributed systems
"#
$ "'
´
"#
$ "'
Ë
"#
$
"
þ A service is autonomous
þ A service has explicit boundaries
þ A service exposes schema & contract, not class or
type
þ A service allows or denies use based on policy
â
"#
$
þ A service is autonomous
ââ
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
â
"#
$
u.Save();
}
â·
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
âå
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
â
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
â
"#
$
â´
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
âË
"#
$
þ A service is autonomous
You don¶t ³new´ a service ± it¶s just there.
þ A service has explicit boundaries
Services run in a separate process from their clients
A boundary must be crossed to get from the client to the
service ± network, security, «
þ A service exposes schema & contract, not class or
type
Clients send messages to a service that conform to a
contract
þ A service allows or denies use based on policy
The service decides what messages it processes
"#
$
BL.UserService.EnqueueRequest(sr);
}
â
"( )
þ essaging
þ Trust
þ Time
"( ) * ' !
!
·
"( ) * ' !
!
+ ,
- ".
/ ".
+ ,
- ".
/ ".
å
"( ) * ' !
!
+
,
3
(Ô
' !
!
4 ,
+
,
3
(Ô
' !
!
4 ,
+
,
3
(Ô
´
Ë
"( ) * ' !
!
Often, client code will need to temporarily store several changes in order to
send a single message -> Service agents do this.
·
"( ) * ' !
!
Client copies data from the services into it¶s own DB.
·â
"( ) *
·
"( ) *
Example: A new order for 500 widgets is sent based on the price, $1/widget
and the order should be processed only if the price doesn¶t increase
more than %5.
··
"( ) *
·å
+ %
þ What is a CSA
þ Scenarios
þ roblems
·
+ %
$
&
·
+ %
$
·´
+ %
$
·Ë
+ %
+ %
$ 3
â
"+
þ Requirements
þ Compared to Services
þ Deadlocks
þ Architecture
þ Message Flow
þ Solution Structure
"+
$ ) 5
·
"+
$ + ,
å
"+
$ Ô /
"+
$ Ô /
þ ros: This will make sure that only one thread can access a
group of objects at a time without dead locking.
þ Cons: Wrong division of SDs will lead to poor performance ±
negates requirements.
"+
$ Ô /
Corollaries:
All threads need their own copy of the data
Writing to the database (and log) should happen on it¶s own thread.
Sending messages at high speeds burdens the system ± separate thread
´
"+
$
%
9
( ,
Ë
"+
$ ' ! :
Ô
' !
+
7!
3
å
"+
$
åâ
å
!
Ô