38
I. Tìm hiểu về ORB của CORBA 1. Chương trình môi giới trung gian ORB( Object Request Broker) a. Dich thuật: Object: Đối tượng Request: Hỏi, yêu cầu Broker: Người môi giới trung gian Object Request Broker: Trình môi giới trung gian các yêu cầu của đối tượng. b. ORB là gì? ORB là một dịch vụ phân tán thực thi yêu cầu đến các đối tượng ở xa. Nó định vị đối tượng ở xa trên mạng, gửi yêu cầu đến đối tượng, chờ kết quả và khi sẵn sằng thì gửi các kết quả này trở lại cho client. ORB thực thi vị trí trong suốt. Chính xác là cơ chế yêu cầu giống nhau được sử dụng bởi client và đối tượng CORBA mà không quan tâm đến vị trí của đối tượng. Nó có thể nằm trong một bộ xử lí với client, hoặc ở bất kì nơi nào. ORB thực thi các ngôn ngữ lập trình độc lập với các yêu cầu. Client đưa ra một yêu cầu được viết bởi một ngôn ngữ lập trình có thể khác với ngôn ngữ lập trình viết trong đối tượng CORBA. ORB thực hiện việc dịch cần thiết giữa các ngôn ngữ lập trình. Các liên kết ngôn ngữ được định nghĩa cho tất cả các ngôn ngữ lập trình thông dụng.

ORB va COS Naming

Embed Size (px)

DESCRIPTION

ORB va COS Naming

Citation preview

Page 1: ORB va COS Naming

I. Tìm hi u v ORB c a CORBAể ề ủ1. Ch ng trình môi gi i trung gian ORB( Object Request Broker)ươ ớ

a. Dich thu t:ậObject: Đ i t ngố ượRequest: H i, yêu c uỏ ầBroker: Ng i môi gi i trung gianườ ớ Object Request Broker: Trình môi gi i trung gian các yêu c u c aớ ầ ủ

đ i t ng.ố ượ

b. ORB là gì?ORB là m t d ch v phân tán th c thi yêu c u đ n các đ i t ng xa.ộ ị ụ ự ầ ế ố ượ ở

Nó đ nh v đ i t ng xa trên m ng, g i yêu c u đ n đ i t ng, ch k tị ị ố ượ ở ạ ử ầ ế ố ượ ờ ế qu và khi s n s ng thì g i các k t qu này tr l i cho client.ả ẵ ằ ử ế ả ở ạ

ORB th c thi v trí trong su t. Chính xác là c ch yêu c u gi ng nhauự ị ố ơ ế ầ ố đ c s d ng b i client và đ i t ng CORBA mà không quan tâm đ n vượ ử ụ ở ố ượ ế ị trí c a đ i t ng. Nó có th n m trong m t b x lí v i client, ho c b tủ ố ượ ể ằ ộ ộ ử ớ ặ ở ấ kì n i nào. ơ

ORB th c thi các ngôn ng l p trình đ c l p v i các yêu c u. Client đ aự ữ ậ ộ ậ ớ ầ ư ra m t yêu c u đ c vi t b i m t ngôn ng l p trình có th khác v iộ ầ ượ ế ở ộ ữ ậ ể ớ ngôn ng l p trình vi t trong đ i t ng CORBA. ORB th c hi n vi c d chữ ậ ế ố ượ ự ệ ệ ị c n thi t gi a các ngôn ng l p trình. Các liên k t ngôn ng đ c đ nhầ ế ữ ữ ậ ế ữ ượ ị nghĩa cho t t c các ngôn ng l p trình thông d ng.ấ ả ữ ậ ụ

Hình 3: Ki n trúc c b n c a h phân tán.ế ơ ả ủ ệ Hình 3 là c ch tri u g i l n nhau c a các đ i t ng vi tơ ế ệ ọ ẫ ủ ố ượ ế b ng C++, Delphi, Java thông qua ORB.ằ

c. ORB ho t đ ng nh th nàoạ ộ ư ế

Page 2: ORB va COS Naming

C++CORBAObject O

RB Internet

JavaCORBAObject

DelphiCORBAObject

ORB

ORB

Nh ngôn ng đ c t IDL, các đ i t ng cho dù đ c cài đ t b ng b tờ ữ ặ ả ố ượ ượ ặ ằ ấ kì ngôn ng nào n u nh tuân th theo đ c t IDL đ u đ c xem là đ iữ ế ư ủ ặ ả ề ượ ố t ng CORBA. Tuy không cài đ t b n thân đ i t ng nh ng d a vào đ cượ ặ ả ố ượ ư ự ặ t IDL ORB sẽ bi t đ c tên ph ng th c c n g i, ki u đ i s truy n choả ế ượ ươ ứ ầ ọ ể ố ố ề ph ng th c, tr tr v c a ph ng th c g i. V i nh ng thông tin này,ươ ứ ị ả ề ủ ươ ứ ọ ớ ữ ORB có th tri u g i ph ng th c mà đ i t ng cài đ t (Hình 4). ORB làể ệ ọ ươ ứ ố ượ ặ hoàn toàn trong su t (transparent) v i l p trình viên (hay ng i s d ngố ớ ậ ườ ử ụ đ i t ng). B n g i đ i t ng c a Java trong C++ hay Delphi hoàn toànố ượ ạ ọ ố ượ ủ theo cách t nhiên nh b n g i đ i t ng đ c xây d ng t chính ngônự ư ạ ọ ố ượ ượ ự ừ ng g c.ữ ố

Hình 4 : Tri u g i đ i t ng trong CORBAệ ọ ố ượ Kh năng “trong su t” không ch gi i h n gi a các đ i t ng trên cùngả ố ỉ ớ ạ ữ ố ượ

m t máy mà còn đ c m r ng gi a các đ i t ng n m b t kỳ đâu trênộ ượ ở ộ ữ ố ượ ằ ở ấ th gi i thông qua k t n i m ng. Đ i t ng c a b n vi t b ng Java đ tế ớ ế ố ạ ố ượ ủ ạ ế ằ ặ trên m t máy t i Vi t Nam có th đ c g i b i m t đ i t ng Châu Mỹộ ạ ệ ể ượ ọ ở ộ ố ượ ở (“bên kia đ i d ng”) cài đ t b ng C++.ạ ươ ặ ằ

V i kh năng trên, CORBA qu là mang l i đi u kỳ di u cho th gi i l pớ ả ả ạ ề ệ ế ớ ậ trình. CORBA m c a đ các l p trình viên có th xích l i g n nhau h n,ở ử ể ậ ể ạ ầ ơ t o nên m t th th ng nh t c a mô hình l p trình h ng đ i t ng.ạ ộ ể ố ấ ủ ậ ướ ố ượ

Page 3: ORB va COS Naming

C++CORBAObject

JavaCORBAObject

ORB IDL

ORB IDLInternet

Hình 5 : ORB giao ti p v i đ i t ng thông qua các thông tin đ c t IDL.ế ớ ố ượ ặ ả

2. C ch làm vi c c a CORBAơ ế ệ ủORB cũng dùng khái ni m l p trung gian _Stub và _Skel t ng t nhệ ớ ươ ự ư

cách làm vi c c a các đ i t ng RMI. Th t s _Stub và _Skel là hai l p trungệ ủ ố ượ ậ ự ớ gian đ c sinh ra t trình biên d ch d a vào đ c t IDL. B n không c nượ ừ ị ự ặ ả ạ ầ ph i vi t mã l nh cho l p _Stub và _Skel. Đây là công vi c c a các nhà cungả ế ệ ớ ệ ủ c p và thi t k ORB. Hình 6 là c th ho t đ ng c a trình môi gi i ORB liênấ ế ế ơ ế ạ ộ ủ ớ l c gi a trình khách và đ i t ng CORBA trên máy ch . Th ng thì vi c càiạ ữ ố ượ ủ ườ ệ đ t đ i t ng CORBA trên máy ch và tri u g i đ i t ng t trình kháchặ ố ượ ủ ệ ọ ố ượ ừ đ c th c hi n nh sau:ượ ự ệ ư

Ph n cài đ t đ i t ng CORBA trên máy chầ ặ ố ượ ủĐ c t đ i t ng X b ng ngôn ng IDL c a CORBAặ ả ố ượ ằ ữ ủChuy n đ c t X thành mô t c a m t ngôn ng c th (ch ng h nể ặ ả ả ủ ộ ữ ụ ể ẳ ạ

dùng trình biên d ch idlj.exe đ chuy n đ c t c a đ i t ng X sang ngônị ể ể ặ ả ủ ố ượ ng Java). D a vào đ c t IDL yêu c u trình biên d ch t o ra l p trung gianữ ự ặ ả ầ ị ạ ớ _Skel.

Cài đ t đ i t ng X b ng Java.ặ ố ượ ằ Ph n k t n i v i đ i t ng t máy khách ầ ế ố ớ ố ượ ừS d ng đ c t IDL c a đ i t ng X yêu c u trình biên d ch t o raử ụ ặ ả ủ ố ượ ầ ị ạ

l p trung gian _Stub. Tuỳ theo ngôn ng mu n vi t máy khách mà taớ ữ ố ế ở s d ng trình biên d ch thích h p. Ví d n u b n mu n vi t trình kháchử ụ ị ợ ụ ế ạ ố ế b ng ngôn ng C++ b n có th dùng trình biên d ch idl2cpp.exe đ t o raằ ữ ạ ể ị ể ạ l p _Stub dành cho ch ng trình C++ tri u g i đ i t ng CORBA.ớ ươ ệ ọ ố ượ

