You are on page 1of 81

Ch!

"ng 3:
Lin tc Client-Server
3.1 Giao th!c truy"n thng - Protocol of communication
3.2 Cc yu c#u v chu$n giao th!c
3.3 Giao th!c v mi tr%&ng trung gian (Middleware)
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
3.6 SOAP - Simple Object Access Protocol
3.7 Tri/u g'i ph%0ng th!c t* xa (Remote Mothod Invocation )
RMI ?
3.8 Yu c#u ,-i t%.ng t* xa (Remote Object Request)
CORBA ?
3.1 Giao th!c truy"n thng - Protocol of communication
Lin k+t, truy"n thng d1a trn c0 s2 Text thng qua
m3ng gi4a Client v Server.

Truy"n pht m ASCII ho5c Unicode gi4a cc my
(ASCII American Standard Code for Infornation
Interchange - 128 k! t";
Unicode b#ng m m$ r%ng 256 k! t")
3.1 Giao th!c truy"n thng - Protocol of communication
Khi vi+t cc !ng d)ng trn m3ng c th6 truy c7p ,+n cc
ti nguyn m3ng thng qua hai giao di/n:TCP ho5c UDP
+ UDP (User Datagram Protocol): K+t n-i khng thi+t
l7p phin giao d8ch,
+ v TCP (Transmission Control Protocol) k+t n-i thi+t
l7p phin giao d8ch
3.1 Giao th!c truy"n thng - Protocol of communication
C9 hai giao th!c TCP v UDP n:m trong t#ng chuy6n
t9i (transport layer) gi4a cc !ng d)ng v IP (Internet
Protocol) trong t#ng m3ng (network layer).

TCP l d8ch v) truy"n ,3t ,; tin c7y cao trong truy"n
d4 li/u.
UDP k+t n-i khng c#n ,; tin c7y nh% TCP.
3.1 Giao th!c truy"n thng - Protocol of communication
Cc gi d4 li/u ,%.c g<i ,i s= tm ,%&ng ,+n
my ch( thng qua ,8a ch> IP, nh%ng khi ,+n
my ch( r?i, c#n ph9i c m;t ,8a ch> c@ng ,6
truy c7p d4 li/u cho !ng d)ng ,ang ch3y trn
my ch(.
3.1 Giao th!c truy"n thng - Protocol of communication
C@ng l ,8a ch> m m;t !ng d)ng c th6 dng ,%.c trn
my ch(, chAng h3n :
! HTTP: c@ng 80,
! FTP: c@ng 21;
! SMTP (Simple Mail Transfer protocol): 25,
! POP3: 110,
! v Gopher: c@ng 70;

3.1 Giao th!c truy"n thng - Protocol of communication
TCP/IP sockets:
! Cc nt - host ,%.c ,8nh danh b2i 1 c5p gi tr8 (g'i l
sockets): <B8a ch> IP c(a host, ,8a ch> c@ng d8ch v)>.
! V d): <192.168.7.25, 21> l socket cho d8ch v) FPT trn
host 192.168.7.25.
! Th1c hnh trn cc m ngu?n JAVA: l7p trnh m3ng qua
Socket.
3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP
Giao th!c truy"n t9i Siu vCn b9n
World Wide Web ,u.c xy d1ng d1a vo n"n c(a
Internet v s< d)ng giao th!c TCP/IP ,6 truy"n t9i
thng tin gi4a cc Web Client v Web server.
HTTP l giao th!c client/server dng cho World Wide
Web.

3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP (Hypertext Transfer Protocol)

