Middleware che dấu/ cung cấp cái gì
– Cung cấp sự trong suốt về vị trí:
• Một lập trình viên có thể gọi một method mà không cần biết
method đó thực sự đang tồn tại ở đâu (cùng máy, khác máy)
– Che dấu nghi thức truyền thông bên dưới
• UDP hay TCP
– Che dấu chi `ết về quá trình marshall tự động
– Độc lập với OS
– CORBA cho phép các ngôn ngữ lập trình khác nhau có thể
“nói chuyện) với nhau
• Sử dụng interface defini`on language (IDL)
48 trang |
Chia sẻ: lylyngoc | Lượt xem: 1808 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài 4: Middleware, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Middleware
Tham
khảo
:
Dr
Simon
Blake
Middleware
• Middleware
che
dấu/
cung
cấp
cái
gì
– Cung
cấp
sự
trong
suốt
về
vị
trí:
• Một
lập
trình
viên
có
thể
gọi
một
method
mà
không
cần
biết
method
đó
thực
sự
đang
tồn
tại
ở
đâu
(cùng
máy,
khác
máy)
– Che
dấu
nghi
thức
truyền
thông
bên
dưới
• UDP
hay
TCP
– Che
dấu
chi
`ết
về
quá
trình
marshall
tự
động
– Độc
lập
với
OS
– CORBA
cho
phép
các
ngôn
ngữ
lập
trình
khác
nhau
có
thể
“nói
chuyện)
với
nhau
• Sử
dụng
interface
defini`on
language
(IDL)
Interfaces
•
interface
là
gì
?
– Không
phải
là
GUI
– Interface
là
các
phương
`ện
kết
nối
hai
hệ
thống
khác
nhau
Interfaces
private
void
myCalc(){
System.out.println(sumNumbers(10,10));
System.out.println(sumNumbers(5,7));
}
public
int
sumNumbers(int
a,
int
b){
return
a+b;
}
Phương
thức
cộng
hai
số
nguyên
Phương
thức
tham
chiếu
đến
và
gọi
phương
thức
ở
trên.
Interfaces
• Interfaces
– Gọi
method
mà
không
cần
biết
code
của
nó
được
viết
thế
nào
– Chỉ
cần
interface
không
đổi
thì
vẫn
có
thể
gọi
như
cũ
private
void
myCalc(){
System.out.println(sumNumbers(10,10));
System.out.println(sumNumbers(5,7));
}
public
int
sumNumbers(int
a,
int
b){
int
result
=
a+b;
return
result;
}
Chúng
ta
thay
đổi
cài
đặt
của
thuật
toán
cộng
hai
số
nguyên
Tuy
vậy,
không
thay
đổi
ở
cách
gọi
phương
thức
cũ
Interfaces
• Interfaces
trong
hệ
thống
thông
`n
phân
tán
– Không
truyền
tham
chiếu
– Các
đối
số
hoặc
là
đối
số
Input
hoặc
Output
• Input
đối
số
chứa
các
giá
trị
sẽ
được
server
sử
dụng
• Output
đối
số
được
dùng
để
server
trả
giá
trị
cho
client
– Việc
truy
xuẩ
trực
`ếp
là
không
được
phép
• Mọi
trao
đổi
thông
qua
thông
điệp
(messages)
Interfaces
• Interfaces
trong
HTTT
phân
tán
– IDL:
Interface
Defini`on
Language
• Cung
cấp
một
sự
thỏa
thuận
để
mô
tả
interfaces
giữa
các
methods
• Bao
gồm
việc
phân
biệt
giữa
tham
số
Input
và
Output
Interfaces
• Một
ví
dụ
về
CORBA
IDL
struct
Person
{
string
name;
string
place;
long
year;
};
Interface
PersonList{
readonly
aribute
string
listname;
void
addPerson(in
Person
p);
void
getPerson(in
string
name,
out
Person
p);
long
number();
};
Contains
marshalling
informaSon
Interfaces
• An
example
CORBA
IDL
struct
Person
{
string
name;
string
place;
long
year;
};
Interface
PersonList{
readonly
aribute
string
listname;
void
addPerson(in
Person
p);
void
getPerson(in
string
name,
out
Person
p);
long
number();
};
And
also
remote
method
interfaces
Truyền
thông
giữa
các
đối
tượng
phân
tán
• Mô
hình
đối
tượng
– Đối
tượng
có
dữ
liệu
và
phương
thức
– Các
đối
tượng
tương
tác
với
nhau
thông
qua
phương
thức
– Các
đối
tượng
có
thể
cho
phép
đối
tượng
khác
truy
xuất
đến
dữ
liệu
bên
trong
của
nó
• Tuy
vậy
trong
DIS
các
đối
tượng
ở
trên
các
máy
khác
nhau
data
methods
class
Mô
hình
đối
tượng
phân
tán
• Trong
mô
hình
đối
tượng
– Chỉ
truy
xuất
thông
qua
interfaces
– Các
đối
tượng
có
thể
thực
thi
trong
các
`ến
trình
phân
biệt
• Các
đối
tượng
phân
tán
cũng
thực
thi
như
các
`ến
trình
độc
lập
và
truyền
thông
thông
qua
interfaces
• Tuy
vậy,
trong
các
`ến
trình
trong
DIS
có
thể
chạy
trên
các
máy
khác
nhau
– Truyền
thông
có
thể
thông
qua
RMI
• Trong
một
DIS
một
chương
trình
có
thể
sử
dụng
một
chuỗi
các
`ến
trình
cục
bộ
hoặc
từ
xa
Các
đối
tượng
phân
tán
RI
A
RI
=
Remote
InvocaSon
LI
=
Local
InvocaSon
=
an
object
=
a
message
client
RI
RI
LI
LI
LI
C
B
E
F
D
G
server
• Một
ví
dụ
client
server
Mô
hình
đối
tượng
phân
tán
(The
Distributed
Object
Model)
• Các
đối
tượng
có
thể
được
định
nghĩa
để
nhận
các
yêu
cầu
cục
bộ
hay
từ
xa
• Để
tạo
một
lời
gọi
từ
xa,
người
gọi
phải
có
một
tham
chiếu
đối
tượng
từ
xa
• Các
đối
tượng
từ
xa
phải
có
một
interfaces
từ
xa
trong
đó
xác
định
rõ
các
method
có
thể
gọi
từ
xa
The
Distributed
Object
Model
• Remote
interface
example
Data
Remote
object
m4
m5
m6
ImplementaSon
of
methods
m1
m2
m3
Remote
interface
A
process
A
process
RMI
(Remote
Method
InvocaSon)
• RMI
được
cài
đặt
thế
nào?
– RMI
tổ
hợp
nhiều
đối
tượng
và
modules
• Module
truyền
thông
• Module
tham
chiếu
từ
xa
• Phần
mềm
RMI
– Proxy
– Dispatcher
– Skeleton
• binder
• Garbage
collec`on
• Ac`va`on
mechanisms
• And
there
are
more
RMI
– >>>
PICTURE
HERE
<<<
– Client
• Chứa
các
proxies
đại
diện
cho
các
đối
tượng
từ
xa
• Module
tham
chiếu
từ
xa
• Cũng
có
thể
có
một
binder
đến
cấc
đối
tượng
từ
xa
• Một
modue
truyền
thông
– Server
• Chứa
các
skeletons
và
các
dispatchers
• Module
truyền
thông
request
reply
Skeleton,
dispatcher
for
B
Remote
reference
module
Remote
reference
module
Proxy
For
B
CommunicaSon
module
B
A
Ví
dụ:
đối
tượng
A
tạo
một
lời
gọi
từ
xa
đến
đối
tượng
B
RMI
• RMI
được
cài
đặt
như
thế
nào
?
request
reply
Skeleton,
dispatcher
for
B
Remote
reference
module
Remote
reference
module
Proxy
For
B
B
A
Ví
dụ:
Đối
tượng
A
thực
hiện
lời
triệu
gọi
từ
xa
một
phương
thức
của
đối
tượng
B
RMI
• Module
truyền
thông
– Cái
đặt
các
nghi
thức
yêu
cầu-‐trả
lời
(Request-‐Reply)
dùng
trong
truyền
thông
• Module
tham
chiếu
từ
xa
– Xác
định
các
tham
chiếu
là
cục
bộ
hay
từ
xa
– Đảm
nhiệm
việc
tạo
các
tham
chiếu
đối
tượng
– Chứa
bảng
các
đối
tượng
từ
xa
RMI
• Proxy
– Làm
cho
các
methods
trong
suốt
với
các
`ến
trình
cục
bộ
– Tham
chiếu
đối
tượng
từ
xa
trực
`ếp
gởi
đến
proxy
để
chuyển
chúng
đến
các
method
từ
xa
– proxy
sẽ
chuyển
đổi
dữ
liệu
theo
dạng
ngoài
(marshals)
và
chuyển
đổi
kết
quả
thành
dạng
dữ
liệu
trong
(un-‐marshals)
– The
proxy
chứa
các
interfaces
của
các
methods
từ
xa
và
gởi
lời
gọi
đến
chúng
thông
qua
các
interface
này
RMI
• Dispatcher
– Nhận
thông
điệp
từ
module
truyền
thông,
chọn
và
chuyển
thông
điệp
đến
đúng
skeleton
cho
đối
tượng
từ
xa
• Skeleton
– Un-‐marshals
yêu
cầu
và
gọi
các
method
từ
xa
liên
quan
– Marshals
câu
trả
lời
– Gởi
câu
trả
lời
đến
Proxy
yêu
cầu
(thông
qua
module
truyền
thông)
RMI
• Servant
–
cung
cấp
cài
đặt
cho
một
lớp
từ
xa.
– Chạy
trên
một
`ến
trình
server
process
– là
một
biên
nhận
cho
yêu
cầu
từ
xa
phát
ra
skeleton
RMI
– An
example
of
a
request
request
reply
Skeleton,
dispatcher
for
B
Remote
reference
module
Remote
reference
module
Proxy
For
B
B
A
Example:
Objects
A
makes
a
remote
method
invoca`on
of
object
B
RMI
• Triệu
gọi
tỉnh
– Các
Proxies
được
tạo
trước
khi
thực
hiện
sử
dụng
interfaces
từ
xa
• Triệu
gọi
động
– Thường
dùng
khi
tất
cả
các
methods
từ
xa
là
chưa
xác
định
lúc
thiết
kế
– Client
cung
cấp
một
tham
chiếu
đối
tượng
từ
xa
(remote
object
reference),
tên
method
và
các
đối
số
– Rồi
middleware
sẽ
xác
định
đối
tuong
từ
xa
nào
đươc
triệu
gọi
RMI
• Binder
– Một
service
ở
client
nhận
và
lưu
trữ
các
tham
chiếu
đối
tượng
từ
xa
• Java
RMIregistry,
CORBA
Naming
service
– Ánh
xạ
từ
tên
đến
tham
chiếu
của
đối
tượng
từ
xa
– Servers
cần
đăng
ký
các
dịch
vụ
đang
được
cung
cấp
cho
binder
• Sever
– Có
thể
chọn
thực
hiện
một
thread
cho
mỗi
RMI
RMI
Kích
hoạt
đối
tượng
từ
xa
– Đối
tượng
chủ
động
và
bị
động
• Một
đối
tượng
chủ
động
(Ac`ve
object)
là
một
xuất
hiện
của
đối
tượng
trong
một
`ến
trình
thực
hiện
• Một
đối
tượng
thụ
động
(Passive
object)
là
đối
tượng
hiện
thời
không
hoạt
động
nhưng
có
thể
kích
hoạt
– Người
kích
hoạt
(Ac`vator)
có
nhiệm
vụ
• Ghi
nhận
các
passive
objects
sắn
sàng
được
kích
hoạt
• Theo
vết
các
vị
trí
các
servers
có
các
đối
tượng
đã
được
kích
hoạt
• Khởi
tạo
`ến
trình
xử
tên
và
kích
hoạt
các
đối
tượng
RMI
• Lưu
trữ
đối
tượng
bền
vững(Persistent
object
stores)
– Một
đối
tượng
sống
giữa
các
lần
kích
hoạt
của
các
`ến
trình
được
gọi
là
persistent
Object
– Lưu
trữ
trạng
thái
của
một
đối
tượng
ở
dạng
marshalled
(serialised)
xuống
đĩa
• Recall
in
Java
the
implements
serialisable
• Dịch
vụ
định
vị
(Loca`on
service)
– Các
đối
tượng
có
thể
di
chuyển(Migrate)từ
hệ
thống
này
đến
thệ
thống
khác
– Cần
giải
pháp
để
quản
lý
ánh
xạ
giữa
tham
chiếu
của
đối
tượng
với
vị
trí
thật
của
đối
tượng
CORBA
• CORBA
là
gì?
“CORBA
is
a
middleware
that
allows
applica6on
programs
to
communicate
with
one
another
irrespec6ve
of
their
programming
languages,
their
hardware
and
so=ware
pla>orms,
the
networks
they
communicate
with
and
their
implementers”
[Coulouris
et
al,
2001]
– Được
OMG
hỗ
trợ
OMG
(Object
Modelling
Group)
CORBA
căn
bản
• Các
thành
phần
chính:
– ORBs
– IDL
– CORBA
Services
CORBA:
Kiến
trúc
• Key
concepts
– ORB
core
– Object
adaptor
– Skeletons
– Client
stub/proxies
– And
some
others:
• Repositories
(implementa`on
&
interface)
• Dynamic
invoca`on
interface
• Dynamic
interface
CORBA:
Kiến
trúc
• Object
Request
Broker
(ORB)
– ORB
cho
phép
clients
gọi
các
phương
thức
của
các
đối
tượng
từ
xa
– Các
đối
tượng
từ
xa
được
gọi
là
các
đối
tượng
CORBA
được
bao
trong
CORBA
IDL
– Clients
gởi
yêu
cầu
đến
ORB
– ORB
có
trách
nhiệm:
• Xác
định
vị
trí
của
đối
tượng,
• Kích
hoạt
đối
tượng
• Và
gởi
yêu
cầu
của
client
đến
đối
tượng
CORBA:
Kiến
trúc
CORBA:
Kiến
trúc
• ORB
cung
cấp:
– Trong
suốt
về
truy
xuất
(Access
transparency)
• Phương
thức
của
đối
tượng
được
gọi
theo
cùng
một
cách
cho
dù
chúng
là
cục
bộ
hay
từ
xa
– Trong
suốt
vị
trí
(Loca`on
transparency)
– Trong
suốt
cài
đặt
(Implementa`on
transparency)
– Trong
suốt
về
kiến
trúc
phân
tán
CORBA:
Kiến
trúc
• Skeletons
– Thông
điệp
được
gởi
thông
qua
skeletons
để
đến
đúng
server
cần
đến
(servants)
– Skeletons
`ến
hành
un-‐marshalling
và
marshalling
• Client
stubs/proxies
– Stubs
dùng
cho
ngônng
ngữ
thủ
tục
– Proxies
dùng
cho
ngôn
ngữ
OO
languages
– Marshal
các
đối
số
client
trong
lời
triệu
gọi
CORBA:
Kiến
trúc
• The
Object
Adaptor
– Cầu
nối
giữa
CORBA
IDL
và
ngôn
ngữ
lập
trình
– Trách
nhiệm:
• Tạo
đối
tượng
từ
xa
tham
chiếu
đến
các
đối
tượng
CORBA
• Phân
gỉai
lời
triệu
gọi
thông
qua
skeleton
• Kích
hoạt
đối
tượng
CORBA:
Kiến
trúc
ORB
core
ORB
core
Object
Adaptor
Skeletons
Proxy
for
A
Servant
A
Client
program
request
reply
CORBA:
Architecture
"Distributed
Object
CompuSng
with
CORBA,"
htp://www.cs.wustl.edu/~schmidt/corba-‐overview.html
CORBA:
IDL
• CORBA
IDL
– Is
used
to
define
the
remote
methods
for
use
by
clients
– Servers
define
IDL
for
the
methods
that
will
use
the
ORB
– Server
implements
the
IDL
– Clients
program
to
the
IDL
specifica`on
– Provides
facili`es
for
defining
modules,
interface
types,
aributes
and
method
signatures
Interface
Stock{
readonly
aribute
double
stockPrice;
readonly
aribute
string
stockCode;
void
getStockPrice(in
string
stockCode,
out
double
stockPrice);
}
Defines:
1
method
2
aributes
A
Server
must
then
implement
the
method
A
Client
may
call
the
server
method
using
the
IDL
signature
IDL:
more
complex
1
excep`on
NoCashExcep`on
{
2
string
reason;
3
};
4
5
interface
Account
{
6
readonly
aribute
double
balance;
7
readonly
aribute
string
owner;
8
void
add(in
double
amount);
9
void
remove(in
double
amount)
raises
(NoCashExcep`on);
10
};
13
module
bank
{
14
excep`on
OpenExcep`on
{
15
string
reason;
16
};
17
18
interface
Posi`on
{
19
void
open(in
string
name,in
double
init)
raises
(OpenExcep`on);
20
double
close(in
::Account
account);
21
::Account
get(in
string
name);
22
};
23
};
Microso¦
DDE
đến
DCOM
• Lịch
sử
– DDE
(Dynamic
Data
Exchange)
– OLE
(Object
Linking
and
Embedding)
– COM
(Compound
Object
Model)
– Ac`veX
– DCOM
(Distributed
Compu`ng
Environment
DCE
+
COM)
• Chúng
ta
sẽ
§m
hiểu
tổng
quan
vềCOM
và
DCOM
DCOM
• Distributed
COM
(DCOM)
extends
COM
for
distributed
systems
allowing
remote
calls
• Based
on
Distributed
Communica`on
Exchange
(DCE)
• Can
uses
proxies
and
stubs
• Can
also
use
the
DCOM
network
protocol
DCOM
• The
DCOM
intra-‐network
model
Security
DCE
RPC
LPC
Client
Proxy
Stub
Server
DCOM
network
protocol
Security
DCE
RPC
LPC
SOAP
• SOAP
(Simple
Object
Access
Protocol)
• A
scheme
for
using
XML
as
RR
messages
• Services
are
offered
through
web
standards
• SOAP
is
built
on
XML
and
uses
HTTP
• Underneath
that
is
TCP/IP
and
network
protocols
Client
Server
SOAP
XML
HTTP
SOAP
• Interoperability
through
wrapping
• Wrap
other
technologies
in
SOAP
messages
CORBA
JAVA
.NET
DCOM
LEGACY
SOAP
SOAP
• Tại
sao
SOAP?
– Không
cho
phép
kết
nối
trực
`ếp
giữa
các
hệ
thống
con
để
tăng
độ
an
toàn
– Các
hệ
thống
con
sử
dụng
các
middleware
khác
nhau
– Các
hệ
thống
chia
sẽ
tài
nguyên
sử
dụng
Web
service
sử
dụng
SOAP
như
giải
pháp
công
nghệ
để
«nh
hợp
SOAP
SOAP
header
SOAP
body
Security
context
Signatures
Name
of
procedure
Input
param
1
Input
param
2
SOAP
message
env:envelope
xmlns:env
=
namespace
URI
for