Khi trình khách tri u g i đ i t ng ch , th c t l i g i sẽ đ cệ ọ ố ượ ủ ự ế ờ ọ ượ chuy n qua l p _Stub trên máy khách, g i đ n trình môi gi i ORB. Trìnhể ớ ử ế ớ ORB trên máy khách sẽ k t n i v i trình ORB trên máy ch (theo giao th cế ố ớ ủ ứ IIOP). Trình ORB trên máy ch chuy n l i g i cho l p trung gian _Skel trênủ ể ờ ọ ớ máy ch . Cu i cùng thì đ i t ng CORBA trên máy ch sẽ th c thi ph ngủ ố ố ượ ủ ự ươ th c c a nó.ứ ủ

Page 4: ORB va COS Naming

Hình 6. Giao ti p gi a m t Client và m t đ i t ng CORBA trên serverế ữ ộ ộ ố ượ

3. Quá trình phát tri n ng d ng s d ng CORBAể ứ ụ ử ụCài đ t các interface (các đ i t ng trên server) d a trên vi c k th aặ ố ượ ự ệ ế ừ

b khung (skeleton) sinh ra b i b d ch IDL.ộ ở ộ ịVi c phát tri n c a phía client b t đ u d a trên m t tham chi uệ ể ủ ắ ầ ự ộ ế

(reference) đ n đ i t ng. Vi c g i các method c a các đ i t ng t xaế ố ượ ệ ọ ủ ố ượ ừ cũng gi ng nh khi g i các ph ng th c c c b .ố ư ọ ươ ứ ụ ộ

Tuy nhiên cũng c n chú ý m t s đi m khi g i ph ng th c t xaầ ộ ố ể ọ ươ ứ ừ  :Th i gian g i ( tính theo ms, 1000 l n ch m h n khi g i c c b ).ờ ọ ầ ậ ơ ọ ụ ộVi c giao ti p gi a client và server sẽ ph i tính đ n các exception ( Cácệ ế ữ ả ế

exception này ph i đ c phía client ch p nh n và x lý).ả ượ ấ ậ ử

Page 5: ORB va COS Naming

Hình 7 : Quá trình phát tri n ng d ng Corba.ể ứ ụ

II. CORBA Servies1. D ch v qu n lý tên COS NAMING c a CORBAị ụ ả ủ

1.1 Tìm hi u v JNDIể ềKhi b n mu n s d ng m t đ i t ng nào đó trong cu c s ng, đ uạ ố ử ụ ộ ố ượ ộ ố ầ

tiên b n c n ph i bi t là n i mà v t đó đang đ c c t gi (hay đ t đ ).ạ ầ ả ế ơ ậ ượ ấ ữ ặ ể Làm th nào đ tìm ra đ i t ng? Làm th nào đ l u l i đ i t ng sauế ể ố ượ ế ể ư ạ ố ượ khi s d ng?… M i đ i t ng trong th gi i th c đ u đ c mang m t tênử ụ ỗ ố ượ ế ớ ự ề ượ ộ g i nh t đ nh. Ít ra hai v t th khác nhau cũng có th phân bi t v i nhauọ ấ ị ậ ể ể ệ ớ qua tên g i (các v t th trùng nhau v tính ch t cũng có th phân bi t quaọ ậ ể ề ấ ể ệ m t đ c tr ng khác bi t nào đó mà trong môi tr ng c s d li u ra v nộ ặ ư ệ ườ ơ ở ữ ệ ẫ quen g i là khóa). M t khác, c n ph i có m t h th ng l u tr nh ng tênọ ặ ầ ả ộ ệ ố ư ữ ữ g i này theo cách nào đó đ khi c n b n có th d a theo tên đ tìm ra đ iọ ể ầ ạ ể ự ể ố t ng th t d dàng.ượ ậ ễ

Khái ni m trên chúng ta g p r t nhi u trong cu c s ng. Nh danhệ ặ ấ ề ộ ố ư b đi n tho i là m t h th ng l u tr tên d a vào s đi n tho i c aạ ệ ạ ộ ệ ố ư ữ ự ố ệ ạ ủ ng i dùng. B n đ là m t h th ng tên g n li n v i các thành ph ,ườ ả ồ ộ ệ ố ắ ề ớ ố đ ng xá. H th ng file là m t d ch v qu n lý tên c a th m c và t p tinườ ệ ố ộ ị ụ ả ủ ư ụ ậ

ORB

Skeleton

Server program

Client program

Java compiler

IDL

compiler

Stub

Object impl

Skeletons

Client prog

Stubs

IDL

defs

Page 6: ORB va COS Naming

trên đĩa, DNS là d ch v g n li n đ a ch IP c a máy tính v i m t tên g iị ụ ắ ề ị ỉ ủ ớ ộ ợ nh nào đó.ớ

M t d ch v qu n lý tên đ u quy đ nh cách th c đ b n l u tr vàộ ị ụ ả ề ị ứ ể ạ ư ữ g n tên cho đ i t ng. Ví d trong danh b đi n tho i b n l u tên g n v iắ ố ượ ụ ạ ệ ạ ạ ư ắ ớ s đi n tho i theo th t ACB. Trên b n đ , tên các thành ph đ ng xáố ệ ạ ứ ự ả ồ ố ườ đ c phân theo qu n huy n. H th ng file th ng l u t p tin và th m cượ ậ ệ ệ ố ườ ư ậ ư ụ theo c u trúc hình cây. V i m i cách l u tr nh v y, d ch v qu n lý tênấ ớ ỗ ư ữ ư ậ ị ụ ả luôn cung c p cho b n cách th c tìm ki m và đ t tên cho đ i t ng c nấ ạ ứ ế ặ ố ượ ầ qu n lý m t cách nh t đ nh.ả ộ ấ ị

T ng quát hóa JAVA đ c t m t t p h p các hàm API dùng đ ph cổ ặ ả ộ ậ ợ ể ụ v cho vi c qu n lý và l u tr tên đ i t ng. Các hàm API này g i là JNDIụ ệ ả ư ữ ố ượ ọ (Java Naming Directory Interface). JNDI cung c p cách đ t tên, l u tr vàấ ặ ư ữ tìm ki m đ i t ng m t cách t ng quát nh t. V i JNDI b n có th g iế ố ượ ộ ổ ấ ớ ạ ể ọ cùng ph ng th c đ tìm ki m t p tin trên h th ng file, th m c, tên đ aươ ứ ể ế ậ ệ ố ư ụ ị ch qua m ng Internet, tên các đ i t ng RMI, CORBA,…JNDI ch đ a raỉ ạ ố ượ ỉ ư các đ c t d ng interface. Các d ch v nào mu n s d ng JNDI thì ph iặ ả ở ạ ị ụ ố ử ụ ả cài đ t giao ti p do Java quy đ nh.ặ ế ị

1.2 JNDI và d ch v COS Naming c a CORBA:ị ụ ủD a vào đ c t JNDI c a Java, Corba xây d ng m t c ch l u trự ặ ả ủ ự ộ ơ ế ư ữ

tên và tham chi u c a đ i t ng.ế ủ ố ượCorba phân ra khái ni m NamingContext và NamingComponentệ

t ng t nh khái ni m file và th m c mà ta v n quen thu c.ươ ự ư ệ ư ụ ẫ ộNamingContext là m t đ i t ng có kh năng d n tham chi u đ nộ ố ượ ả ẫ ế ế

NamingComponent hay NamingContext khác (NamingContext đóng vai trò nh m t th m c). NamingContext đ c đ t tên d a vàoư ộ ư ụ ượ ặ ự NamingComponent.

NamingComponent là m t thành ph n ch a tên (t ng t nhãnộ ầ ứ ươ ự ho c tên file) có kh năng ràng bu c tên v i m t đ i t ng b t kỳ nào đóặ ả ộ ớ ộ ố ượ ấ (đ i t ng này ph i là đ i t ng Corba).ố ượ ả ố ượ

NamingComponent và NamingContext quan h v i nhau theo c uệ ớ ấ trúc hình cây t ng t c u trúc cây th m c c a h th ng file trên đĩa.ươ ự ấ ư ụ ủ ệ ố Hình 10 là m t ví d v cách l u tr c a d ch v COS Naming trong Corba.ộ ụ ề ư ữ ủ ị ụ D ch v này chính là ch ng trình tnameserv.exe mà ta sẽ có d p tìm hi uị ụ ươ ị ể qua khi cài đ t ch ng trình.ặ ươ

Object ANameComponent

Toys

Stock

Market

Page 7: ORB va COS Naming

Hình 8. Mô hình ràng bu c và l u tr đ i t ng c a d ch v COSộ ư ữ ố ượ ủ ị ụ Naming

Nh ta đã th y hình 10, Market là m t đ i t ng NamingContext.ư ấ ở ộ ố ượ Nó cho phép b n tìm ra 3 thành ph n tên: Stock, Shefl và Panel. B n thânạ ầ ả Stock, Shelf là hai NamingContext. Stock ch a 2 thành ph n mang tên Toysứ ầ và Fruit. Shelf ch a m t thành ph n mang tên Book. Đ i t ng Object Aứ ộ ầ ố ượ đ c ràng bu c v i tên Toys trong khi đ i t ng Object B, Object C đ cượ ộ ớ ố ượ ượ ràng bu c b i tên Fruit và Book.ộ ở

M t đ i t ng không ch đ c ràng bu c b i m t tên mà có thộ ố ượ ỉ ượ ộ ở ộ ể nhi u tên. Ví d c Panel và Book cùng ám ch đ n đ i t ng Object C.ề ụ ả ỉ ế ố ượ Đi u này t ng t h nh trong Windows, m t t p tin trên đĩa có th đ cề ươ ự ư ộ ậ ể ượ tham chi u đ n b ng nhi u shortcut hay trong Unix/Linux, m t t p tinế ế ằ ề ộ ậ v t lý có th đ c tham chi u b ng nhi u link khác nhau.ậ ể ượ ế ằ ề