Cung cDp cch ,6 Web Browser truy xuDt Web server
v yu c#u cc vCn b9n hypermedia ,%.c t3o b2i
HTML.
Cc vCn b9n HTML c th6 ch!a cc siu kin k+t
(hyperlink) ,+n cc n0i khc nhau, c th6 trong cng
m;t vCn b9n, m;t vCn b9n khc cng m;t Web site hay
m;t vCn b9n trn m;t Web site khc.
Ni chung, HTTP c nhi/m v) x< lE cc lin k+t v
cung cDp giao th!c truy"n tin cho client/server
3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP (Hypertext Transfer Protocol)
3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP (ti&p)
- HTTP ,%.c xy d1ng Internet & s< d)ng giao th!c
TCP/IP ,6 truy"n t9i thng tin.
- HTTP l giao th!c truy"n t/p tin gi4a Web Servers
v Web Client (Browser).
- Truy"n thng 2 pha:
> Client g<i yu c#u: truy vDn HTTP
> Server phn tch yu c#u, tm ki+m v g<i cu tr9
l&i: tr9 l&i HTTP.
3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP (ti&p)
Truy vDn HTTP g?m 3 thnh ph#n chnh:
Query line:
> l/nh yu c#u (GET,HEAD,POST,PUT,DELETE)
> URL yu c#u
> Phin b9n HTTP (th%&ng l HTTP/1.0).
Query header: ch!a thng tin v" Client (h/ ,i"u hnh,
lo3i browser, phin b9n, ...).
Query body (optional): ch!a d4 li/u ,i km theo query
(c th6 ch3y CGI).
3.1 Giao th!c truy"n thng - Protocol of communication
Giao th!c HTTP (ti&p)
Tr9 l&i HTTP:
1 dng tr3ng thi ch!a phin b9n HTTP, m lFi tr9 l3i
v thng bo lFi t%0ng !ng.
1 header (optional): ch!a m;t s- thng tin b@ sung cho
cu tr9 l&i c(a Server.
1 body: ch!a d4 li/u Client yu c#u.
Cc giao th!c khc (h'c vin t" tm hi(u): POP, SMTP,
GOPHER, XMODEM, TELNET, RLOGI N,
ZMODEM .
3.2 Cc yu c#u v chu$n giao th!c
Yu c#u v" m;t giao th!c ph h.p vGi lin k+t
trong !ng d)ng
B8nh nghHa r rng
Tnh ,#y ,( - Complete
Kh9 nCng phn tch c php - Parsable
Kh9 nCng m2 r;ng - Extendable
Ti li/u sIn sng - Avaiable document
3.2 Cc yu c#u v chu$n giao th!c
!"nh ngh#a r rng
M'i Bit d4 li/u ,%.c g<i ,i ph9i c v8 tr c(a n trong
m t9 giao th!c.
Giao th!c l m;t ngn ng4
Tnh ,#y ,( - Complete
Giao th!c ph9i bao hm tDt c9 cc tnh hu-ng sau:
+ D4 li/u v nghHa, khng thch h.p
+ Phin b9n Server ho5c Client qu cJ (cc giao th!c
khc nhau)
+ Cc yu c#u bDt h.p php
+ Cc ,i"u ki/n bao.
vv....
3.2 Cc yu c#u v chu$n giao th!c
Cc m)c tiu thi+t k+:
Cc gi thng tin ho5c cc thng bo r rng.
Cho php phn tch ,;c l7p c(a cc ng4 nghHa
Tnh nhDt qun - Consistency
Cho php dng l3i m code - Allow for code reuse
Tnh m"m dKo
3.3 Giao th!c v mi tr%&ng trung gian (Middleware)
C hai ki6u giao th!c c0 s2 : ,?ng b; v khng ,?ng b;
(Synchronous and Asynchronous)
Cc ki(u giao th)c *+ng b% : thi&t l,p phin giao d-ch
! Client g<i yu c#u ,+n server
! Server ,p l3i:tn hi/u sIn sng nh7n, g<i, ki6m tra,..k+t thc
V d): HTTP, POP, SMTP, GOPHER, XMODEM
3.3 Giao th!c v mi tr%&ng trung gian (Middleware)