Bây gi ta th hình dung COS Naming là m t cây th m c. N uờ ử ộ ư ụ ế đ ng t Market đ tham chi u đ n đ i t ng Object A ta ph i ch đ ngứ ừ ể ế ế ố ượ ả ỉ ườ d n nh sau: Market\Stock\Toys. Mu n tham chi u đ n Object C, ta chẫ ư ố ế ế ỉ đ ng d n Market\Panel ho c Market\Shelf\Book. Tuy nhiên n u ta đangườ ẫ ặ ế đ ng v trí Stock ta ch c n tham chi u đ n đ i t ng Objetc A theo cáchứ ở ị ỉ ầ ế ế ố ượ Stock\toys là đ . Đó chính là khái ni m ng c nh (context) mà ta sẽ g pủ ệ ữ ả ặ trong d ch v COS Naming c a CORBA. Đ i v i m t đ i t ng, tùy theoị ụ ủ ố ớ ộ ố ượ cntext khác nhau mà ta có th truy xu t theo tên c a đ i t ng khác nhau.ể ấ ủ ố ượ

2. D ch v s u t p (collection service)ị ụ ư ậ cung c p các ph ng ti n đ nhómấ ươ ệ ể

các đ i t ng vào danh sách, hàng đ i, stack, t p h p, ... Ph thu c vào tố ượ ợ ậ ợ ụ ộ ố

ch t t nhiên c a nhóm, mà có r t nhi u c ch truy xu t đ c đ a ra. Víấ ự ủ ấ ề ơ ế ấ ượ ư

d , danh sách có th đ c xem xét kĩ t ng ph n thông qua cái g i là m tụ ể ượ ừ ầ ọ ộ

l p đi l p l i. Cũng có s d dàng trong vi c ch n các đ i t ng b ng cáchặ ặ ạ ự ễ ệ ọ ố ượ ằ

đ c t m t giá tr khóa. V m t b n ch t, d ch v s u t p có v g n v iặ ả ộ ị ề ặ ả ấ ị ụ ư ậ ẻ ầ ớ

cái mà ta g i là các th vi n l p trong các ngôn ng l p trình h ng đ iọ ư ệ ớ ữ ậ ướ ố

t ng.ượ

3. D ch v truy v n (query service)ị ụ ấ cung c p ph ng ti n đ xây d ngấ ươ ệ ể ự

t p h p các đ i t ng mà có th đ c truy v n b ng cách s d ng m tậ ợ ố ượ ể ượ ấ ằ ử ụ ộ

ngôn ng truy v n có khai báo. M t truy v n có th tr v m t thamữ ấ ộ ấ ể ả ề ộ

chi u đ n m t đ i t ng ho c m t t p h p các đ i t ng. D ch v truyế ế ộ ố ượ ặ ộ ậ ợ ố ượ ị ụ

Toys

Page 8: ORB va COS Naming

v n làm tăng lên v i d ch v t p h p b ng các truy v n nâng cao. Nó phânấ ớ ị ụ ậ ợ ằ ấ

bi t v i d ch v s u t p các cung c p sau này v các lo i s u t p khác.ệ ớ ị ụ ư ậ ở ấ ề ạ ư ậ

4. D ch v đi u khi n t ng tranh (concurrency control service)ị ụ ề ể ươ cung

c p các c ch khóa nâng cao mà các client truy xu t vào các đ i t ngấ ơ ế ấ ố ượ

đ c chia s . D ch v này có th đ c dùng đ cài đ t các giao tác đ cượ ẻ ị ụ ể ượ ể ặ ượ

cung c p b i m t d ch v tách bi t. ấ ở ộ ị ụ ệ D ch v giao tác (transactionị ụ

service) cho phép m t client đ nh nghĩa m t chu i các yêu c u ph ngộ ị ộ ỗ ầ ươ

th c thông qua nhi u đ i t ng trong cùng m t giao tác. D ch v này hứ ề ố ượ ộ ị ụ ỗ

tr c lo i giao tác ph ng và l ng nhau.ợ ả ạ ẳ ồ

Thông th ng, client yêu c u các ph ng th c trên các đ i t ng vàườ ầ ươ ứ ố ượ

ch câu tr l i v yêu c u đó. Đ h tr giao ti p không đ ng b , Corbaờ ả ờ ề ầ ể ỗ ợ ế ồ ộ

cung c p ấ d ch v s ki n (event service)ị ụ ự ệ cho phép các client và các đ iố

t ng có th b ng t d a trên s x y ra c a m t s ki n c th . Cácượ ể ị ắ ự ự ả ủ ộ ự ệ ụ ể

ph ng ti n nâng cao cho giao ti p không đ ng b đ c cung c p b iươ ệ ế ồ ộ ượ ấ ở

d ch v khai báo (notification service)ị ụ . Chúng ta sẽ mô t các d ch vả ị ụ

này m t cách chi ti t ph n sau.ộ ế ở ầ

S ngo i hi n (Externalization)ự ạ ệ liên quan đ n vi c đóng gói các đ iế ệ ố

t ng theo cách mà chúng ta có th đ c l u tr trên đĩa hay đ c l uượ ể ượ ư ữ ượ ư

tr qua m ng. Nó có th đ c so sánh v i tính năng ữ ạ ể ượ ớ serialization đ cượ

cung c p b i Java, cho phép đ i t ng đ c ghi vào m t lu ng d li uấ ở ố ượ ượ ộ ồ ữ ệ

(data stream) nh là m t chu i các bytes.ư ộ ỗ

5. D ch v vòng đ i (life cycle service)ị ụ ờ cung c p các ph ng ti n đ t o,ấ ươ ệ ể ạ

phá h y, sao chép và di chuy n đ i t ng. M t khái ni m khóa là ủ ể ố ượ ộ ệ đ iố

t ng s n xu t (factory object)ượ ả ấ , đó là m t đ i t ng đ c bi t đ cộ ố ượ ặ ệ ượ

dùng đ t o ra các đ i t ng khác. Th c t ch ra r ng ch có s t o ra cácể ạ ố ượ ự ế ỉ ằ ỉ ự ạ

đ i t ng m i c n đ c đi u khi n b i m t d ch v tách bi t. Tuy nhiênố ượ ớ ầ ượ ề ể ở ộ ị ụ ệ

vi c phá h y, sao chép và di chuy n đ i t ng th ng đ c đ nh nghĩaệ ủ ể ố ượ ườ ượ ị

m t cách thu n ti n b i chính các đ i t ng đó. Lý do là các thao tác nàyộ ậ ệ ở ố ượ

Page 9: ORB va COS Naming

th ng nh h ng đ n tr ng thái c a đ i t ng thoeo m t cách đ c tườ ả ưở ế ạ ủ ố ượ ộ ặ ả

đ i t ng nào đó.ố ượ

D ch vị ụ Mô tả

Collection Các ph ng ti n cho vi c nhóm các đ iươ ệ ệ ố t ng vào danh sách, hàng đ i, t p h p, …ượ ợ ậ ợ

Query Các ph ng ti n cho vi c truy v n t pươ ệ ệ ấ ậ các đ i t ng theo cách có khai báoố ượ

Concurrency

Các ph ng ti n cho phép truy xu t đ ngươ ệ ấ ồ th i đ n các đ i t ng đ c chia sờ ế ố ượ ượ ẻ

Transaction

Các giao tác b ng ph ng và l ng nhauằ ẳ ồ trên các ph ng th c g i qua nhi u đ iươ ứ ọ ề ố t ngượ

Event Các ph ng ti n cho vi c giao ti p khôngươ ệ ệ ế đ ng b thông qua các s ki nồ ộ ự ệ

Notification

Các ph ng ti n nâng cao cho vi c giaoươ ệ ệ ti p không đ ng b d a trên s ki nế ồ ộ ự ự ệ

Externalization

Các ph ng ti n cho vi c đóng gói vàươ ệ ệ tách bóc các đ i t ngố ượ

Life cycle Các ph ng ti n cho vi c t o, xóa, saoươ ệ ệ ạ chép, và di chuy n các đ i t ngể ố ượ

Licensing Các ph ng ti n cho vi c g n license vàoươ ệ ệ ắ cho đ i t ngố ượ

Naming Các ph ng ti n cho vi c đ nh danh đ iươ ệ ệ ị ố t ng trên toàn h th ngượ ệ ố

Property Các ph ng ti n cho vi c đính kèm c pươ ệ ệ ặ (thu c tính, giá tr ) vào đ i t ngộ ị ố ượ

Trading Các ph ng ti n cho vi c xu t b n và tìmươ ệ ệ ấ ả ki m các d ch v mà m t đ i t ng ph iế ị ụ ộ ố ượ ả cung c pấ

Persistence

Các ph ng ti n cho vi c l u tr 1 cáchươ ệ ệ ư ữ b n v ng các đ i t ngề ữ ố ượ

Page 10: ORB va COS Naming

Relationship

Các ph ng ti n cho vi c bi u di n m iươ ệ ệ ể ễ ố quan h gi a các đ i t ngệ ữ ố ượ

Security Các c ch cho các kênh an toàn, phânơ ế quy n, ki m đ nhề ể ị

Time Cung c p th i gian hi n t i bên trong cácấ ờ ệ ạ l l i đ c đ c tề ỗ ượ ặ ả

Hình 9. T ng quan các d ch v c a Corbaổ ị ụ ủ

6. D ch v license (licensing service)ị ụ cho phép nhà cung c p các đ i t ngấ ố ượ

g n m t license vào đ i t ng c a h và làm cho có hi u l c m t chínhắ ộ ố ượ ủ ọ ệ ự ộ

sách license c th . M t license bi u th các quy n mà m t client ph i cóụ ể ộ ể ị ề ộ ả

đ có th s d ng đ i t ng. Ví d , m t license đ c g n vào m t đ iể ể ử ụ ố ượ ụ ộ ượ ắ ộ ố

t ng có th làm cho có hi u l c r ng đ i t ng đó ch có th đ c dùngượ ể ệ ự ằ ố ượ ỉ ể ượ

b i m t ng i dùng t i m i th i đi m. License khác có th ch c ch nở ộ ườ ạ ọ ờ ể ể ắ ắ

r ng m t đ i t ng sẽ b vô hi u hóa sau m t kho ng th i gian quá h nằ ộ ố ượ ị ệ ộ ả ờ ạ

nào đó.

Corba cũng cung c p m t d ch v g i là ấ ộ ị ụ ọ d ch v đ nh danh (namingị ụ ị

service) cho phép m t đ i t ng có th đ c g n v i m t tên có th đ cộ ố ượ ể ượ ắ ớ ộ ể ọ

đ c và ánh x v i ID c a đ i t ng đó. Ph ng ti n c b n cho vi c môượ ạ ớ ủ ố ượ ươ ệ ơ ả ệ

t đ i t ng đ c cung c p b i ả ố ượ ượ ấ ở d ch v thu c tính (property service)ị ụ ộ .

D ch v này cho phép client k t h p c p (thu c tính, giá tr ) v i các đ iị ụ ế ợ ặ ộ ị ớ ố

t ng. L u ý r ng các thu c tính này không ph i là m t ph n c a tr ngượ ư ằ ộ ả ộ ầ ủ ạ

thái đ i t ng, nh ng thay vào đó chúng đ c dùng đ mô t đ i t ng.ố ượ ư ượ ể ả ố ượ

Nói cách khác, chúng cung c p thông tin v đ i t ng thay vì m t ph nấ ề ố ượ ộ ầ

c a đ i t ng. Liên quan đ n hai d ch v này là ủ ố ượ ế ị ụ d ch v th ng m iị ụ ươ ạ

(trading service) cho phép các đ i t ng thông báo nh ng gì mà chúngố ượ ữ

ph i cung c p (thông qua giao di n c a chúng), và cho phép các client tìmả ấ ệ ủ

ki m các d ch v b ng cách s d ng m t ngôn ng đ c bi t h tr mô tế ị ụ ằ ử ụ ộ ữ ặ ệ ỗ ợ ả

các ràng bu c.ộ

Page 11: ORB va COS Naming

7. D ch v b n v ng (persistence service)ị ụ ề ữ cung c p các ph ng ti n choấ ươ ệ

vi c l u tr thông tin trên đĩa d i d ng các đ i t ng l u tr . M t v nệ ư ữ ướ ạ ố ượ ư ữ ộ ấ

đ quan tr ng đây là s trong su t b n v ng (persistence transprency)ề ọ ở ự ố ề ữ

đ c cung c p. M t client không c n ph i truy n d li u m t cách rõượ ấ ộ ầ ả ề ữ ệ ộ

ràng vào m t đ i t ng l u tr gi a m t đĩa và b nh chính s n có.ộ ố ượ ư ữ ữ ộ ổ ộ ớ ẵ

Không m t d ch v nào trong các d ch v trên cung c p các ph ngộ ị ụ ị ụ ấ ươ

ti n có liên quan m t cách rõ ràng đ n hai hay nhi u l p đ i t ng.ệ ộ ế ề ớ ố ượ

Nh ng ph ng ti n này đ c cung c p b i ữ ươ ệ ượ ấ ở d ch v m i quan hị ụ ố ệ

(relationship service), d ch v này h tr cho vi c t ch c các đ i t ngị ụ ỗ ợ ệ ổ ứ ố ượ

tùy thu c vào l c đ khái ni m nh đ c dùng trong c s d li u.ộ ượ ồ ệ ư ượ ơ ở ữ ệ

Tính b o m t đ c cung c p b i ả ậ ượ ấ ở d ch v b o m t (securityị ụ ả ậ

service). Vi c cài đ t d ch v này có th so sánh v i các h th ng b o m tệ ặ ị ụ ể ớ ệ ố ả ậ

Sesame và Kerberos. D ch v b o m t c a Corba cung c p các ph ngị ụ ả ậ ủ ấ ươ

ti n cho vi c xác nh n, c p quy n, ki m đ nh, giao ti p an toàn, s ch pệ ệ ậ ấ ề ể ị ế ự ấ

hành và v n đ qu n tr . Chúng ta sẽ quay tr l i v n đ này m t cách chiấ ề ả ị ở ạ ấ ề ộ

ti t ph n sau.ế ở ầ

Cu i cùng, Corba cung c p ố ấ d ch v th i gian (time service)ị ụ ờ cho phép

tr v th i gian hi n t i trong các vùng l i c th .ả ề ờ ệ ạ ỗ ụ ể

Nh gi i thích b i Pope (1998), các d ch v Corba đ c thi t k v iư ả ở ị ụ ượ ế ế ớ

mô hình đ i t ng c a Corba nh là c s c a chúng. Đi u này nghĩa làố ượ ủ ư ơ ở ủ ề

t t c các d ch v đ c đ c t b ng IDL và có m t s tách bi t gi a đ c tấ ả ị ụ ượ ặ ả ằ ộ ự ệ ữ ặ ả

giao di n và đ c t cài đ t đ c t o ra. M t nguyên lý thi t k quan tr ngệ ặ ả ặ ượ ạ ộ ế ế ọ

khác là các d ch v nên đ c t i thi u và đ n gi n hóa. Trong các ph nị ụ ượ ố ể ơ ả ầ

ti p theo chúng ta sẽ th o lu n chi ti t h n v m t s d ch v .ế ả ậ ế ơ ề ộ ố ị ụ

8. D ch v s ki n và d ch v khai báo (Event and Notification Services)ị ụ ự ệ ị ụ

M c dù các mô hình yêu c u đ c cung c p b i Corba th ng th aặ ầ ượ ấ ở ườ ỏ

mãn h u h t các yêu c u giao ti p trong m t h th ng phân tán h ngầ ế ầ ế ộ ệ ố ướ

Page 12: ORB va COS Naming

đ i t ng, nh ng d ng nh ch có các yêu c u ph ng th c là không đ .ố ượ ư ườ ư ỉ ầ ươ ứ ủ

Trong các tr ng h p c th , c n thi t ph i cung c p m t d ch v có thườ ợ ụ ể ầ ế ả ấ ộ ị ụ ể

truy n tín hi u m t cách đ n gi n v s x y ra c a m t s ki n. Clientề ệ ộ ơ ả ề ự ả ủ ộ ự ệ

ch u trách nhi m r ng s ki n có th d n đ n các hành đ ng thích h p.ị ệ ằ ự ệ ể ẫ ế ộ ợ

K t qu là vi c đ nh nghĩa d ch v s ki n. Mô hình c b n c a các sế ả ệ ị ị ụ ự ệ ơ ả ủ ự

ki n trong Corba là khá đ n gi n. M i s ki n đ c kèm theo v i m tệ ơ ả ỗ ự ệ ượ ớ ộ

m c d li u, th ng đ c bi u di n b i m t tham chi u đ i t ng hayụ ữ ệ ườ ượ ể ễ ở ộ ế ố ượ

m t giá tr ng d ng c th . M t s ki n đ c sinh ra b i m t đ i t ngộ ị ứ ụ ụ ể ộ ự ệ ượ ở ộ ố ượ

cung c p (supplier) và đ c nh n b i m t đ i t ng tiêu dùngấ ượ ậ ở ộ ố ượ

(consumer). Các s ki n đ c truy n qua m t kênh s ki n (eventự ệ ượ ề ộ ự ệ

channel), mà v m t logic thì nó đ c đ t gi a supplier và consumerề ặ ượ ặ ở ữ

nh trong Hình 10.ư

Hình 10. T ch c các supplier và consumer c a các s ki n theo môổ ứ ủ ự ệ

hình ki u đ yể ẩ

Hình 10 mô t cái g i là mô hình đ y (push model). Trong mô hìnhả ọ ẩ

này, khi m t s ki n x y ra, supplier sinh ra s ki n và đ y nó thông quaộ ự ệ ả ự ệ ẩ

kênh s ki n, và chuy n s ki n đ n consumer. Mô hình đ y g n v iự ệ ể ự ệ ế ẩ ầ ớ

hành vi không đ ng b mà h u h t m i ng i t ng tác v i s ki n. Vồ ộ ầ ế ọ ườ ươ ớ ự ệ ề

m t hi u qu , consumer ph i ch đ i s lan truy n s ki n m t cách bặ ệ ả ả ờ ợ ự ề ự ệ ộ ị

Page 13: ORB va COS Naming

đ ng, và mong đ i đó có th b ng t b ng cách này hay cách khác khi m tộ ợ ể ị ắ ằ ộ

s ki n x y ra.ự ệ ả

M t mô hình khác cũng đ c h tr b i Corba, là mô hình kéo (pullộ ượ ỗ ợ ở

model) nh trong Hình 11. Trong mô hình này consumer thăm dò kênh sư ự

ki n đ ki m tra khi nào thì m t s ki n sẽ x y ra. Kênh s ki n theo đóệ ể ể ộ ự ệ ả ự ệ

sẽ thăm dò đ n các supplier khác nhau.ế

Hình 11. Mô hình ki u đ y cho vi c truy n s ki n trong Corbaể ẩ ệ ề ự ệ

M c dù d ch v s ki n cung c p m t cách đ n gi n và tr c di n choặ ị ụ ự ệ ấ ộ ơ ả ự ệ

vi c lan truy n s ki n, nh ng nó có m t s các m t h n ch nghiêmệ ề ự ệ ư ộ ố ặ ạ ế

tr ng. Đ truy n s ki n, đi u ki n c n là các consumer và supplier ph iọ ể ề ự ệ ề ệ ầ ả