Cc ki(u giao th)c khng *+ng b%
! C9 Client v server g<i thng tin ,+n nhau t3i cc th&i ,i6m
khc nhau
Cc v d): TELNET, RLOGIN, ZMODEM
Cc giao th!c ghp cJng c th6 ,%.c s< d)ng (A hybrid
protocol is also possible )
3.3 Giao th!c v mi tr%&ng trung gian (Middleware)
Cc thu$n l%i pht tri&n v s' d(ng Middleware:
Kh9 nCng ,;c l7p v" ngn ng4
Kh9 nCng ,;c l7p v" mi tr%&ng h/ ,i"u hnh -
Platform
Client v Server c th6 ,%.c pht tri6n ,;c l7p
Cc b)t l%i mi tr*+ng phn tn
Cc yu c#u lm vi/c 2 m!c thDp:
Phn tch d4 li/u Parsing
Cc lin k+t m3ng
3.4 L&i g'i th( t)c t* xa RPC( Remote Procedure Call )
L7p trnh mi tr%&ng khng k+t n-i m3ng:
Vi/c g'i cc th( t)c (procedure) theo thng l/ bnh
th%&ng;
Tham s- truy"n t9i ,+n procedure theo qui ,8nh g'i
th( t)c;
L&i g'i th( t)c l ,?ng b;;
Khng c s1 khc bi/t v" th&i gian, ti+n trnh;
Khng g5p kh khCn lin k+t, truy"n t9i d4 li/u;
T%0ng tc trong su-t;
RPC Development Process (R. Orfali
et..al. The essential Client/Server Survival Guide, Figure 8-4, p.123)
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
Bo3n code th6
hi/n giao di/n,
t%0ng tc Client/
Server
Bin d8ch ,8nh
nghHa giao di/n
MOM vs RPC (R. Orfali et..al. The essential Client/
Server Survival Guide, Figure 8-9, p.129)
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
Khi ni.m Stub: cc l/nh g'i th( t)c t* xa v tr9 l&i gi4a Client-
Server cho bn Client
Khi ni.m Skeleton: t7p cu l/nh ,i"u khi6n, cc ch> l/nh ho5c c9
hai ,oi hLi thng tin chn vo tr%Gc khi ,%a th1c hi/n cho Server
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
M;t client c th6 tri/u g'i t* xa m;t function ho5c
procedure trn server
Cc kh# n/ng:
- Lin k+t qua cc mi tr%&ng h/ ,i"u hnh khc nhau
( Cross platform )
- Khi vi+t ,o3n ch%0ng trnh RPC, Compiler giao di/n
chuy6n:
+ Stub
+ Skeleton
- Cc tham s- g'i th( t)c ph9i ,%.c Client g<i ,+n server
- K+t qu9 c(a l&i g'i th( t)c ph9i g<i l3i client
3.4 L&i g'i th( t)c t* xa - Remote Procedure Call
XML-RPC
RPC s< d)ng HTTP nh% l t#ng truy"n t9i (transport
layer) v XML ,6 ,8nh d3ng cc cu hLi chDt vDn
ho5c tr9 l&i.
Cho php kh9 nCng ,;c l7p v" ngn ng4 v h/ ,i"u
hnh (platform)
Cc h/ th-ng/ngn ng4 hF tr. ci ,5t XML-RPC:
Java, Perl, Python, Tcl, ASP, PHP, AppleScript, COM
Zope, WebCrossing
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
C th6 hnh dung Mng d)ng phn tn nh% t7p
cc ,-i t%.ng (giao ,i/n User, CSDL, cc
m,un c(a !ng d)ng....).
MFi ,-i t%.ng cho ch!c nCng, d4 li/u v
ph%0ng th!c ring, t%0ng tc vGi nhau th1c
hi/n yu c#u !ng d)ng.
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
- B-i t%.ng:
! D4 li/u ,%.c ,ng gi trong ch%0ng trnh
! C ,#y ,( tnh chDt c(a m;t ,-i t%.ng - l7p trnh h%Gng ,-i
t%.ng: tnh k+ th*a, tnh ,a hnh.....
! Cc ,-i t%.ng c th6 ,ng vai tr l Client, Server ho5c c9 hai.
Cng ngh/ !ng d)ng trong mi tr%&ng phn tn:
- B-i t%.ng
- B-i t%.ng phn tn
- Tc t< (Agent)
- Tc t< thng minh
= D4 li/u + Ph%0ng th!c
= D4 li/u + Ph%0ng th!c + Giao di/n
= D4 li/u+Ph%0ng th!c+Giao di/n (t%0ng tc)
= D4 li/u+Ph%0ng th!c
AI
+Giao di/n
AI
(t%0ng tc)
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
Distributed Objects (R. Orfali et..al. The essential Client/
Server Survival Guide, Figure 22-1, p.383)
a)LNp rp v ch3y
b) T%0ng tc
c) Tnh di ,;ng,
kh9 chuy6n
d) Cng t?n t3i,
chnh sch
" H phn tn = M!ng my t"nh + Phn mm phn tn.
" i t#ng phn tn:
# i t#ng: ng vai tr l Client, Server hoc c hai.
# Mi gii yu cu i t#ng: cho ph$p lin kt cc i t#ng qua m!ng.
# Cc d%ch v i t#ng: s dng thao tc v x l& i t#ng.
i t#ng Server
(Server Object)
i t#ng Client
(Client Object)
Mi tr%&ng trung gian (Middleware)
Cc d%ch v i t#ng
(Object services)
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
Cha kho ,6 pht tri6n thnh cng ki+n trc ,-i t%.ng
phn tn l:
Thi+t k+ v l7p trnh h%Gng ,-i t%.ng (C++, Java,...)
C0 s2 UML (k8ch b9n lin tc).
Ki+n trc ,a t#ng.
C0 s2 m3ng v cc d8ch v) hF tr. mi tr%&ng phn tn
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
Cc ki+n trc phn tn ch( y+u l:
CORBA (Comon Object Request Broker) by OMG
(Object Management Group).
RMI (Remote Mothod Invocation) or EJB
(Enterprise Java Bean).
M h'nh i t#ng thnh phn phn tn OLE,
DCOM v ActiveX: ngun gc t i t#ng COM
(Component Object Model) ca Microsoft.
Mi tr#ng t"nh ton phn tn DCE: c s phn
mm m.
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-
Server v Middeware
Middleware l ph!n m"m #i"u khi$n truy"n
thng d% li&u v thng #i&p ph'c t(p trn mi
tr)*ng m(ng v gi%a cc h& th+ng, gi%a cc
h& CSDL.
RPC
MOM
COMPONENTS
Complexity of technology
ORB
Sockets
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server

$ Cc m h'nh i t#ng cung cp cu trc nn: giao
tip gia cc thnh phn, cc ch#ng tr'nh ng dng
v cung cp cc d%ch v i t#ng:
La chn, pht trin m h'nh ki!n trc cc thnh phn
ca i t#ng phn tn

$ Cc m h'nh i t#ng khc nhau v kh nng lin
tc v cc d!ch v i t"ng.
La chn m h'nh i t#ng phn tn - mi tr#ng trung
gian
Cc tiu chun quan trng la chn
Nn tng: cc h iu hnh v thit b% m!ng.
Ngn ng lp tr'nh.
Chi ph": ph thuc vo yu cu ng dng.
phc t!p: khai thc s dng v m rng v sau.
Kh nng t"ch hp: cho ph$p m t, th hin cc ng dng.
Tim nng: hin t!i v pht trin nng cp.
H tr cho vic di chuyn: chun lin tc v d%ch v m!ng.
3.5 Ki+n trc ,-i t%.ng phn tn lin tc Client-Server
3.6 SOAP - Simple Object Access Protocol
Giao th!c truy c7p ,-i t%.ng gi9n ,0n
B%.c pht tri6n b2i : Userland, Microsoft, IBM, Lotus
S< d)ng thu7n tin h0n XML-RPC
B5c bi/t SOAP l b; ph7n trung tm c(a
Microsoft's .NET
Cc ngn ng4 hF tr.:
Java, Perl, C#, Frontier, C++, Visual Studio
3.7 RMI
Tri/u g'i ph%0ng th!c t* xa (Remote Mothod Invocation )
3.7 RMI
Tri/u g'i ph%0ng th!c t* xa (Remote Mothod Invocation )
* M)c ,ch: tri/u g'i ph%0ng th!c t* xa hay g'i th1c
thi m;t hm/ ,-i t%.ng trn m;t my khc.
* RMI l cch th!c giao ti+p gi4a cc ,-i t%.ng JAVA
c m l/nh ci ,5t (ph%0ng th!c v thu;c tnh) n:m
trn cc my khc nhau c th6 tri/u g'i lOn nhau.
* M hnh trn th6 hi/n: T%0ng tc c)c b; ? T%0ng tc
tri/u g'i ,-i t%.ng t* xa ?
3.7 RMI (Remote Mothod Invocation )
Tnh ph#c t$p khi tri%u g&i '(i t!)ng t* xa
Cc ,-i t%.ng trn hai my khc ho3t ,;ng trn hai ti+n
trnh khc nhau (khng gian ,8a ch>)
L&i g'i ph%0ng th!c t* xa 9nh h%2ng b2i k+t n-i m3ng,
c th6 s1 c- ,%&ng truy"n ?
G'i ph%0ng th!c c)c b; cc tham s- truy"n ,%.c ,%a ln
ngCn x+p - stack.
3.7 RMI (Remote Mothod Invocation )
Tnh ph#c t$p khi tri%u g&i '(i t!)ng t* xa
Tri/u g'i ph%0ng th!c t* xa cc tham s- ,%.c ,ng gi
v truy"n qua m3ng.
Mashalling l c0 ch+ truy"n v qu9n lE bi+n d4 li/u gi4a
2 my khc nhau.
Tnh an ton, tr'n vPn, b9o m7t ....t%0ng tc tri/u g'i ,-i
t%.ng t* xa (,8nh nghHa giao di/n).
3.7 RMI (Remote Mothod Invocation )
Cha kho '+ hi+u RMI :
Cc giao di%n ',nh ngh-a cch hnh '.ng (Interfaces
define behavior)
v cc l/p ',nh ngh-a th0c thi/ci '1t (classes define
implementation).
3.7 RMI (Remote Mothod Invocation )
Ki+n trc 3 t#ng RMI
3.7 RMI (Remote Mothod Invocation )
Cc t2ng c3a h% th(ng RMI l:
T#ng stub/skeleton: cc Stub bn pha Client v Cc
Skeleton bn pha Server.
T#ng tham chi+u t* xa: cch th!c tham chi+u t* xa.
T#ng chuy6n t9i: k+t n-i ci ,5t, qu9n lE v l%u v+t ,-i
t%.ng t* xa.
- Tri/u g'i ,-i t%.ng t* xa, t* Client ,+n 1 ,-i t%.ng t* xa
trn Server:
+ L&i g'i ph%0ng th!c ,i qua cc t#ng c(a h/ th-ng RMI,
+ B+n t#ng chuy6n t9i-pha Client,
+ B+n t#ng Chuy6n t9i pha Server
3.7 RMI (Remote Mothod Invocation )
Quan h% gi4a cc t2ng:
3.7 RMI (Remote Mothod Invocation )
Quan h% gi4a cc t2ng:
- Client tham chi+u 1 ,-i t%.ng t* xa c(a Server:
+ Thng qua tham chi+u ,+n Stub c)c b;.
+ Stub l m;t ci ,5t giao di/n t* xa ,6 tham chi+u
,-i t%.ng trn Server.
3.7 RMI (Remote Mothod Invocation )
Quan h% gi4a cc t2ng:
- T#ng tham chi+u t* xa c trch nhi/m:
+ Th1c hi/n l&i tri/u g'i thng qua lGp Skeleton,
+ Xc ,8nh v8 tr ,-i t%.ng t%0ng !ng.
+ Bi"u khi6n qu trnh tham chi+u trn Server.
+ C th6 th1c hi/n sao chp l3i ,-i t%.ng trn Server tr%Gc
khi th1c hi/n ph%0ng th!c.
3.7 RMI (Remote Mothod Invocation )
Quan h% gi4a cc t2ng:
- T#ng chuy6n t9i:
C trch nhi/m ci ,5t k+t n-i, qu9n lE k+t n-i v l%u l3i
v+t c(a qu trnh tham chi+u ,-i t%.ng t* xa (cc tr3ng
thi trung gian).
T#ng chuy6n t9i chuy6n l&i g'i t* xa ,+n t#ng tham chi+u
pha Server v t#ng tham chi+u yu c#u Skeleton ,6 tham
chi+u ,-i t%.ng trn Server.
3.7 RMI (Remote Mothod Invocation )
Vai tr c(a Stub/Skeleton
Mu-n tri/u g'i d8ch v) client ph9i s< d)ng Stub, m;t Application c
th6 bao g?m c9 Stub v Skeleton (V d) app c(a Host C).
3.7 RMI (Remote Mothod Invocation )
Vai tr c(a Stub/
Skeleton
tri/u g'i ,-i t%.ng
phn tn
- B-i t%.ng Java trn hai my khng g'i nhau tr1c ti+p m thng
qua lGp trung gian.
- Pha my khch lGp trung gian ,%.c g'i l Stub (lGp mc).
- Pha my ch( lGp trung gian ,%.c g'i l Skeleton (lGp n-i).
- Stub/ Skeleton l t#ng giao di/n gi4a t#ng !ng d)ng v cc t#ng
cn l3i c(a h/ th-ng RMI.
Transport
(today it is TCP)
Transport
(today it is TCP)
Remote Reference
Layer
Remote Reference
Layer
Stub/Skeleton
Layer
Stub/Skeleton
Layer
Local Virtual
Machine
Remote Virtual
Machine
Client
Object
Server
Object
- Vai tr c3a
Stub bn pha
Client:
+ Kh2i t3o m;t l&i g'i ,+n ,-i t%.ng t* xa (g'i t#ng tham chi+u t* xa).
+ SNp th! t1 cc thu;c tnh theo c0 ch+ truy"n v qu9n lE bi+n d4 li/u
gi4a cc ti+n trnh trn hai my (Marshal stream).
+ Bo cho t#ng tham chi+u t* xa th1c hi/n yu c#u c(a l&i g'i.
+ Nh7n gi tr8 tr2 v" ho5c thng bo lFi.
+ Bo cho lGp tham chi+u t* xa l&i g'i , hon thnh.
3.7 RMI (Remote Mothod Invocation )
Transport
(today it is TCP)
Transport
(today it is TCP)
Remote Reference
Layer
Remote Reference
Layer
Stub/Skeleton
Layer
Stub/Skeleton
Layer
Local Virtual
Machine
Remote Virtual
Machine
Client
Object
Server
Object
Nh7n cc thu;c tnh t* dng ,%.c sNp th! t1 do Client
g<i tGi.
T3o l&i g'i th1c s1 ,+n th1c thi c(a ,-i t%.ng t* xa.
SNp x+p cc gi tr8 tr9 l3i ho5c bo lFi v chuy6n vo
Marshal stream.
3.7 RMI (Remote Mothod Invocation )
Vai tr c3a
Skeleton pha
my ch3:
Transport
(today it is TCP)
Transport
(today it is TCP)
Remote Reference
Layer
Remote Reference
Layer
Stub/Skeleton
Layer
Stub/Skeleton
Layer
Local Virtual
Machine
Remote Virtual
Machine
Client
Object
Server
Object
Vai tr c3a t2ng tham chi5u t* xa
- T#ng tham chi+u th1c hi/n giao di/n vGi t#ng chuy6n t9i 2 m!c thDp.
- N c trch nhi/m ,6 th1c hi/n m;t giao th!c tham chi+u c) th6 v
,;c l7p vGi Stub v Skeleton.
- Cc giao th!c th>nh c#u khc nhau c th6 ,%.c th1c hi/n trong lGp
ny, chAng h3n:
+ Pht sinh l&i g'i ,i6m ,+n ,i6m.
+ Yu c#u v" nhm cc ,-i t%.ng ,%.c sao chp.
+ HF tr. cho chi+n l%.c sao chp c) th6,
+ HF tr. cho tham chi+u lin t)c tGi ,-i t%.ng t* xa.
+ Cc chi+n l%.c l5p l3i k+t n-i.
3.7 RMI (Remote Mothod Invocation )
3.7 RMI (Remote Mothod Invocation )
Vai tr c3a t2ng tham chi5u t* xa
- T#ng tham chi+u t* xa c 2 thnh ph#n ph-i h.p vGi nhau: Thnh
ph#n bn pha Client v Server:
+ Thnh ph#n bn pha Client ch!a thng tin ch> ra Server t* xa v
lin k+t thng qua t#ng chuy6n t9i tGi thnh ph#n pha Server.
+ Thnh ph#n pha Server ci ,5t cch tham chi+u t* xa c) th6 tr%Gc
khi l&i tri/u g'i ph%0ng th!c t* xa ,+n Skeleton.
- T2ng tham chi5u t* xa chuy+n d4 li%u t/i t2ng chuy+n t6i.
3.7 RMI (Remote Mothod Invocation )
Vai tr c3a t2ng chuy+n t6i
-T#ng chuy6n t9i c(a h/ th-ng RMI c cc vai tr sau:
+ Ci ,5t cc k+t n-i vGi cc vng ,8a ch> t* xa.
+ Qu9n lE cc k+t n-i.
+ Ki6m sot qu trnh k+t n-i.
+ LNng nghe cc l&i g'i ,+n.
+ Duy tr m;t b9ng cc ,-i t%.ng t* xa c% tr trn cc vng ,8a ch>.
+ Ci ,5t m;t k+t n-i khi c m;t l&i g'i tGi.
- K+t n-i m3ng c(a t#ng chuy6n t9i th%&ng l TCP/IP.
3.7 RMI (Remote Mothod Invocation )
Lm th5 no '+ Client tm '!)c d,ch v7 t* xa ?
tham chi5u qua 89ng k: '(i t!)ng
3.7 RMI (Remote Mothod Invocation )
(1) Server ph9i ,Cng kE d8ch v)
(2) Client tra c!u d8ch v)
(3) Client tri/u g'i ph%0ng th!c t* xa.
3.7 RMI (Remote Mothod Invocation )
Client tm cc d8ch v) t* xa thng qua d8ch v) tn ho5c th%
m)c.
RMI c th6 s< d)ng nhi"u d8ch v) th% m)c khc nhau - cc
JNDI (Java Naming and Directory Interface).
Ch%0ng trnh ,Cng kE d8ch v) rmiregistry ch3y trn my ch!a
cc ,-i t%.ng d8ch v) t* xa.
M5c ,8nh c@ng d8ch v) tn ho5c th% m)c l 1099.
3.7 RMI (Remote Mothod Invocation )
V d) kinh ,i6n: Ch%0ng trnh HellWorld, thi+t k+ ,-i t%.ng phn tn,
g'i ph%0ng th!c sayHello t* xa.
Ch!"ng trnh g;m 4 l/p, nh! sau:
B!/c 1:81c t6 giao di%n Interface cho '(i t!)ng t* xa-tn Hello.java
Hello.java
import java.rmi.*;
public interface Hello extends Remote{
public String sayHello()throws RemoteException;
}
Bin d,ch: Javac Hello.java
Khai bo th6 hi/n hm String sayHello()c th6 ,%.c tri/u g'i t* xa
B!/c 2: Th1c hi/n ci ,5t th1c thi cho lGp giao di/n Hello
HelloImpl.java
import java.rmi.*;
public class HelloImpl implements Hello{
public String sayHello() throws RemoteException {
System.out.println("Client request") ;
return "Hello World";
}
}
- Hello.class ch> l lGp giao di/n ,5c t9 cc ph%0ng th!c c(a
,-i t%.ng.
- T* lGp Hello.class, ,-i t%.ng th1c s1 ,%.c ci ,5t trong lGp
HelloImpl.class
3.7 RMI (Remote Mothod Invocation )
3.7 RMI (Remote Mothod Invocation )
- Bin d,ch: Javac HelloImpl.java
- D0a vo l/p HelloImpl.class, trnh bin d,ch Rmic.exe c3a
Java cung c<p hai l/p trung gian Stub v Skeleton,
- Bn Client s= d7ng Stub '+ tri%u g&i, bn server s= d7ng
Skeleton '+ th0c thi tri%u g&i.
Cu l%nh bin d,ch: Rmic HelloImpl
B!/c 3: Vi5t ch!"ng trnh ci '1t / kh>i t$o '(i t!)ng trn my ch3
Setup.java
import java.rmi.*;
import java.rmi.server.*;
public class Setup{
public static void main(String args[]) throws Exception{
HelloImpl hello=new HelloImpl();
UnicastRemoteObject.exportObject(hello);
System.out.println("Registering object ...");
Naming.bind("rmi://localhost/myhello",hello);
System.out.println("Waiting for client request...");
}
}
3.7 RMI (Remote Mothod Invocation )
--->>T3o ,-i t%.ng Hello th1c s1
->Thng bo ,-i t%.ng cho my 9o Java
>> ,Cng kE ,-i t%.ng vGi Rmiregistry.
3.7 RMI (Remote Mothod Invocation )
B!/c 4: Vi+t ch%0ng trnh th1c hi/n tri/u g'i ,-i t%.ng t* Client 2 xa
Client.java
import java.rmi.*;
public class Client{
public static void main(String args[]) throws Exception{
System.out.println("Finding object ...");
Hello obj=(Hello)Naming.lookup("rmi://localhost/myhello");
System.out.println(obj.sayHello());
}
}
Tm ,-i t%.ng
tri/u g'i theo tn
G'i ph%0ng th!c c(a ,-i t%.ng
3.7 RMI (Remote Mothod Invocation )
- Trong l/p Setup.java :
+ L%u E ph!"ng th#c:
UnicastRemoteObject.exportObject(hello);
> Thng bo s1 hi/n di/n c(a ,-i t%.ng cho my 9o Java
> B-i t%.ng c kh9 nCng tri/u g'i t* xa
> B6 s< d)ng ,%.c ph%0ng th!c trn c(a lGp
UnicastRemoteObject, ph9i khai bo ,#u ch%0ng trnh:
import java.rmi.server.*;
3.7 RMI (Remote Mothod Invocation )
- Trong l/p Setup.java :
+ Ph%0ng th!c: bind() c(a lGp Naming th1c hi/n ,Cng kE tn vGi b;
qu9n lE Rmi.
Naming.bind("rmi://localhost/myhello",hello);
Ph%0ng th!c Bind()c 2 ,-i s-:
> ChuFi ,8nh v8 URL c d3ng t@ng qut
> V B9n thn ,-i t%.ng c#n ,Cng kE.
URL: rmi://Hostname:port/ObjectName.
Trong ,:
> rmi tn giao th!c dng ,6 ,Cng kE.
> Hostname l ,8a ch> IP c(a my ch(.
> Port s- hi/u c@ng c(a my
// m5c ,8nh 1099 n+u khng ch> ra c@ng.
> ObjectName tn g.i nhG ,5t cho ,-i t%.ng.
- Trong Client.java
Client s< d)ng ph%0ng th!c Naming.lookup ,6 tri/u g'i ,-i t%.ng t* xa
theo tn
Hello obj=(Hello)Naming.lookup("rmi://localhost/myhello");
- D8ch ch%0ng trnh :
+ Bin d8ch cc 4 lGp java: Javac *.java
+ T3o lGp trung gian _Stub v _Skel: rmic HelloImpl
- Ch3y Ch%0ng trnh:
+ rmiregistry // Java cho php t1 t3o b; ,Cng kE c)c b; - xem sch.
+ Java Setup
+ Java Client
3.7 RMI (Remote Mothod Invocation )
3.7 RMI (Remote Mothod Invocation )
Remote
Remote
Object
Remote
Server
UnicastRemoteObject
I/O
Exception
Remote
Exception
Interfaces Classes
Tri/u g'i t* xa thng qua Interface
Qu trnh tri%u g&i ph!"ng th#c t* xa - RMI v/i l?p trnh Java
(1) B-i t%.ng - Server ci ,5t cc ph%0ng th!c v g'i hm
Naming.bind() ,6 ,Cng kE vGi b; qu9n lE mriregistry trn my ch( .
(2) B-i t%.ng - Client s< d)ng ph%0ng th!c Naming.lookup() ,6 truy tm
,-i t%.ng t* xa theo tn.
(3) B; ,Cng kE rmiregistry s= tr9 v" tham chi+u ,+n ,-i t%.ng t* xa
thng qua lGp giao di/n Interface m ,-i t%.ng 2 xa cung cDp.
(4) Thng qua lGp giao di/n Interface ,-i t%.ng 2 Client g'i ph%0ng
th!c c(a ,-i t%.ng trn Server.
(5) Khi m;t ph%0ng th!c ,%.c g'i, l&i g'i chuy6n ,+n lGp _Stub, lGp
tham chi+u t* xa chuy6n tham s- c(a ph%0ng th!c ,+n _Skel trn Server.
(6) LGp trung gian _Skel tr1c ti+p yu c#u ,-i t%.ng trn Server th1c thi
ph%0ng th!c v chuy6n k+t qu9 l3i cho Client.
3.7 RMI (Remote Mothod Invocation )
Ci '1t v thi5t k5 '(i t!)ng RMI:
(7) B5c t9 lGp giao di/n c(a ,-i t%.ng (Hello.java)
(8) D1a vo lGp ,5c t9 ci ,5t lGp ,-i t%.ng th1c thi
(HelloImpl.java)
(9) S< d)ng Rmic.exe bin d8ch lGp ,-i t%.ng th1c thi
(HelloImpl.class) pht sinh 2 lGp trung gian _Stub
(HelloImpl_Stub.class) v _Skel (HelloImpl_Skel.class).
(10) Vi+t ch%0ng trnh (Setup.java) ci ,5t ,-i t%.ng trn my ch(.
(11) S< d)ng lGp giao di/n (Hello.class) v lGp trung gian _Stub
(HelloImpl_Stub.class) ,6 vi+t ch%0ng trnh tri/u g'i ,-i t%.ng t*
xa (Client.java).
3.7 RMI (Remote Mothod Invocation )
3.7 RMI, Cc b%Gc pht tri6n !ng d)ng V d)
B#u tin vi+t giao
di/n c(a remote
objects;
S< d)ng k+ th*a t*
java.rmi.Remote
Lun ph9i s< d)ng
throw
RemoteException

package RMIbank;

public interface AccountManager
extends java.rmi.Remote {
public Account open(String name)
throws
java.rmi.RemoteException;

}










Khai bo ph%0ng th!c tri/u g'i
3.7 RMI, Cc b%Gc pht tri6n !ng d)ng V d)
Vi+t lGp
ci ,5t
package RMIbank;

import java.rmi.*;
import java.rmi.server.*;

public class AccountManagerImpl
extends UnicastRemoteObject
implements AccountManager
{
private String _name;
private Hashtable _accounts=new Hashtable();

public Account open(String name) throws
java.rmi.RemoteException {

Account account = (Account)
_accounts.get(name);
if(account == null) {
account = new AccountImpl(0);
_accounts.put(name, account);
}return account;
}



//SERVER PROGRAM

package RMIbank;


public static void main(String args[])
{
// Create and install a Security
Manager
System.setSecurityManager(new
RMISecurityManager());

try {
AccountManager manager = new
AccountManagerImpl();
String url = args.length > 0
? args[0]: "//hal/MyBank";
Naming.rebind(url, manager);
} catch (Exception e) {

}












Pha Client
import java.rmi.*;
public class Client {
public static void main(String[] args){
try {
String url = args.length > 1 ? args[1] : "//hal.cs.huji.ac.il/MyBank";
RMIbank.AccountManager manager =
(RMIbank.AccountManager) Naming.lookup (url);
String name = args.length > 0 ? args[0] : "default_user";
RMIbank.Account account = manager.open(name);
} catch (Exception e) {}}}
D8ch tDt c9 cc file .java files;
Ch3y ch%0ng trnh d8ch rmic ,6 pht sinh
stubs/skeletons t* cc file .class;
Ch3y ch%0ng trnh;
Cc b%Gc cu-i cng:
3.7 RMI (Remote Mothod Invocation )
M hnh ci '1t #ng d7ng
3.7 RMI (Remote Mothod Invocation )
Chuy+n tham s( trong cc l@i g&i ph!"ng th#c t* xa
Trong Java ,-i t%.ng ,%.c truy"n theo tham bi+n, cn cc ki6u d4
li/u ,0n gi9n nh%: Int, char,.... ,%.c truy"n theo tham tr8.
TDt c9 cc ki6u d4 li/u ,0n gi9n: int, char... ,"u ,%.c truy"n theo
tham tr8.
TDt c9 cc ki6u d4 li/u ki6u ,-i t%.ng mu-n truy"n qua m3ng ,"u
ph9i thu;c 1 trong 2 giao di/n Remote - tham bi+n/tham chi+u v
Serializable - tham tr8.
3.7 RMI (Remote Mothod Invocation )
Client chuy+n '(i t!)ng '5n Server theo tham tr,
- S< d)ng lGp Serializable - lGp rFng ,6 thng bo truy"n tham tr8.
- Ngoi vi/c ci ,5t cc lGp: giao di/n, lGp th1c thi, ci ,5t, tri/u g'i.
Khai bo ,-i t%.ng truy"n tham tr8 qua m3ng nh% sau:
Public class tn,-it%.ng implements Serializable {
Cc thu;c tnh;
Cc ph%0ng th!c;
}
- D8ch v ch3y th< v d) trong sch Java l7p trnh m3ng.
Client chuy+n '(i t!)ng '5n trnh ch3 theo tham bi5n
- Ph!c t3p khi chuy6n ,8a ch> v cDp pht b; nhG trn my ch(.
- Khi ,-i t%.ng truy"n trn m3ng qu lGn.
>> S< d)ng c0 ch+ g'i ng%.c t* xa t* Server ,+n Client n+u Client
th1c hi/n l&i tri/u g'i tham bi+n.
- Thm :
+ lGp giao di/n ch3y trn Server ,6 tri/u g'i l3i Client
+ cc thi+t l7p ,6 2 ,-i t%.ng trn Server v Client c th6 tri/u g'i
lOn nhau.
- Nghin c!u chi ti+t v d) trong sch Java l7p trnh m3ng.
3.7 RMI (Remote Mothod Invocation )
Tu2n t0 ho '(i t!)ng
Ghi ton b; ,-i t%.ng (tr3ng thi) thnh File v khi ph)c l3i
Xem sch Java l$p trnh m,ng
Dng m.t '(i t!)ng s6n sinh nhiAu '(i t!)ng Factory
Object
Xem sch Java l$p trnh m,ng
3.7 RMI (Remote Mothod Invocation )
3.7 RMI (Remote Mothod Invocation )
KB thu?t g&i '(i t!)ng t* xa bCng ph!"ng php '.ng
- G'i ph%0ng th!c ,;ng nghHa l : khng c#n ,+n lGp giao di/n c(a
,-i t%.ng trn my Server.
- Ph%0ng th!c Invoke()
- H'c vin ,'c v ch3y v d): Sch Java l7p trnh m3ng.
T0 '.ng kch ho$t '(i t!)ng t* xa
- C0 ch+ ci ,5t ,-i t%.ng c th6 tri/u g'i t* xa nh%ng khng c#n
ph9i cDp pht b; nhG v ,5t ,-i t%.ng trong tr3ng thi sIn sng.
- TDt nhin ph9i ,Cng kE s1 hi/n di/n c(a ,-i tr%.ng trn Server:
rmid v rmiregistry
- H-c vin: t. /-c sch v ch,y v d( sch Java l$p trnh m,ng.
3.7 RMI (Remote Mothod Invocation )
V<n 'A chnh sch b6o m?t t* pha Client
B9o v/ ch-ng nghe tr;m lin k+t: TCP Sockets.
B9m b9o tnh ,ng ,Nn thng tin sao chp: RMI yu c#u m;t lGp
qu9n lE b9o m7t.
Cc thao tc k+t n-i v sao chp t* Server v" Client thng qua lGp
b9o v/ securityManager
System.setSecurityManager(new RMISecurityManager()) ,%.c
,5t trong main().
- H-c vin /-c sch hi&u chi ti0t : Java l$p trnh m,ng.
Kh6 n9ng #ng d7ng c3a RMI
RMI ,0n gi9n dQ s< d)ng
RMI khng nhanh b:ng tri/u g'i c) b; (local)
RMI khng nhanh nh% s< d)ng cc giao th!c lin k+t vGi
m)c tiu c) th6.
RMI c th6 khng ,( hi/u qu9 ,-i cc !ng d)ng trong
th&i gian th1c, nh% cc !ng d)ng Video.
RMI s= hi/u qu9 n+u t-c ,; ,%&ng truy"n, bCng
thng,...lin k+t m3ng thu7n ti/n.
3.7 RMI (Remote Mothod Invocation )
T1ng k0t

You might also like