k t n i v i nhau thông qua kênh s ki n. Đi u này nghĩa là khi m tế ố ớ ự ệ ề ộ

consumer k t n i đ n kênh s ki n sau khi m t s ki n đã x y ra thì khiế ố ế ự ệ ộ ự ệ ả

đó s ki n đó sẽ b b qua. Nói cách khác d ch v s ki n c a Corba khôngự ệ ị ỏ ị ụ ự ệ ủ

h tr s b n v ng cho các s ki n.ỗ ợ ự ề ữ ự ệ

Nghiêm tr ng h n là các consumer có r t ít ph ng ti n đ l c các sọ ơ ấ ươ ệ ể ọ ự

ki n. M i s ki n v nguyên t c sẽ đ c chuy n cho t t c các consumer.ệ ỗ ự ệ ề ắ ượ ể ấ ả

N u các lo i s ki n khác nhau c n đ c phân bi t, thì khi đó c n thi tế ạ ự ệ ầ ượ ệ ầ ế

ph i cài đ t m t kênh s ki n tách bi t cho m i lo i s ki n. Kh năngả ặ ộ ự ệ ệ ỗ ạ ự ệ ả

l c đ c thêm vào trong m t ph n m r ng đ c g i là d ch v khai báo.ọ ượ ộ ầ ở ộ ượ ọ ị ụ

Page 14: ORB va COS Naming

Thêm vào đó, d ch v này còn cung c p các ph ng ti n giúp tránh vi cị ụ ấ ươ ệ ệ

ph i truy n s ki n khi không có consumer nào quan tâm s ki n đó.ả ề ự ệ ự ệ

Cu i cùng vi c truy n s ki n v n là không đáng tin c y. Đ c t c aố ệ ề ự ệ ố ậ ặ ả ủ

Corba phát bi u r ng không có s đ m b o nào liên quan đ n vi c truy nể ằ ự ả ả ế ệ ề

các s ki n.ự ệ

Nh chúng ta sẽ th o lu n trong Ch ng 12, vi c các ng d ng có khư ả ậ ươ ệ ứ ụ ả

năng truy n s ki n m t cách đáng tin c y là r t quan tr ng. Nh ng ngề ự ệ ộ ậ ấ ọ ữ ứ

d ng nh v y không nên s d ng d ch v s ki n c a Corba mà nên dùngụ ư ậ ử ụ ị ụ ự ệ ủ

đ n các ph ng ti n khác v giao ti p.ế ươ ệ ề ế

9. Thông báo (Messaging)

M i giao ti p trong Corba đ c mô t t tr c t i gi là t m th iọ ế ượ ả ừ ướ ớ ờ ạ ờ

(transient). Nghĩa là m t thông đi p ch đ c l u tr bên d i h th ngộ ệ ỉ ượ ư ữ ướ ệ ố

giao ti p cho đ n khi c đ i t ng g i (sender) và đ i t ng nh nế ế ả ố ượ ử ố ượ ậ

(receiver) c a nó b t đ u làm vi c. Nh ta đã th o lu n Ch ng 2, cóủ ắ ầ ệ ư ả ậ ở ươ

nhi u ng d ng đòi h i ki u giao ti p b n v ng vì v y m t thông báo sẽề ứ ụ ỏ ể ế ề ữ ậ ộ

đ c l u tr cho đ n khi nó có th đ c truy n đi. V i ki u giao ti p b nượ ư ữ ế ể ượ ề ớ ể ế ề

v ng, sẽ không có v n đ gì khi đ i t ng g i (sender) ho c đ i t ngữ ấ ề ố ượ ử ặ ố ượ

nh n (receiver) th c thi sau khi thông đi p đã đ c g i đi; trong m iậ ự ệ ượ ở ọ

tr ng h p, thông báo sẽ đ c l u tr đ lâu n u c n.ườ ợ ượ ư ữ ủ ế ầ

M t mô hình giao ti p ki u b n v ng n i ti ng là mô hình thông báoộ ế ể ề ữ ổ ế

ki u hàng đ i (message – queuing model). Corba h tr mô hình này nhể ợ ỗ ợ ư

là m t d ch v ph tr i g i là d ch v thông báo. Đi u làm cho vi c thôngộ ị ụ ụ ộ ọ ị ụ ề ệ

báo trong Corba khác v i các h th ng khác là cách ti p c n vi c giao ti pớ ệ ố ế ậ ệ ế

theo ki u th a k d a trên đ i t ng c a nó. C th , ng i thi t k d chể ừ ế ự ố ươ ủ ụ ể ườ ế ế ị

v thông báo c n thi t ph i gi l i mô hình sao cho m i giao ti p sẽ x yụ ầ ế ả ữ ạ ọ ế ả

ra b i vi c yêu c u m t đ i t ng. V i tr ng h p c a thông báo, ki uở ệ ầ ộ ố ượ ớ ườ ợ ủ ể

Page 15: ORB va COS Naming

thi t k này ràng bu c k t qu vào trong hai hình th c c a vi c yêu c uế ế ộ ế ả ứ ủ ệ ầ

ph ng th c không đ ng b .ươ ứ ồ ộ

Trong mô hình g i l i (callback), client cung c p đ i t ng đ c càiọ ạ ấ ố ượ ượ

đ t giao di n ch a đ ng các ph ng th c callback. Các ph ng th c nàyặ ệ ứ ự ươ ứ ươ ứ

có th đ c g i b i h th ng giao ti p bên d i đ chuy n k t qu choể ượ ọ ở ệ ố ế ướ ể ể ế ả

m t yêu c u không đ ng b . M t v n đ quan tr ng khi thi t k là nh ngộ ầ ồ ộ ộ ấ ề ọ ế ế ữ

yêu c u ph ng th c không đ ng b không nh h ng cài đ t g c c aầ ươ ứ ồ ộ ả ưở ặ ố ủ

đ i t ng. Nói cách khác, đó là nhi m v c a client trong vi c chuy n đ iố ượ ệ ụ ủ ệ ể ổ

m t yêu c u đ ng b g c thành m t yêu c u không đ ng b , server đ cộ ầ ồ ộ ố ộ ầ ồ ộ ượ

b n v ng m t yêu c u đ ng b bình th ng.ề ữ ộ ầ ồ ộ ườ

Vi c xây d ng m t yêu c u không đ ng b đ c th c hi n trong haiệ ự ộ ầ ồ ộ ượ ự ệ

b c. Đ u tiên, giao di n g c đ c cài đ t b i đ i t ng đ c thay thướ ầ ệ ố ượ ặ ở ố ượ ượ ế

b i hai giao di n m i mà chúng ch đ c cài đ t b i ph n m m phíaở ệ ớ ỉ ượ ặ ở ầ ề

client. M t giao di n ch a đ ng đ c t c a các ph ng th c mà client cóộ ệ ứ ự ặ ả ủ ươ ứ

th g i. Các ph ng th c này không tr v giá tr cũng không có b t cể ọ ươ ứ ả ề ị ấ ứ

tham s đ u ra nào. Giao di n còn l i g i là giao di n g i l i (callback).ố ầ ệ ạ ọ ệ ọ ạ

V i m i thao tác trong giao di n g c, nó bao g m m t ph ng th c sẽớ ỗ ệ ố ồ ộ ươ ứ

đ c tri u g i b i trình ORB c a client và chuy n k t qu c a ph ngượ ệ ọ ở ủ ể ế ả ủ ươ

th c k t h p đ c g i b i client.ứ ế ợ ượ ọ ở

Ví d , xét m t đ i t ng đ c cài đ t giao di n v i ch m t ph ngụ ộ ố ượ ượ ặ ệ ớ ỉ ộ ươ

th c:ứ

int add(in int i, in int j, out int k);

Gi s r ng ph ng th c này (đ c chúng ta cài đ t b ng Corba IDL)ả ử ằ ươ ứ ượ ặ ằ

nh n hai giá tr không âm ki u integer là i và j và tr v i+j qua tham sậ ị ể ả ề ố

đ u ra k. Thao tác này sẽ tr v giá tr -1 n u nó không th c hi n thànhầ ả ề ị ế ự ệ

công. Vi c chuy n đ i yêu c u ph ng th c đ ng b g c thành m t yêuệ ể ổ ầ ươ ứ ồ ộ ố ộ

c u không đ ng b v i các g i l i đ t đ c b i vi c sinh ra tr c tiên bầ ồ ộ ớ ọ ạ ạ ượ ở ệ ướ ộ

Page 16: ORB va COS Naming

đ c t ph ng th c (v i m c đích c a chúng ta, ta ch n các tên thu nặ ả ươ ứ ớ ụ ủ ọ ậ

ti n thay vì ph i tuân theo các qui t c nghiêm ng t đ c đ c t trongệ ả ắ ặ ượ ặ ả

OMG, 2001b):

Void sendcb_add(in int i ,in int j); // đ c g i b i client ượ ọ ở

Void reply_add(in int ret_val ,in int k); // đ c g i b i ORB c a client ượ ọ ở ủ

V m t hi u qu , t t c tham s đ u ra t đ c t ph ng th c g cề ặ ệ ả ấ ả ố ầ ừ ặ ả ươ ứ ố

đ c lo i b kh i ph ng th c đ c g i b i client, và đ c tr v nh làượ ạ ỏ ỏ ươ ứ ượ ọ ở ượ ả ề ư

các tham s đ u vào c a các thao tác g i l i. T ng t nh th n uố ầ ủ ọ ạ ươ ự ư ế ế

ph ng th c g c đ c t m t giá tr tr v thì giá tr đó đ c chuy nươ ứ ố ặ ả ộ ị ả ề ị ượ ể

thành m t tham s đ u vào cho thao tác callback.ộ ố ầ

B c k ti p bao g m vi c biên d ch đ sinh ra các giao di n. K t quướ ế ế ồ ệ ị ể ệ ế ả

là client đ c cung c p m t m u (stub) cho phép nó yêu c u m t cáchượ ấ ộ ẩ ầ ộ

không đ ng b đ n sendcb_add. Tuy nhiên client sẽ c n ph i cung c pồ ộ ế ầ ả ấ

m t cài đ t cho giao di n callback; trong ví d c a chúng ta là ph ngộ ặ ệ ụ ủ ươ

th c replycb_add. L u ý r ng nh ng thay đ i này không nh h ng đ nứ ư ằ ữ ổ ả ưở ế

vi c cài đ t đ i t ng phía server. S d ng ví d này, mô hình g i l iệ ặ ố ượ ở ử ụ ụ ọ ạ

(callback) đ c tóm l i hình 12ượ ạ ở

Page 17: ORB va COS Naming

Hình 12. Mô hình g i l i (callback)ọ ạ

Nh là m t thay th cho vi c callback, Corba cung c p m t mô hìnhư ộ ế ệ ấ ộ

g i là ki m soát vòng (polling). Trong mô hình này, client đ c cung c pọ ể ượ ấ

m t b các thao tác đ thăm dò ý ki n (poll) trình ORB c a nó cho các k tộ ộ ể ế ủ ế

qu đ n. Nh trong mô hình callback, client ch u trách nhi m trong vi cả ế ư ị ệ ệ

chuy n đ i các yêu c u ph ng th c đ ng b g c thành d ng không đ ngể ổ ầ ươ ứ ồ ộ ố ạ ồ

b . M t l n n a, h u h t công vi c có th đ c th c hi n b ng cáchộ ộ ầ ữ ầ ế ệ ể ượ ự ệ ằ

chuy n đ i m t cách t đ ng các đ c t ph ng th c thích h p t giaoể ổ ộ ự ộ ặ ả ươ ứ ợ ừ

di n g c đ c cài đ t b i đ i t ng.ệ ố ượ ặ ở ố ượ

Quay tr l i ví d c a chúng ta, ph ng th c add sẽ đ c chuy nở ạ ụ ủ ươ ứ ượ ể

thành hai đ c t ph ng th c đ c sinh ra nh sau:ặ ả ươ ứ ượ ư

Void sendpoll_add(in int i ,in int j); // đ c g i b i client ượ ọ ở

Void replypoll_add(out int ret_val ,out int k); // cũng đ c g i b iượ ọ ở

client

S khác bi t l n nh t so v i mô hình callback là ph ng th cự ệ ớ ấ ớ ươ ứ

replypoll_add sẽ ph i đ c cài đ t b i trình ORB c a client. S cài đ t nàyả ượ ặ ở ủ ự ặ

có th đ c sinh ra m t cách t đ ng b i trình biên d ch IDL. Mô hình vi cể ượ ộ ự ộ ở ị ệ

b phi u (polling) đ c tóm t t trong hình 8. M t l n n a, l u ý r ng càiỏ ế ượ ắ ộ ầ ữ ư ằ

đ t g c c a đ i t ng nh đã xu t hi n phía server không c n ph iặ ố ủ ố ượ ư ấ ệ ở ầ ả

thay đ i.ổ

Page 18: ORB va COS Naming

Hình 13. Mô hình ki m soát vòng (polling)ể

Cái còn thi u trong các mô hình đã đ c mô t là vi c các thông báoế ượ ả ệ

đ c g i gi a client và server bao g m h i đáp cho m t yêu c u khôngượ ử ữ ồ ỏ ộ ầ

đ ng b ; đ c l u tr h th ng bên d i trong tr ng h p client ho cồ ộ ượ ư ữ ở ệ ố ướ ườ ợ ặ

server ch a kh i ch y. May m n thay, h u h t các v n đ liên quan đ nư ở ạ ắ ầ ế ấ ề ế

giao ti p b n v ng nh v y không làm nh h ng đ n mô hình yêu c uế ề ữ ư ậ ả ưở ế ầ

d ng không đ ng b đã th o lu n tr c đó. Đi u c n thi t là cài đ t m tạ ồ ộ ả ậ ướ ề ầ ế ặ ộ

t p các server message đ có th cho phép các messages đ c l u tr t mậ ể ể ượ ư ữ ạ

th i cho đ n khi chúng đ c truy n đi. H ng gi i quy t đ c đ xu tờ ế ượ ề ướ ả ế ượ ề ấ

trong (OMG, 2001b) là t ng t v i h th ng message hàng đ i c a IBMươ ự ớ ệ ố ợ ủ

mà chúng ta đã th o lu n 2.4.4.ả ậ ở

10.Kh năng t ng k t (Interoperability)ả ươ ế

Các phiên b n tr c c a Corba b qua m t s v n đ cho vi c cài đ tả ướ ủ ỏ ộ ố ấ ề ệ ặ

th t s . K t qu là h th ng Corba c a m i nhà s n xu t s h u riêng choậ ự ế ả ệ ố ủ ỗ ả ấ ở ữ

mình m t cách th c hi n vi c giao ti p gi a client và server. C th là chộ ự ệ ệ ế ữ ụ ể ỉ

khi client và server cùng dùng m t trình ORB thì khi đó client m i có thộ ớ ể

yêu c u đ i t ng t server.ầ ố ượ ừ

Vi c thi u h t kh năng t ng k t (Interoperability) đã đ c gi iệ ế ụ ả ươ ế ượ ả

quy t b ng vi c gi i thi u m t giao th c inter-ORB chu n; trong vi c tế ằ ệ ớ ệ ộ ứ ẩ ệ ổ

Page 19: ORB va COS Naming

h p m t cách hình th c vi c tham chi u các đ i t ng. Tr l i hình 2, taợ ộ ứ ệ ế ố ượ ở ạ

th y giao ti p này ch ra có m t giao th c chu n gi a client và server màấ ế ỉ ộ ứ ẩ ữ

trong Corba đ c g i là giao th c General Inter-ORB Protocol (GIOP).ượ ọ ứ

GIOP th c s là m t khung cho m t giao th c, nó gi s r ng m t sự ự ộ ộ ứ ả ử ằ ộ ự

cài đ t th c t đ c th c hi n trên m t giao th c v n chuy n đã t n t i.ặ ự ế ượ ự ệ ộ ứ ậ ể ồ ạ

Giao th c v n chuy n đó ph i đáng tin c y h ng k t n i (connection-ứ ậ ể ả ậ ướ ế ố

oriented) và cung c p khái ni m c a dòng byte (byte stream), cùng v iấ ệ ủ ớ

m t s các tính năng khác. Không ng c nhiên khi mà TCP th a mãn các yêuộ ố ạ ỏ

c u này, nh ng m t s giao th c v n chuy n khác cũng th a mãn đi uầ ư ộ ố ứ ậ ể ỏ ề

này.

Vi c cài đ t GIOP ch y trên TCP đ c g i là Internet Inter_ORBệ ặ ạ ượ ọ

Protocol hay đ n gi n là IIOP.ơ ả

GIOP (và IIOP hay b t c cài đ t nào c a GIOP), nh n bi t đ c ki uấ ứ ặ ủ ậ ế ượ ể

thông báo khác nhau, ch ra trong Hình 14. Hai ki u thông báo quan tr ngỉ ể ọ

nh t là Request và Reply, là các hình th c tham gia chính vào trong cài đ tấ ứ ặ

th c t c a m t yêu c u ph ng th c t xa.ự ế ủ ộ ầ ươ ứ ừ

M t message request bao g m toàn b , m t yêu c u đã đ c đóng gói,ộ ồ ộ ộ ầ ượ

bao g m m t tham chi u đ i t ng, tên c a ph ng th c đ c yêu c u,ồ ộ ế ố ượ ủ ươ ứ ượ ầ

và t t c các tham s đ u vào c n thi t. Tham chi u đ i t ng và tênấ ả ố ầ ầ ế ế ố ượ

ph ng th c là các thành ph n c a tiêu đ (header). M i message requestươ ứ ầ ủ ề ỗ

còn có m t ID yêu c u c a nó, đ c dùng đ đ i chi u sau này khi câu trộ ầ ủ ượ ể ố ế ả

l i t ng ng đ c tr v .ờ ươ ứ ượ ả ề

M t message reply bao g m giá tr tr v đã đ c đóng gói và cácộ ồ ị ả ề ượ

tham s đ u ra k t h p v i ph ng th c đ c yêu c u tr c đó. Khôngố ầ ế ợ ớ ươ ứ ượ ầ ướ

c n ph i nh n bi t m t cách rõ ràng đ i t ng hay ph ng th c; đ nầ ả ậ ế ộ ố ượ ươ ứ ơ

gi n là tr v cùng ID yêu c u nh đã dùng t ng ng trong messageả ả ề ầ ư ươ ứ

request là đ :ủ

Page 20: ORB va COS Naming

Ki uể message

Niơ

g iử

Mô tả

Request

Client

Ch a đ ng yêu c uứ ự ầ

Reply Server

Ch a đ ng h i đáp choứ ự ồ m t yêu c uộ ầ

Locate request

Client

Ch a đ ng v đ i t ngứ ự ề ố ượ m t v trí chính xácở ộ ị

Locate reply

Server

Ch a đ ng thông tin vứ ự ị trí c a m t đ i t ngủ ộ ố ượ

Cancel request

Client

Ch ra client không c nỉ ầ câu tr l i n aả ờ ữ

Close connection

Both

Ch ra k t n i sẽ b đóngỉ ế ố ị

Message error

Both

Ch a đ ng thông tin vứ ự ề l iỗ

Fragment

Both

Ph n c a m t messageầ ủ ộ l n h nớ ơ

Hình 14. Các ki u message c a GIOPể ủ

Nh chúng ta th o lu n sau đây, m t client có th yêu c u m t kho càiư ả ậ ộ ể ầ ộ

đ t cung c p các chi ti t v n i mà m t đ i t ng c th có th đ c tìmặ ấ ế ề ơ ộ ố ượ ụ ể ể ượ

th y. ấ M t yêu c u nh v y đ c g i b i Message Locate Request . Kho càiộ ầ ư ậ ượ ử ở

đ t sẽ tr l i b ng m t Message Locate Reply, th ng đ nh n bi t đ cặ ả ờ ằ ộ ườ ể ậ ế ượ

server hi n t i c a đ i t ng mà yêu c u đó có th đ c g i.ệ ạ ủ ố ượ ầ ể ượ ử

Message Cancel Request có th đ c g i b i m t client đ n server khiể ượ ử ở ộ ế

client mu n h y m t message request ho c locate request đã g i tr cố ủ ộ ặ ử ướ

Page 21: ORB va COS Naming

đó. H y b m t yêu c u nghĩa là client không còn s n sàng đón nh n câuủ ỏ ộ ầ ẵ ậ

tr l i t server n a. Có nhi u lý do khác nhau cho vi c m t client mu nả ờ ừ ữ ề ệ ộ ố

h y b câu tr l i cho m t yêu c u, nh ng thu ng là do Time Out t o ngủ ỏ ả ờ ộ ầ ư ờ ạ ứ

d ng c a client. Th t quan tr ng khi ph i l u ý r ng h y b m t yêu c uụ ủ ậ ọ ả ư ằ ủ ỏ ộ ầ

sẽ không đ a đ n r ng yêu c u k t h p sẽ không b k t thúc. Tráchư ế ằ ầ ế ợ ị ế

nhi m c a ng d ng client là ph iđ i phó trong tình hu ng này.ệ ủ ứ ụ ả ố ố

Trong giao th c GIOP, client luôn luôn thi t l p m t k t n i đ n m tứ ế ậ ộ ế ố ế ộ

server. Server đ c mong đ i sẽ ch p nh n ho c t ch i các yêu c u k tượ ợ ấ ậ ặ ừ ố ầ ế

n i đ n, nh ng sẽ không t nó thi t l p các k t n i đ n client. Tuy nhiên,ố ế ư ự ế ậ ế ố ế

c client và server đ u có qu n đ đóng k t n i b ng vi c chúng có thả ề ề ể ế ố ằ ệ ể

g i message CloseCconnection đ n đ i tác k t n i.ử ế ố ế ố

N u l i x y ra, đ i tác sẽ nh c nh b ng cách g i m t message cóế ỗ ả ố ắ ở ằ ử ộ

ki u Message Error. M t message nh v y bao g m tiêu đ (header) c aể ộ ư ậ ồ ề ủ

message sinh ra l i. Cách ti p c n này t ng t nh message ICMP trongỗ ế ậ ươ ự ư

giao th c Internet th ng đ c dùng đ tr v thông tin l i khi có đi u gìứ ườ ượ ể ả ề ỗ ề

sai sót. Trong tr ng h p này tiêu đ (header) c a gói ID sinh ra l i đ cườ ợ ề ủ ỗ ượ

g i đi nh là d li u trong message ICMP.ử ư ữ ệ

Cu i cùng, GIOP cũng cho phép các message request và reply có thố ể

đ c phân m nh. B ng cách này, các yêu c u có nhi u d li u đ cượ ả ằ ầ ề ữ ệ ượ

chuy n gi a client và server có th đ c h tr m t cách d dàng. Cácể ữ ể ượ ỗ ợ ộ ễ

m nh đ c g i b ng message Frament b ng cách nh n bi t message g cả ượ ử ằ ằ ậ ế ố

và cho phép ghép l i message đó phía receiver.ạ ở

11.Đ ng b hóa (Synchronization)ồ ộ

Hai d ch v quan tr ng nh t cho phép t o s đ ng b trong Corba làị ụ ọ ấ ạ ự ồ ộ

d ch v qu n lý đ ng th i và d ch v giao tác. Hai d ch v này k t h p đị ụ ả ồ ờ ị ụ ị ụ ế ợ ể

cài đ t các giao tác phân tán và l ng vào nhau b ng cách s d ng khoá haiặ ồ ằ ử ụ

pha (two- phase).

Page 22: ORB va COS Naming

Mô hình bên d i các giao tác trong Corba là nh sau: M t giao tácướ ư ộ

đ c kh i t o b i m t client và bao g m m t chu i các yêu c u đ iượ ở ạ ở ộ ồ ộ ỗ ầ ố

t ng. Khi m t đ i t ng đ c yêu c u l n đ u tiên, nó t đ ng trượ ộ ố ượ ượ ầ ầ ầ ự ộ ở

thành m t ph n c a giao tác. H qu là, server đ i t ng đ c nh c r ngộ ầ ủ ệ ả ố ượ ượ ắ ằ

bây gi nó đã tham gia vào giao tác. Thông tin đ c chuy n m t cách hoànờ ượ ể ộ

toàn đ n server khi vi c yêu c u đ i t ng x y ra.ế ệ ầ ố ượ ả

Có hai lo i đ i t ng có th là m t ph n c a giao tác. Đ i t ng cóạ ố ượ ể ộ ầ ủ ố ượ

th ph c h i (recoverable object) là m t đ i t ng mà đ c th c thi b iể ụ ồ ộ ố ượ ượ ự ở

m t đ i t ng server có kh năng tham vào giao th c chuy n hai pha. Cộ ố ượ ả ứ ể ụ

th server c a đ i t ng nh v y có th h tr vi c h y b m t giao tácể ủ ố ượ ư ậ ể ỗ ợ ệ ủ ỏ ộ

b ng vi c rolling back m i thay đ i đ c t o ra nh là k t qu c a vi cằ ệ ọ ổ ượ ạ ư ế ả ủ ệ

yêu c u m t trong các đ i t ng có th ph c h i c a nó. Tuy nhiên, cũngầ ộ ố ượ ể ụ ồ ủ

có th yêu c u các đ i t ng là m t ph n c a giao tác mà không th đ cể ầ ố ượ ộ ầ ủ ể ượ

rolled back tr l i tr ng thái tr c khi giao tác b t đ u. C th các đ iở ạ ạ ướ ắ ầ ụ ể ố

t ng có th giao tác (transactional objects) này đ c th c thi b i serverượ ể ượ ự ở

không tham gia vào giao th c chuy n (commit) hai pha c a giao tác. Cácứ ể ủ

đ i t ng transactional th c là các đ i t ng ch đ c.ố ượ ự ố ượ ỉ ọ

Vì v y, rõ ràng r ng các giao tác Corba t ng t nh các giao tác phânậ ằ ươ ự ư

tán và các giao th c c a chúng mà ta đã th o lu n ch ng 5 và ch ngứ ủ ả ậ ở ươ ươ

7.

T ng t d ch v khóa đ c cung c p b i d ch v qu n lý đ ng th iươ ự ị ụ ượ ấ ở ị ụ ả ồ ờ

là th r t đ c mong đ i. Trong th c t , d ch v này đ c cài đ t b ngứ ấ ượ ợ ự ế ị ụ ượ ặ ằ

cách s d ng m t trình qu n lý khóa trung tâm; nó không s d ng kỹử ụ ộ ả ử ụ

thu t khóa phân tán. D ch v này phân bi t vi c khóa đ c và khóa ghi vàậ ị ụ ệ ệ ọ

có kh năng h tr các ki u khóa cho các đ chi ti t khác nhau nhả ỗ ợ ể ộ ế ư

th ng đ c yêu c u trong c s d li u. Ví du, phân bi t vi c khóa toànườ ượ ầ ơ ở ữ ệ ệ ệ

b b ng v i vi c khóa ch m t b n ghi. Xem (Gay và Reuter, 1993; ho cộ ả ớ ệ ỉ ộ ả ặ

Garcia-Moding, 2000) đ bi t thêm thông tin v khóa granular.ể ế ề

Page 23: ORB va COS Naming

B o m t (Security)ả ậ

Tính b o m t c a Corba có m t l ch s lâu dài. Trong phiên b n đ uả ậ ủ ộ ị ử ả ầ

tiên c a các đ c t Corba th t khó ti p c n ch đ này b i m t lý do đ nủ ặ ả ậ ế ậ ủ ề ở ộ ơ

gi n là các c g ng đ đ c t tính b o m t đ u b th t b i. Trong Corbaả ố ắ ể ặ ả ả ậ ề ị ấ ạ

2.4, d ch v b o m t chi m h n 400 trang đ đ c t và t o nên s rõ ràngị ụ ả ậ ế ơ ể ặ ả ạ ự

v cách mà tính b o m t đ c đ a vào trong các h th ng Corba. ề ả ậ ượ ư ệ ố

Bây gi chúng ta hãy xem xét kỹ h n v tính b o m t c a Corba.ờ ơ ề ả ậ ủ

T ng quan v nh ng v n đ này có th đ c tìm th y trong (Blakley,ổ ề ữ ấ ề ể ượ ấ

2000), đ c vi t b i m t trong các tác gi đã đ c t tính b o m t choượ ế ở ộ ả ặ ả ả ậ

Corba.

M t v n đ đ c t quan tr ng cho tính b o m t trong Corba là nh ngộ ấ ề ặ ả ọ ả ậ ữ

d ch v này nên cung c p m t t p các c ch thích h p mà có th đ cị ụ ấ ộ ậ ơ ế ợ ể ượ

dùng đ cài đ t cho nhi u chính sách b o m t khác nhau. Đi u làm ph cể ặ ề ả ậ ề ứ

t p v n đ là nh ng d ch v này sẽ đ c cung c p t i các đi m khác nhauạ ấ ề ữ ị ụ ượ ấ ạ ể

v m t không gian và th i gian. Ví d n u m t client mu n yêu c u đ iề ặ ờ ụ ế ộ ố ầ ố

t ng m t cách an toàn, thì chúng ta c n quy t đ nh khi nào c ch anượ ộ ầ ế ị ơ ế

toàn đ c dùng (ch ng h n t i th i đi m binding, hay yêu c u, hay cượ ẳ ạ ạ ờ ể ầ ả

hai) và n i mà các c ch này nên đ c dùng (ch ng h n t i m c ngơ ơ ế ượ ẳ ạ ạ ứ ứ

d ng, bên trong ORB, hay trong quá trình truy n message).ụ ề

Trái tim c a s b o m t trong Corba đ c hình thành b i s h trủ ự ả ậ ượ ở ự ỗ ợ

các yêu c u đ i t ng an toàn. Ý t ng bên d i là các đ i t ng m c ngầ ố ượ ưở ướ ố ượ ứ ứ

d ng nên không bi t các d ch v b o m t đ c dùng. Tuy nhiên, n u m tụ ế ị ụ ả ậ ượ ế ộ

client đ c dùng có nh ng yêu c u v b o m t c th , client nên đ cượ ữ ầ ề ả ậ ụ ể ượ

cho phép đ c t các yêu c u đó. Vì v y chúng có th nh n đ c tài kho nặ ả ầ ậ ể ậ ượ ả

khi m t đ i t ng đ c yêu c u. Tr ng h p t ng t x y ra cho m t đ iộ ố ượ ượ ầ ườ ợ ươ ự ả ộ ố

t ng khi nó đ c yêu c u. Cách ti p c n này d n đ n cách t ch c t ngượ ượ ầ ế ậ ẫ ế ổ ứ ổ

th nh trong hình 19.ể ư

Page 24: ORB va COS Naming

Hình 15. T ch c chung cho 1 yêu c u đ i t ng an toàn trong Corbaổ ứ ầ ố ượ

Khi m t client liên k t v i m t đ i t ng đ yêu c u đ i t ng trìnhộ ế ớ ộ ố ượ ể ầ ố ượ

ORB c a client sẽ xác đ nh các d ch v b o m t nào là c n thi t t i phíaủ ị ị ụ ả ậ ầ ế ạ

client đ h tr các yêu c u an toàn.ể ỗ ợ ầ

Vi c ch n l a các d ch v đ c xác đ nh b i các chính sách b o m tệ ọ ự ị ụ ượ ị ở ả ậ

kèm theo mi n qu n tr c a n i mà client đang th c thi, nh ng cũng b iề ả ị ủ ơ ự ư ở

các chính sách c th c a client đó.ụ ể ủ

Các chính sách b o m t đ c đ c t b ng các đ i t ng chính sáchả ậ ượ ặ ả ằ ố ượ

(policy objects) kèm theo client. Trong th c t , domain mà client đangự ế

th c thi trong đó sẽ t o s n các chính sách b o m t ORB v a client đóự ạ ẵ ả ậ ủ

b ng m t t p c th các đ i t ng chính sách. Các chính sách m c đ nhằ ộ ậ ụ ể ố ượ ặ ị

đ c kèm theo m t cách t đ ng v i client. M t ví d v đ i t ng chínhượ ộ ự ộ ớ ộ ụ ề ố ượ

sách là nó đ c t ki u c a vi c b o v message đ c yêu c u, và các đ iặ ả ể ủ ệ ả ệ ượ ầ ố

t ng có m t danh sách các thành ph n đáng tin. Nh ng ví d khác và chiượ ộ ầ ữ ụ

ti t có th tìm th y trong (Blakley, 2000).ế ể ấ

M t c u trúc t ng t đ c cho phía server. M t l n n a domainộ ấ ươ ự ượ ở ộ ầ ữ

qu n lý n i mà đ i t ng đ c yêu c u đang th c thi sẽ yêu c u m t t pả ơ ố ượ ượ ầ ự ầ ộ ậ

Page 25: ORB va COS Naming

c th các chính sách b o m t đ c dùng. T ng t nh v y, đ i t ngụ ể ả ậ ượ ươ ự ư ậ ố ượ

đ c yêu c u sẽ có t p các đ i t ng chính sách kèm theo c a riêng nóượ ầ ậ ố ượ ủ

n i mà các thông tin v đ i t ng c th đ c l u tr . Có nhi u cách ti pơ ề ố ượ ụ ể ượ ư ữ ề ế

c n có th đ c đ a ra đ cài đ t tính b o m t trong Corba. C th đậ ể ượ ư ể ặ ả ậ ụ ể ể

t o cho các ORB càng t ng quát càng t t thì nên đ c t các d ch v b oạ ổ ố ặ ả ị ụ ả

m t b i các giao di n chu n cho phép n s cài đ t c a các d ch v đó.ậ ở ệ ẩ ẩ ự ặ ủ ị ụ

Nh ng d ch v có th đ c đ c t theo cách này đ c g i là có th thayữ ị ụ ể ượ ặ ả ượ ọ ể

th trong Corba.ế

Các d ch v b o m t replaceable đ c cài đ t b ng vi c t h p v i haiị ụ ả ậ ượ ặ ằ ệ ổ ợ ớ

interceptor khác nhau, nh trong Hình 20. Interceptor ki m soát truy xu tư ể ấ

là interceptor m c yêu c u cho phép ki m tra quy n truy xu t đi kèm v iứ ầ ể ề ấ ớ

yêu c u. Ngoài ra, còn có m t interceptor m c message g i là interceptorầ ộ ứ ọ

yêu c u secure quan tâm đ n vi c cài đ t b o v cho message. Nói cáchầ ế ệ ặ ả ệ

khác, interceptor có th mã hóa (encrypt) các yêu c u và h i đáp cho m cể ầ ồ ụ

đích toàn v n (intergrity) và tin c n (confidentiality).ẹ ẩ

Hình 16. Vai trò c a các interceptor b o m t trong Corbaủ ả ậ

Page 26: ORB va COS Naming

Interceptor yêu c u an toàn đóng m t vai trò c t y u, b i nhi m vầ ộ ố ế ở ệ ụ

c a nó là cài đ t m t ng c nh (context) b o m t cho client mà sẽ có phépủ ặ ộ ữ ả ả ậ

t ng đ ng yêu c u secure c a đ i t ng đích. Context b o m t nàyươ ươ ầ ủ ố ượ ả ậ

đ c bi u di n b i m t đ i t ng context b o m t, bao g m t t c thôngượ ể ễ ở ộ ố ượ ả ậ ồ ấ ả

tin và ph ng th c c n thi t cho vi c yêu c u đ i t ng đích m t cách anươ ứ ầ ế ệ ầ ố ượ ộ

toàn. Ví d nó mô t c ch nào sẽ đ c dùng, cung c p các ph ng th cụ ả ơ ế ượ ấ ươ ứ

đ mã hóa và gi i mã các message, l u tr các tham chi u đ y nhi m,…ể ả ư ữ ế ể ủ ệ

Server đ i t ng cũng sẽ ph i t o cho nó đ i t ng context b o m t.ố ượ ả ạ ố ượ ả ậ

Interceptor c a client vì th tr c ph i g i m t message đ n server đ iủ ế ướ ả ử ộ ế ố

t ng ch a đ ng nh ng thông tin c n thi t đ xác nh n client và làm choượ ứ ự ữ ầ ế ể ậ

server t o ra m t context b o m t cho các yêu c u sau đó. L u ý r ng,ạ ộ ả ậ ầ ư ằ

interceptor yêu c u an toàn server đ i t ng sẽ ki m tra nh ng đ iầ ở ố ượ ể ữ ố

t ng chính sách thao đ i t ng c th đ xem lúc nào và cách gì đ cácượ ố ượ ụ ể ể ể

yêu c u v b o m t có th g p nhau. Câu tr l i cho client có th bao g mầ ề ả ậ ể ặ ả ờ ể ồ

các thông tin ph tr i nh m cho phép client có th xác nh n v i server.ụ ộ ằ ể ậ ớ

Sau vi c trao đ i message ban đ u này, client sẽ đ c liên k t v i đ iệ ổ ầ ượ ế ớ ố

t ng đích, và c hai sẽ thi t l p cái g i là liên k t b o m t (securityượ ả ế ậ ọ ế ả ậ

association). T đó các yêu c u secure có th di n ra b i các interceptorừ ầ ể ễ ở

yêu c u secure b o v các message yêu c u và h i đáp theo chính sáchầ ả ệ ầ ồ

đ c đ ng ý gi a client và server đ i t ng. M t vai trò c t y u trongượ ồ ữ ố ượ ộ ố ế

vi c cài đ t m t security association là c a đ i t ng tách bi t, m t giaoệ ặ ộ ủ ố ượ ệ ộ

di n đ c chu n hóa, g i là đ i t ng h m. Đ i t ng h m (vault object)ệ ượ ẩ ọ ố ượ ầ ố ượ ầ

đ c g i b i các interceptor yêu c u secure đ t o ra m t đ i t ngượ ọ ở ầ ể ạ ộ ố ượ

context b o m t. Interceptor tr c h t đ c các thông tin chính sách tả ậ ướ ế ọ ừ

nh ng đ i t ng chính sách kèm theo c a client và chuy n nh ng thôngữ ố ượ ủ ể ữ

tin này đ n vault object. M t cách rõ ràng, vault object ph i đ c cài đ tế ộ ả ượ ặ

nh m t ph n c a ORB theo cách ch ng tr m c p (tamper- proof) vàư ộ ầ ủ ố ộ ắ

thu c v c s tính toán tin c y c a b t c h th ng Corba nào.ộ ề ơ ở ậ ủ ấ ứ ệ ố