Nghiên cứu môi trường phát triển phần mềm theo chuẩn CORBA
MỤC LỤC
MỞ ĐẦU
PHẦN I : TÌM HIỂU VỀ CORBA
Chương 1
TỔNG QUAN VỀ CORBA
I. CORBA : Khả năng tương tác (interoperability) của các object 2
II. OMA: (Object Management Architecture) 2
III. Những lợi ích của CORBA 4
IV. OMG : (Object Managenent Group) 4
Chương 2
TỔNG QUAN VỀ KỸ THUẬT
I. CORBA và OMA 5
II. CORBA object 6
III. OMG IDL 6
1. Xây dựng object CORBA 6
2. Thực hiện việc lựa chọn 6
3. Chọn ngôn ngữ hiện thực 6
4. Kết nối tới ORB 7
IV. ORB 9
1. Nền tảng cho khả năng tương tác qua lại 9
2. Object reference 10
3.IDL và ORB 11
4.DII: (Dynamic Invocation Interface) 11
V. Khả năng tương tác trên nền tảng CORBA 13
1.Truy xuất một object từ một ORB từ xa 13
2.Tổ hợp thành phần đối tượng đã mua 14
3. Phân bố client và object 16
VI. Kiến trúc quản lý đối tượng: (OMA) 16
VII. CORBA services 19
VIII.CORBA facilities 19
Chương 3
GIỚI THIỆU VỀ OMG IDL
I. Sự tuân theo chuẩn CORBA 21
1. CORBA core 21
2. Những điểm tuân theo CORBA bổ sung 22
3. Đặc tả môi trường CORBA 22
Chương 4
TÌM HIỂU VỀ ORB Ở KHÍA CẠNH CLIENT
I. Tổng quan về ORB và khía cạnh Client 24
II. Cấu trúc client và IDL stub 26
III. DII: Dynamic Invocation Interface 27
1.Định danh một object đích 27
2.Lấy ra interface đích 28
3.Xây dựng một cuộc gọi 28
4.Request interface 29
5.Gọi DII request: trong trường hợp đồng bộ 29
6.Gọi DII request: trong trường hợp bất đồng bộ 29
IV. Interface Repository 29
1.Sử dụng IR 30
2.Định danh một IR 30
3.Cách làm việc của IR 31
4.Cấu trúc của IR 31
V. ORB Interface 32
1.Khởi tạo client tại thời điểm bắt đầu 32
2.Chuyển đổi những OR sang dạng string 33
Chương 5
TÌM HIỂU VỀ ORB Ở KHÍA CẠNH SERVER
I. Kích hoạt Server và gọi object implementation 35
II. Chuẩn hóa khía cạnh server 38
III. Các thành phần khía cạnh server 38
IV. Cấu trúc của OI 40
V. OA (Object Adapter) 41
1.BOA 42
2.OA thư viện 42
3.Adapter dữ liệu hướng đối tượngOO Database Adapter) 42
VI. BOA 42
VII. IDL skeleton tĩnh 44
VIII.DSI 45
Chương 6
CORBA INTEROPERABILITY (KHẢ NĂNG TƯƠNG TÁC TRONG CORBA)
I. Khả năng tương tác trong CORBA 46
1.Đối với người sử dụng 46
2.Đối với người quản trị hệ thống và những khách hàng mua ORB 46
3.Đối với những nhà lập trình đối tượng 47
II. Sự giao tiếp ORB-ORB 47
1.Viễn cảnh không đồng nhất 48
III. CORBA domain 48
1.Kết nối có tính kỹ thuật và kết nối theo chế độ trung gian 49
2.Cầu nối trực tiếp và cầu nối trung gian 49
3.IORs (những OR có khả năng tương tác_liên kết) 52
4.Kết nối inline và mức request (request level) 53
5.Các cầu nối "request_level" dạng "interface_specific" và "Generic" 55
IV. Cấu trúc của sự đặc tả tương tác 55
V. GIOP và IIOP 57
1.CDR 58
2.Dạng thông điệp GIOP 58
3.Lưu chuyển GIOP message 60
4.IIOP 60
VI. ESIOPs và DCE CIOP 61
1.Vai trò của DCE trong DCE CIOP 61
2.Cấu trúc của đặc tả DCE CIOP 61
PHẦN II : CÁC DỊCH VỤ CỦA CORBA
PHẦN 1
DỊCH VỤ LIFECYCLE & RELATIONSHIP 64
1.1. Tổng quát về các dịch vụ và các phương tiện của corba (CORBAServices and CORBAfacilities) 64
1.2. Dịch vụ Lifecycle 66
1.2.1.Các đối tượng sản xuất (Factory Objects) 66
1.2.2.Di chuyển, sao chép và xóa đối tượng (Move, Copy, Delete) 67
1.2.3.Các loại giao tiếp và đối tượng 67
1.2.4.Vị trí : Các đối tượng tìm kiếm (Factory Finders) 69
1.3. Dịch vụ Relationship 69
1.3.1.Quan hệ và vai trò (Relationship và Role) 69
1.3.2.Dịch vụ Relationship cơ bản : Role và Relationship 71
1.3.3.Mức thứ hai của dịch vụ Relationship : Sơ đồ các đối tượng quan hệ (Graphs of Related Objects) 71
1.3.4.Mức thứ ba 73
1.3.5.Đồng nhất đối tượng (Object Identity) 73
1.3.6.Đơn thể lifecycle phức hợp (Compound Lifecycle Module) 74
1.4. Role và Relationship IDL 75
1.4.1.Đặc tả IDL cho các đối tượng RoleFactory và Role 75
1.4.2.Đặc tả IDL cho các đối tượng Relationship Factory và Relationship 77
1.4.3.Đặc tả IDL cho đối tượng Node 78
PHẦN 2
DỊCH VỤ PERSISTENT OBJECT & EXTERNALIZATION 80
2.1. Kiến trúc của POS 81
2.1.1.Điều khiển tính vĩnh cửu (Controlling Persistent) 83
2.2. Ví dụ veÀ POS 83
2.3. Protocol (giao thức) 84
2.3.1.Giao thức Direct Access (Giao thức truy xuất trực tiếp) 84
2.3.2.Giao thức ODMG-93 85
2.3.3.Giao thức Dynamic Data Object (Giao thức dữ liệu đối tượng động) 85
2.3.4.Các giao thức khác 85
2.4. Datastore 85
2.5. Dịch vụ Externalization (Dịch vụ lưu trữ mở rộng) 86
2.5.1.Định dạng Stream (Stream Format) 87
2.5.2.Giao tiếp Externalization (Externalization Interface) 87
PHẦN 3
DỊCH VỤ NAMING & TRADER 90
3.1. Truy xuất tên (accessing name) 91
3.2. Đại diện cho tên 91
3.3. Dịch vụ Trader 92
3.3.1.Truy xuất dịch vụ Trader 93
3.3.2.Dịch vụ Trader sẽ làm việc như thế nào ? 93
PHẦN 4
DỊCH VỤ EVENT 95
4.1. Các ngữ cảnh giao tiếp (Communication semantics) 95
4.2. Kiến trúc của dịch vụ Event 97
4.3. Giao tiếp của dịch vuÏ Event 99
4.3.1.Đăng ký sự kiện với kênh sự kiện 102
4.3.2.Kênh sự kiện mẫu (Typed Event Channel) 102
PHẦN 5
DỊCH VỤ TRANSACTION & CONCURRENCY 103
5.1. Khái niệm giao dịch 103
5.2. Các đặc điểm đặc trưng của OTS 104
5.2.1.Hỗ trợ mô hình đa giao dịch (Multiple Transaction Model) 104
5.2.2.Sự phát triển của quá trình triển khai 105
5.2.3.Mô hình tương tác (Model Interoperability) 105
5.2.4.Tương tác trên mạng (Network Interoperability) 106
5.2.5.Sự điều khiển việc nhân bản giao dịch một cách mềm dẻo 106
5.2.6.Hỗ trợ cho giám sát TP (TP Monitor) 107
5.2.7.Hỗ trợ cho các chuẩn TP có sẵn 107
5.3. Các thành phần của OTS 108
5.3.1.Ngữ cảnh giao dịch 109
5.4. Flat transaction (Giao dịch phẳng) 110
5.5. Nested transaction (Giao dịch lồng nhau) 110
5.6. Dịch vụ giao dịch đối tượng (Object transaction service) của OMG 111
5.7. Ví dụ về dịch vụ giao dịch 112
5.8. Dịch vụ điều khiển đồng thời (Concurrency control service) 115
PHẦN 6
DỊCH VỤ PROPERTY & QUERY 117
6.1. Dịch vụ Property 117
6.1.1.Đặc tả IDL của dịch vụ đặc tính cơ bản (Basic Property Service) 118
6.1.2.Định nghĩa và sửa đổi đặc tính 119
6.1.3.Liệt kê và lấy các đặc tính 119
6.1.4.Xóa đặc tính 120
6.1.5.Xác định một đặc tính có được định nghĩa hay không 121
6.2. Lấy ra và thiết lập các chế độ cho các đặc tính 121
6.3. Dịch vụ Object query 121
6.3.1.Các thành phần của OQS 121
6.3.2.Ngôn ngữ truy vấn chuẩn 122
6.3.3.Giao tiếp chuẩn hóa 123
6.3.4.Tập hợp chuẩn hóa 124
6.3.5.Query Evaluator/Manager (Đánh giá/Quản lý truy vấn) 124
PHẦN 7
DỊCH VỤ SECURITY & LICENSING 126
7.1. Giới thiệu về dịch vụ Security (Bảo mật) 126
7.2. Tổng quát về bảo mật 126
7.3. Sự tin cậy trong hệ thống đối tượng phân bố 126
7.4. Các yêu cầu bảo mật phân bố 128
7.4.1.Tính nhất quán (consistency) 128
7.4.2.Tính vô hướng (scalability) 129
7.4.3.Yêu cầu điều chỉnh 129
7.4.4.Tính khả thi (Enforcebility) 130
7.4.5.Tính khả dụng (Usability) 130
7.4.6.Tiêu chuẩn đánh giá (Evaluation Criteria) 131
7.5. Các chức năng bảo mật (Security functionality) 131
7.6. Các thành phần của dịch vụ bảo mật 132
7.6.1.Trusted Computing Base (TCB - Cơ sở của sự tin cậy trong tính toán) 133
7.7. Dịch vụ License (Dịch vụ cấp giấy phép) 134
CÁC PHƯƠNG TIỆN CỦA CORBA 136
8.1. Tổng quát về các phương tiện của CORBA 136
8.2. Các phương tiện CORBA theo chiều ngang 136
8.2.1. Giao diện người sử dụng (User Inteface) 137
8.2.2.Quản trị thông tin (Information management) 137
8.2.3.Quản trị hệ thống (System Management) 139
8.2.4.Quản trị công việc (Task Management) 140
8.3. CORBAfacilities RFP 1 140
8.4. CORBAfacilities RFP 2 140
8.5. Các phương tiện corba theo chiều ngang (Vertical CORBAfacilities) 141
8.6. OMG Architecture board (Bảng kiến trúc của OMG) 141
PHẦN III: CÔNG CỤ HIỆN THỰC ORBACUS
CHƯƠNG 1
ORBACUS
I. Định nghĩa ORBacus 152
II.Ví dụ “Helloworld” 152
1.IDL Code 152
2.Hiện thực 153
2.1.Hiện thực Server 153
2.2.Hiện thực Client 154
2.3.Biên dịch 156
2.4.Thực thi ứng dụng 156
CHƯƠNG 2
GENERATOR ra ORBacus code
I.Tổng quan 157
II.Ngữ pháp 157
III.Mô tả 157
IV.Option cho jidl 158
V.Option cho hidl 159
VI.Option cho ridl 159
VII.Option cho irserv 160
VIII.Option cho irfeed 160
IX.Option cho irdel 160
CHƯƠNG 3
KHỞI TẠO ORB VÀ BOA
I.Khởi tạo ORB 162
1.Khởi tạo ORB Java cho các ứng dụng 162
2.Khởi tạo ORB Java trong JDK 1.2 162
3.Khởi tạo ORB Java cho Applet 163
II.Khởi tạo BOA 163
1.Khởi tạo BOA trong Java 163
2. Khởi tạo BOA Java trong JDK 1.2 164
III.Đặt cấu hình ORB và BOA 164
1.Thuộc tính 164
2.Những option của dòng lệnh 166
3.Lọc những option của dòng lệnh 167
4.Dùng file cấu hình 167
5.Định nghĩa những thuộc tính trong Java 168
6.Thứ tự (ưu tiên) của những thuộc tính 169
7.Việc sử dụng thuộc tính được cải tiến 169
IV.Vòng lặp sự kiện server 171
1.Ứng dụng client/server 172
2.”Deactive” server 172
V.Applet 172
CHƯƠNG 4
ĐỐI TƯỢNG CORBA
I.Tổng quan 174
II.Hiện thực servant 175
1.Hiện thực Servant dùng thừa kế 175
2.Hiện thực Servant dùng đại diện (delegation) 176
III.Tạo một Servant 178
IV.Kết nối tới Servant 179
V.Đối tượng sản xuất 180
VI.Truy xuất một servant từ tham chiếu 182
CHƯƠNG 5
ĐỊNH VỊ CÁC ĐỐI TƯỢNG
I.Nhận những OR 184
II.Thời gian sống của OR 185
1.Hostname 185
2.Port number 185
3.Object key 186
III.OR dưới dạng string 186
1.Sử dụng file 186
2.Sử dụng URL 187
3.Dùng thông số applet 188
IV.Kết nối đến những đối tượng được đặt tên 188
1.Dùng ký hiệu iiop:// 188
2.Dùng get_inet_object 189
V.Service khởi tạo 189
1.Phân giải dịch vụ khi khởi tạo 190
2.Cung cấp IOR của service khởi tạo 191
CHƯƠNG 6
ĐẾM THAM CHIẾU (REFERENCE COUNTER)
I.Định nghĩa 192
II.Đếm tham chiếu trong Java 192
CHƯƠNG 7
ÁNH XẠ TỪ OMG IDL VÀO JAVA
1.Những tên quy định sẵn 193
2.Những kiểu dữ liệu cơ bản 193
2.1.Boolean 193
2.2.Char và widechar 194
2.3.Octet 194
2.4.Integer 194
2.5.Kiểu chấm động 194
3.Holder classes 194
3.1.Holder class cho những kiểu dữ liệu cơ bản 194
3.2.Holder class cho kiểu do người sử dụng định nghĩa 195
4.Kiểu String 195
5.Kiểu Enum 196
6.Struct 196
7.Union 197
8.Typedef 197
9.Exception type 197
9.1.Exception do người dùng định nghĩa 197
9.2 CORBA System Exception 199
10.Array 199
11.Sequences 200
12.Kiểu any 200
12.1.Các method 200
12.2.Những kiểu IDL được định nghĩa trước 201
12.3.Kiểu do người sử dụng định nghĩa 201
CHƯƠNG 8
MÔ HÌNH ĐỒNG THỜI (Concurency Model)
I.Tổng quan 202
1.Định nghĩa 202
2.Tổng quan về mô hình đồng thời của ORBacus 202
II.Mô hình đồng thời đơn luồng 202
1.Treo (blocking) client và server 202
2.Tái kích hoạt (reactive) server và client 203
III.Mô hình đồng thời đa luồng 205
1.Client và server được phân luồng 205
2.Thread-per-Client Server 206
3. Thread-per-Request Server 207
4.Thread Pool Server 208
IV.So sánh công suất 209
1.Ứng dụng mẫu 209
2.Các phép gọi theo phương pháp hợp lệ 209
3.Các phép gọi theo phương pháp “nested” 209
V.Chọn mô hình đồng thời 210
CHƯƠNG 9
SỬ DỤNG CÁC CHÍNH SÁCH
I.Tổng quan 212
II.Các chính sách được hỗ trợ 212
CHƯƠNG 10
CÁC SERVICE CƠ BẢN CỦA ORBacus
I.Đặt cấu hình và sử dụng các service cơ bản 214
1.Khởi tạo service 214
2.Kết nối tới service 214
3.Tên đối tượng của các service cơ bản 215
II.Naming service 216
III.Property service 216
1.Option dòng lệnh 216
2.Tạo thuộc tính 216
3.Truy vấn thuộc tính 217
4.Xóa thuộc tính 218
5.Ví dụ 218
IV.Event service 221
1.Kênh sự kiện 221
2.Event Suppliers và Consumers 221
3.Ví dụ đơn giản 222
CHƯƠNG 11
NAMING SERVICE
I.Tổng quan về Naming Service 226
II.ORBacus Naming Service 228
1.Sự cần thiết sử dụng ORBacus Naming Service 228
2.Sử dụng ORBacus Names 229
3.Sử dụng ORBacus Names step by step 229
4.Tạo những ràng buộc mới 230
5.Thực hiện công việc với ORBacus Names 230
5.1.Startup Option 231
5.2.Truy tìm Naming Service 231
5.3.Các Menu 232
5.3.1.File menu 232
5.3.2.Edit menu 233
5.3.3.View menu 234
5.3.4.Tool menu 234
5.3.5.Toolbar 235
5.3.6.Popup menu 235
5.4.ORBacus Extended Naming Service 236
5.4.1.Bổ sung date và time 236
5.4.2.Tự động update 237
CHƯƠNG 12
EXCEPTION VÀ THÔNG ĐIỆP BÁO LỖI
I.CORBA System Exception 238
II.Lỗi 241
CHƯƠNG 13
SECURE SOCKET LAYER-SSL 243
CHƯƠNG 14
GIỚI THIỆU iSaSiLk
I.SSL client (SSL socket) 249
II.SSL server 250
III.Các yêu cầu cơ bản 253
1.Sự điều khiển nhà cung ứng (provider handling) 253
2.Xác nhận, khóa và thông số 261
IV.SSL Socket và SSL context object 264
1.SSL Context class 265
1.1.SSLClientContext Class 266
1.1.1.Random number generator 266
1.1.2.Bộ mã hóa hữu hiệu 267
1.1.3.Các tác vụ “compression” khả thi 268
1.1.4.Session manager 272
1.1.5.Trust Decider 280
1.2.SSLServer Context class 286
2.SSL Socket Class 287
1.Kết nối thông qua proxy 287
2.Lấy xác nhận của peer 287
3.Việc tái thỏa hiệp thông số bảo mật 287
4.SSLServer Socket class 288
PHẦN IV: HIỆN THỰC
I.Mô tả hệ thống
II.Một số yêu cầu khi giải quyết bài toán
III.Mô tả các đối tượng
IV.Tiến trình thực thi của các object
V.Quá trình hiện thực các object
VI.Một số hạn chế
VII.Hướng phát triển trong tương lai
PHẦN V : PHỤ LỤC
PHẦN VI : TÀI LIỆU THAM KHẢO
286 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2796 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Nghiên cứu môi trường phát triển phần mềm theo chuẩn CORBA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
roãng cho user hieän thöïc:
public interface ServerTrustDecider extends TrustDecider {
}
Moät hieän thöïc cuûa ServerTrustDecider ít nhaát phaûi chöùa hieän thöïc isTrustedPeer ñeå xem xeùt tính ñaùng tin caäy cuûa xaùc nhaän ñöôïc gôûi ñi töø client…
Baát kyø öùng duïng naøo cuõng nhaän ra ñöôïc chính saùch server trust decider cuûa rieâng noù…
1.1.5.3. public interface ClientTrustDecider extends TrustDecider:
Caùc kieåu xaùc nhaän maø server yeâu caàu töø client khi noù gôûi thoâng ñieäp yeâu caàu xaùc nhaän:
rsa_sign: ñònh nghóa RSA certificate goàm khoùa maõ client public RSA.
dss_sign: DSS certificate goàm client public DSA key.
rsa_fixed_dh: RSA certificate goàm caùc thoâng soá Diffie Hellman coá ñònh.
dss_fixed_dh: DSS certificate.
rsa_ephemeral_dh: RSA certificate goàm RSA public key.
dss_ephemeral_dh: DSS certificate goàm DSA public key.
fortezza_dms: fortezza certificate.
ClientTrustDecider interface thöøa keá cuûa isasilk tröôùc tieân ñònh nghóa khoùa maõ coá ñònh taïo cho noù khaû naêng coù theå ñònh danh duy nhaát kieå xaùc nhaän cuï theå maø coù leõ ñöôïc yeâu caàu töø server:
public static final byte rsa_sign = 1;
public static final byte dss_sign = 2;
public static final byte rsa_fixed_dh = 3;
public static final byte dss_fixed_dh = 4;
public static final byte rsa_ephemeral_dh = 5;
public static final byte dss_ephemeral_dh = 6;
public static final byte fortezza_dms = 20;
SSL server coù theå söû duïng nhöõng caùi naøy ñeå ñònh nghóa nhöõng kieåu xaùc nhaän maø noù muoán ñaëc taû trong thoâng ñieäp yeâu caàu xaùc nhaän. Neáu nhö server muoán laáy xaùc nhaän cuûa kieåu rsa_sign, dss_sign, rsa_ephemeral_dh hoaëc dss_ephemeral_dh, noù thieát laäp caùc trò thích hôïp vaø ñöa noù vaøo moät maûng byte:
byte[] types = new byte[4];
types[0] = ClientTrustDecider.rsa_sign;
types[1] = ClientTrustDecider.dss_sign;
types[2] = ClientTrustDecider.rsa_ephemeral_dh;
types[3] = ClientTrustDecider.dss_ephemeral_dh;
Ngoaøi ra, interface naøy coøn hai taùc vuï tröøu töôïng:
/**
* Returns a SSLCertificate handshake message containing the client certificate.
* By implementing this interface someone can use his own procedure
* to access the client certificates.
*
* @param certificateTypes the certificate types the server expects
* @param certificateAuthorities the certification authorities the server accepts
* @param keyExchangeAlgorithm the currently active key exchange
* algorithm (from cipher suite)
* @return a SSLCertificate handshake message containing the client certificate list
(list[0] = client certificate) or null if no appropriate certificate is found.
*/
public abstract SSLCertificate[ ] getCertificate(byte[ ] certificateTypes,
Principal[ ] certificateAuthorities,
String keyExchangeAlgorithm);
/**
* Returns the private key belonging to the certificate returned by
* getCertificate().
*
* @return the private key
*/
public abstract PrivateKey getPrivateKey();
}
Toaøn boä getCertificate(..) method troâng coù veû nhö sau:
/**
* Returns a SSLCertificate handshake message containing the
* client certificate.
*
* @param certificateTypes the certificate types the server requests
* @param certificateAuthorities the certification authorities the
* server accepts
* @param keyExchangeAlgorithm the currently active key exchange
* algorithm (from cipher suite)
* @return the SSLCertificate message containing the
* client certificate list
*/
public SSLCertificate getCertificate(byte[] certificateTypes,
Principal[] certificateAuthorities,
String keyExchangeAlgorithm) {
//print actual key exchange algorithm
debug("Key exchange algorithm: "+keyExchangeAlgorithm);
//print certification authorities accepted by the server
debug("Server accepts the following CAs:");
for (int i=0; i<certificateAuthorities.length; i++)
debug(certificateAuthorities[i].toString());
//print certificate types requested by the server
debug("Server requests the following certificate types:");
for (int i=0; i<certificateTypes.length; i++) {
switch (certificateTypes[i]) {
case ClientTrustDecider.rsa_sign:
debug("rsa_sign");
break;
case ClientTrustDecider.dss_sign:
debug("dss_sign");
break;
case ClientTrustDecider.rsa_fixed_dh:
debug("rsa_fixed_dh");
break;
case ClientTrustDecider.dss_fixed_dh:
debug("dss_fixed_dh");
break;
case ClientTrustDecider.rsa_ephemeral_dh:
debug("rsa_ephemeral_dh");
break;
case ClientTrustDecider.dss_ephemeral_dh:
debug("dss_ephemeral_dh");
break;
case ClientTrustDecider.fortezza_dms:
debug("fortezza_dms");
break;
}
}
//select proper certificate and private key according the active
//cipher suite´s key exchange algorithm
if (keyExchangeAlgorithm.startsWith("RSA") ||
keyExchangeAlgorithm.startsWith("DHE_RSA")) {
debug("return RSA certificate...");
private_key = rsa_private_key;
return new SSLCertificate(rsa_cert);
}
else if (keyExchangeAlgorithm.startsWith("DHE_DSS")) {
debug("return DSA certificate...");
private_key = dsa_private_key;
return new SSLCertificate(dsa_cert);
}
else if (keyExchangeAlgorithm.startsWith("DH_")) {
debug("return DH certificate...");
private_key = dh_private_key;
return new SSLCertificate(dh_cert);
}
return null;
}
Sau khi thöïc hieän taát caû caùc coâng vieäc laáy xaùc nhaän vaø khoùa maõ vaø traû keát quaû veà, neân nhôù nhieäm vuï cuûa client trust decider: kieån tra söï ñaùng tin caäy cuûa xaùc nhaän töø server.
isTrustedPeer(..) method cuûa TrustDecider interface cô baûn:
//returns true if the certificate derived from the server is trusted
//this demo version shows the received certificate chain and checks
//its consistency
public boolean isTrustedPeer(SSLCertificate certificate) {
// get the X.509 certificate chain from the SSLCertificate message
X509Certificate[] certChain = certificate.getCertificateChain();
debug("Server certificate chain");
for (int i=0; i<certList.length; i++)
debug(certChain[i].getSubjectDN().toString());
return verifyCertificateChain(certChain);
}
…..
1.1.5.4. SSLServer phaûi laøm gì:
Server trust decider chæ laøm moät vieäc duy nhaát laø lieân keát decider vaø ngöõ caûnh cuûa server. Thaät caàn thieát cho SSLServer thöïc thi theâm moät soá nhieäm vuï veà vieäc ñaët caáu hình , phuï thuoäc vaøo ñaëc tính cuûa söï hieän thöïc server trust decider ñaõ caøi ñaët.
1.1.5.5. SSLClient phaûi laøm gì?
Töông töï nhö: lieân keát trust decider vaøo trong ngöõ caûnh cuûa client.
1.1.6. Toùm löôïc SSLClientContext:
SSLClientContext thöøa keá SSLContext class tröøu töôïng.
Moät ñoái töôïng SSLClientContext coù theå ñöôïc taïo ra hoaëc baèng constructor maëc ñònh hoaëc baèng ñònh nghóa “random number generator”.
Ñeå kích hoaït caùc thuoäc tính baûo maät cuûa moät ñoái töôïng SSLClientContext cuï theå, noù phaûi ñöôïc ñöa lieân keát vaøo ñoái töôïng SSLSocket:
SSLSocket socket = null;
SSLClientContext context = new SSLClientContext();
...
supply the context object with user implemented properties (optional)
...
socket = new SSLSocket(serverName, serverPort, context);
SSLServerContext class:
SSLServerContext class thöøa keá SSLClientContext class veà moät soá thuoäc tính chæ ñöôïc yeâu caàu bôûi server socket cho cieäc keát noái.
SSL server context phaûi coù theâm hai nhieäm vuï:
SSLServerContext class ohaûi cung caáp nhöõng taùc vuï thích hôïp ñeå deã daøng set/ get caùc thöïc theå töông öùng töø ñoái töôïng server context.
Maët khaùc SSLContext class phaûi coù taùc vuï cho pheùp server ñaëc taû kieåu xaùc nhaän, quyeàn xaùc nhaän cho thoâng ñieäp yeâu caàu xaùc nhaän.
…
2/ SSLSocket Class:
Keát noái thoâng qua proxy:
Giaû söû raèng chuùng ta hieän thöïc moät taùc vuï theâm cho vieäc gôûi yeâu caàu “connect-to-server” thoâng qua proxy. Thoâng ñieäp naøy gôûi ñeán proxy maø khoâng caàn “encrypt”.
SSLSocket s = new SSLSocket(proxyName, proxyPort, context);
s.setAutoHandshake(false);
Vì handshake töï ñoäng taét neân baây giôø chuùng ta coù theå môû caùc stream input vaø output döïa treân socket:
reader = new BufferedReader(
new InputStreamReader(s.getInputStream()));
writer = new PrintWriter(s.getOutputStream());
//send ´connect to server´ message to proxy
proxyConnect(serverName, serverPort);
Baây giôø chuùng ta phaûi khôûi ñoäng handshake dialogue baèng tay:
s.startHandshake();
Laáy xaùc nhaän cuûa peer:
Ñeå cung caáp öùng duïng moät söï truy caäp tröïc tieáp tôùi xaùc nhaän ñöôïc gôûi bôûi peer, SSLSocket class ñöôïc trang bò getPeerCertificateChain() method ñeå öùng duïng coù theå laáy chuoãi xaùc nhaän cuûa peer vì moät lyù do naøo ñoù.
Cuõng cuøng caùch ñoù, chuùng ta cuõng coù theå laáy boä maõ hoùa ñang höõu hieäu vaø compression method töø SSLSocket.
3. Vieäc taùi thoûa hieäp thoâng soá baûo maät:
Baát kyø luùc naøo trong söï giao tieáp, server cuõng coù theå laøm töôi laïi setting baûo maät cuûa phaàn hieän thôøi.
Neáu nhö chuùng ta muoán ñònh nghóa caùc setting ngöõ caûnh cuûa servr môùi khoâng nhöõng chuùng ta thoûa hieäp laïi nhöõng thoâng soá maõ hoaù cuûa session hieän thôøi maø coøn nhöõng handshke dialogue khaùc, chuùng ta coù leõ thay ñoåi tröïc tieáp ngöõ caûnh server khi baét ñaàu quaù trình taùi thoûa hieäp:
//define a new cipher suite (or any new context parameters if desired)
CipherSuite[] new_cs = new CipherSuite[1];
new_cs[0] = CipherSuite.SSL_RSA_WITH_RC4_128_MD5;
//set the new cipher suite as enabled cipher suite for the actual
//server context
serverContext.setEnabledCipherSuites(new_cs);
//set the modified server context for the SSLSocket
s.setContext(serverContext);
//start the renegotiation process
s.renegotiate();
4. SSLServer Socket class:
Moät ñoái töôïng SSLServerSocket thöøa keá ñoái töôïng ServerSocket veà caùc ñaëc ñieåm baûo maät thöøa keá cuûa SSL….
HIEÄN THÖÏC
1.MOÂ TAÛ HEÄ THOÁNG :
Ñaây laø moät heä thoáng baùn haøng treân maïng (cuï theå laø daønh cho moät coâng ty baùn maùy tính). Heä thoáng ñöôïc hieän thöïc theo moâ hình Client/Server. ÔÛ phía client moãi moät khaùch haøng seõ ñöôïc cung caáp moät öùng duïng cho pheùp lieät keâ danh muïc caùc loaïi haøng hoùa hieän coù cuûa coâng ty khi keát noái vaøo server cuûa coâng ty, khaùch haøng seõ löïa choïn trong danh muïc naøy caùc loaïi haøng hoùa maø mình caàn. Chöông trình cho pheùp lieät keâ caùc maët haøng theo chuûng loaïi. Khi ñaõ quyeát ñònh mua haøng, khaùch haøng seõ gôûi danh muïc caùc maët haøng maø mình ñaõ choïn keøm theo thoâng tin caù nhaân (Hoï teân, ñòa chæ, maõ soá theû tín duïng, maõ vuøng). Chöông trình coù khaû naêng töï ñoäng hoùa caùc thao taùc naøy vaø choïn traïm mua baùn gaàn nhaát ñeå gôûi haøng tôùi cho khaùch. ÔÛ phía Server, moät loaït caùc ñoái töôïng seõ nhaän yeâu caàu vaø giaûi quyeát yeâu caàu cuûa khaùch haøng. Baét ñaàu baèng vieäc tìm kieám ra traïm baùn haøng gaàn nôi ôû cuûa khaùch haøng nhaát, heä thoáng seõ tieáp tuïc tính toaùn giaù caû caùc maët haøng cuõng nhö thueá vaø cuoái cuøng traû veà hoùa ñôn thanh toaùn cho khaùch haøng.
Vôùi quan ñieåm ñoù, chuùng em ñöa ra moâ hình sau :
CORBA Services: Naming Service, Security Service, Transaction Service.
Client
Store
Tax
Depot
Advertising
Check
Input
POS
Chöông trình client cuûa khaùch haøng seõ giao tieáp vôùi caùc ñoái töôïng Input, caùc ñoái töôïng naøy ñeán löôït mình seõ gôûi yeâu caàu cuûa khaùch haøng ñeán caùc traïm baùn haøng (POS) gaàn nhaát, cuõng nhö yeâu caàu kieåm tra tính hôïp leä cuûa thoâng tin caù nhaân maø khaùch haøng cung caáp. Nhieàu POS seõ do moät Store quaûn lyù, Store naøy seõ tieán haønh tìm ra giaù caû cuûa caùc maët haøng cuõng nhö xuaát löôïng haøng maø khaùch haøng caàn ra khoûi kho cuûa noù vaø traû veà cho POS. POS seõ tieán haønh tính toaùn toång soá tieàn maø khaùch haøng phaûi traû vaø gôûi hoùa ñôn cho khaùch haøng. Vaø ôû caáp cao nhaát cuûa heä thoáng laø Depot. Coù theå noùi ñaây laø trung taâm cuûa heä thoáng, Depot phaûi coù khaû naêng giaûi quyeát tình huoáng phaùt sinh nhö khi löôïng haøng maø khaùch haøng yeâu caàu vöôït quaù löôïng haøng trong kho cuûa moät Store thì Depot phaûi tìm ra moät Store khaùc gaàn nhaát coù ñuû löôïng haøng caàn thieát, hoaëc neáu khoâng coù Store naøo thoûa thì Depot seõ töï xuaát haøng trong kho cuûa mình. Ñoàng thôøi Depot cuõng seõ ghi nhaän tình hình giao dòch vaøo cô sôû döõ lieäu cuûa rieâng mình.
Toùm taét veà caùc ñoái töôïng trong heä thoáng :
Advertising Object : Ñoái töôïng cho user bieát cöûa haøng coù nhöõng maët haøng naøo.
Input laø ñoái töôïng tröïc tieáp nhaän döõ lieäu töø khaùch haøng nhö yeâu caàu mua haøng, thoâng tin khaùch haøng.
POS laø ñoái töôïng thöïc hieän caùc quaù trình tính toaùn, ghi nhôù traïng thaùi cuûa caùc cuoäc mua baùn ñang ñöôïc thöïc hieän, cho pheùp caùc cashier ñaêng nhaäp vaø ñöa ra caùc baùo caùo veà POS hoaëc Store.
Check laø ñoái töôïng coù nhieäm vuï kieåm tra caùc thoâng tin veà khaùch haøng, neáu thoâng tin naøy hôïp leä môùi cho khaùch haøng ñaêng nhaäp heä thoáng (ñaây chæ laø ñoái töôïng mang tính giaû ñònh).
Store laø ñoái töôïng coù nhieäm vuï xöû lyù caùc POS, cho pheùp caùc POS ñaêng nhaäp, theo doõi caùc cuoäc mua baùn vaø ñöa ra caùc report ñeán caùc Depot.
Tax laø ñoái töôïng hoã trôï cho vieäc tính thueá nhö xem xeùt maët haøng naøo phaûi tính thueá vaø thueá laø bao nhieâu.
2.MOÄT SOÁ YEÂU CAÀU KHI GIAÛI QUYEÁT BAØI TOAÙN :
1/Heä thoáng phaûi coù khaû naêng xöû lyù ñoàng thôøi nhieàu yeâu caàu cuûa khaùch haøng.
2/Heä thoáng phaûi coù cô cheá ñoàng boä thích hôïp ñeå xöû lyù döõ lieäu.
3/Heä thoáng phaûi coù khaû naêng baûo maät thoâng tin cuûa khaùch haøng.
4/Heä thoáng phaûi coù khaû naêng quaûn lyù giao dòch.
5/Heä thoáng phaûi coù khaû naêng tìm ra caùc traïm baùn haøng thích hôïp sao cho traïm baùn haøng ñoù phaûi gaàn khaùch haøng nhaát ñeå chi phí chuyeân chôû laø thaáp nhaát.
3.MOÂ TAÛ CAÙC ÑOÁI TÖÔÏNG :
Heä thoáng goàm coù caùc object sau :
Advertise : Duøng ñeå thoâng baùo cho chöông trình client bieát coù bao nhieâu maët haøng vaø giaù caû cuûa töøng maët haøng coù trong Store. Object naøy ñöôïc ñònh nghóa nhö sau :
Noù goàm coù hai phöông thöùc sau :
1/getItemsInfo : ñöôïc ñònh nghóa nhö sau :
getItemsInfo(in string Type, out ItemList itemList)
Phöông thöùc naøy duøng ñeå laáy ra thoâng tin veà caùc Item coù kieåu laø Type vaø traû veà trong moät array vôùi moãi phaàn töû cuûa array laø moät object chöùa caùc thoâng tin veà caùc maët haøng.
2/getTypes : ñöôïc ñònh nghóa nhö sau :
void getTypes(out TypeList typeList)
Phöông thöùc naøy ñöôïc duøng ñeå laáy ra danh saùch caùc loaïi haøng cuûa coâng ty.
Input : Duøng ñeå nhaäp vaø xuaát ra danh saùch caùc maët haøng cuøng vôùi giaù cuûa caùc maët haøng vaø toång soá tieàn maø khaùch phaûi traû (Sau khi ñaõ tính thueá). Object naøy ñöôïc ñònh nghóa nhö sau :
interface inputObject
{
boolean inputInfo(in CustomInfo customInfo,
inout ItemList itemList,
out float Pay
out float Tax,
out float Total,
inout string OrderDate,
inout string DeliveryDate,
out string Status);
};
1/inputInfo : Phöông thöùc naøy duøng ñeå gôûi caùc thoâng tin veà khaùch haøng, caùc thoâng tin veà caùc maët haøng vaø soá löôïng moãi maët haøng maø khaùch haøng caàn mua vaø ñoàng thôøi traû veà giaù cuï theå cuûa töøng maët haøng vôùi soá löôïng vaø toång soá tieàn maø khaùch haøng phaûi traû(bao goàm thueá).
Thoâng tin veà khaùch haøng seõ laø moät struct ñöôïc ñònh nghóa nhö sau :
struct CustomInfo {
string cardID;
string customerName;
string customerAddress;
string areaCode;
};
vôùi caùc thaønh phaàn cuûa struct :
cardID : Maõ soá theû tín duïng (hoaëc taøi khoaûn cuûa khaùch haøng).
customerName : Hoï teân khaùch haøng.
customerAddress : Ñòa chæ lieân laic.
areaCode : Maõ soá vuøng cuûa khaùch haøng.
Thoâng tin veà caùc maët haøng seõ laø moät sequence (ñöôïc aùnh xaï thaønh array trong Java) nhö sau :
typedef sequence ItemList;
array naøy seõ chöùa caùc object – moät object öùng vôùi moät maët haøng ñöôïc ñònh nghóa trong moät struct nhö sau :
struct Item {
string iType;
string iName;
long iQuantity;
float iPrice;
float iTax;
float rateTaxable;
float rate;
};
goàm coù caùc thoâng tin sau ñaây :
iType : Kieåu cuûa maët haøng.
iName : Teân cuûa maët haøng.
iQuantity : Soá löôïng haøng caàn mua öùng vôùi moät maët haøng.
iPrice : Giaù cuûa töøng maët haøng (chæ coù yù nghóa khi laø keát quaû traû veà).
iTax : Thueá cuûa töøng maët haøng (chæ coù yù nghóa khi laø keát quaû traû veà).
Ngoaøi ra, phöông thöùc naøy coøn traû veà 6 giaù trò laø :
- Pay (kieåu float) : Cho bieát toång soá tieàn mua haøng cuûa khaùch (chöa tính thueá).
- Tax (kieåu float) : Cho bieát toång soá thueá trong laàn giao dòch cuûa khaùch haøng.
- Total (kieåu float) : Cho bieát toång soá tieàn mua haøng (coù tính thueá) maø khaùch haøng phaûi traû.
- OrderDate (kieåu string) : Cho bieát thôøi gian maø yeâu caàu cuûa khaùch haøng ñöôïc giaûi quyeát.
- DeliveryDate (kieåu string) : Cho bieát thôøi gian giao haøng, tham soá naøy chæ nhaèm muïc ñích xuaát thoâng baùo ra cho ngöôøi söû duïng. Neáu caùc store trong khu vöïc khoâng coù ñuû soá löôïng haøng caàn thieát thì phaûi chôø haøng töø Depot, do ñoù thôøi gian giao haøng seõ bò chaäm treã. Phöông thöùc naøy ñöôïc goïi töø chöông trình cuûa khaùch haøng khi baét ñaàu gôûi yeâu caàu cuûa khaùch haøng.
- Status : Cho bieát theâm moät soá thoâng tin ngoaïi leä khi löôïng haøng yeâu caàu quaù lôùn khoâng giaûi quyeát ñöôïc hoaëc coù moät soá truïc traëc baát thöôøng khaùc.
POS : Nhaän caùc thoâng tin töø Input vaø tieán haønh gôûi yeâu caàu truy xuaát giaù cuï theå cuûa töøng maët haøng ñeán Object Store, beân caïnh ñoù noù cuõng laøm nhieäm vuï in ra caùc thoâng tin veà tình hình baùn haøng (toång thu cuûa moät POS). Object naøy ñöôïc ñònh nghóa nhö sau :
interface POSObject {
void init();
boolean login(in CustomInfo customInfo,
inout ItemList itemList,
out float Pay,
out float Tax,
out float Total,
inout string OrderDate,
inout string DeliveryDate);
void printPosSale(out POSid posid,
out float POSTotalSale,
out float POSTotalTax,
out long Iid,
out long Iquant);
};
1/init : duøng ñeå thieát laäp cho giaù trò bieán cuïc boä khi khôûi ñoäng.
2/login : nhaän vaøo ñoái soá töông töï nhö method inputInfo cuûa Input Object laø: thoâng tin veà khaùch haøng, moät sequence veà thoâng tin caùc maët haøng. Phöông thöùc naøy cuõng coù caùc trò traû veà laø Pay, Tax, Total, Order Date vaø DeliveryDate vôùi kieåu vaø vai troø töông töï nhö vai troø cuûa caùc trò naøy trong phöông thöùc inputInfo cuûa object Input. Phöông thöùc naøy seõ thöïc hieän vieäc tính toaùn toång soá tieàn maø khaùch haøng phaûi traû (bao goàm thueá) vaø traû veà true neáu thaønh coâng, vaø ngöôïc laïi. Noù ñöôïc goïi töø ñoái töôïng Input ñeå yeâu caàu tìm kieám caùc maët haøng maø khaùch haøng caàn vaø tính toaùn toång soá tieàn maø khaùch haøng phaûi traû.
3/printPOSSale : traû veà caùc giaù trò cho bieát tình hình thu nhaäp cuûa caùc POS bao goàm :
POSId : ñònh danh cuûa moät POS.
POSTotalSale : toång soá tieàn maø moät POS ñaõ thu ñöôïc.
POSTotalTax : Toång soá thueá maø POS ñaõ thu ñöôïc khi baùn caùc maët haøng.
Check : Ñoái töôïng naøy ñöôïc duøng ñeå kieåm tra tính hôïp leä cuûa theû tín duïng cuûa khaùch haøng (Nhöng khoâng ñöôïc hieän thöïc moät caùch chi tieát vì phaàn hieän thöïc cuûa ñoái töôïng naøy khoâng thuoäc phaïm vi cuûa chöông trình naøy). Ñoái töôïng naøy coù moät phöông thöùc laø checkCustomInfo. Phöông thöùc naøy nhaän vaøo caùc ñoái soá laø struct CustomInfo(caáu truùc cuûa struct naøy ñaõ ñöôïc ñeà caäp ôû phaàn treân). Neáu ñònh danh cuûa khaùch haøng laø hôïp leä thì phöông thöùc naøy seõ traû veà trò true vaø ngöôïc laïi. Phöông thöùc naøy ñöôïc goïi töø ñoái töôïng Input khi baét ñaàu quaù trình gôûi yeâu caàu cuûa khaùch haøng.
Store : Ñoái töôïng naøy ñöôïc duøng ñeå thöïc hieän caùc taùc vuï nhö xuaát haøng ra khoûi kho, tìm giaù caû caùc maët haøng. Ñoái töôïng naøy goàm coù caùc bieán thaønh vieân vaø phöông thöùc sau :
1/struct StoreTotals: ñöôïc ñònh nghóa nhö sau:
struct StoreTotals {
float StoreTotal;
float StoreTaxTotal;
};
Caáu truùc naøy löu laïi toång soá tieàn baùn haøng (StoreTotal) vaø toång soá thueá tính (StoreTaxTotal) treân caùc maët haøng trong toaøn boä caùc giao dòch maø Store ñaõ thöïc hieän.
2/Thuoäc tính chæ ñoïc StoreId cho bieát ñònh danh cuûa moät Store.
3/Thuoäc tính chæ ñoïc Totals vôùi kieåu ñöôïc ñònh nghóa laø struct StoreTotals cho bieát tình hình giao dòch cuûa Store.
4/Phöông thöùc POSRegister ñöôïc ñònh nghóa nhö sau :
boolean POSRegister(in POS::POSid PID)
Phöông thöùc naøy duøng ñeå ñaêng kyù moät POS vôùi moät Store, tham soá cung caáp cho Store laø ñònh danh PID cuûa moät POS. Khi moät POS ñaõ ñaêng kyù, ñònh danh cuûa noù seõ ñöôïc theâm vaøo danh saùch caùc POS nhaän haøng cuûa Store. Noù ñöôïc goïi töø moät ñoái töôïng POS khi ñoái töôïng naøy xuaát hieän treân maïng.
5/Phöông thöùc UpdateStoreTotals ñöôïc ñònh nghóa nhö sau :
void UpdateStoreTotals(in POS::POSid Id,
in float Price,
in float Taxes);
phöông thöùc naøy duøng ñeå caäp nhaät laïi thoâng tin veà giao dòch cuûa POS ñaõ thöïc hieän. Moãi khi moät POS thöïc hieän moät giao dòch, thoâng tin veà noù seõ ñöôïc report cho Store vaø löu vaøo CSDL cuûa Store, Store cuõng seõ tieán haønh tính toång thu nhaäp cuûa noù döïa vaøo thu nhaäp cuûa töøng POS. Noù ñöôïc goïi töø moät ñoái töôïng POS ñeå caäp nhaät laïi thoâng tin veà toång thu cuûa töøng POS cuõng nhö cuûa Store quaûn lyù POS ñoù.
6/Phöông thöùc FindPrice ñöôïc ñònh nghóa nhö sau :
boolean FindPrice(inout POS::ItemList itemList,
in long POSid,
out string OrderDate,
out string DeliveryDate);
Phöông thöùc naøy seõ nhaän vaøo moät danh saùch caùc maët haøng trong ñoái soá itemList töø POS coù ñònh danh POSid ñeå tieán haønh tìm ra giaù caû caùc maët haøng ñeå cho Object POS tieán haønh tính toaùn. Ngoaøi ra, phöông thöùc naøy coøn nhaän hai tham soá khaùc laø OrderDate vaø DeliveryDate vôùi vai troø töông töï nhö ñaõ noùi ôû phaàn treân(cho bieát thôøi gian ñaët haøng vaø thôøi gian giao haøng). Noù ñöôïc goïi töø moät ñoái töôïng POS trong quaù trình tính toaùn toång soá tieàn maø khaùch haøng phaûi traû.
7/Phöông thöùc FindEnoughItems ñöôïc ñònh nghóa nhö sau :
boolean FindEnoughItems(inout POS::ItemList itemList,
in long StoreId,
in string OrderDate);
Phöông thöùc naøy duøng ñeå kieåm tra löôïng haøng coøn trong moät Store coù ñaùp öùng ñuû nhu caàu ñeå chuyeån cho moät Store khaùc hay khoâng(phöông thöùc naøy ñöôïc duøng khi moät Store khoâng coù ñuû löôïng haøng maø khaùch yeâu caàu, khi ñoù noù seõ chuyeån yeâu caàu cho Depot vaø Depot trong quaù trình tìm moät Store thích hôïp seõ duøng phöông thöùc naøy ñeå kieåm tra caùc Store khaùc coù ñuû löôïng haøng caàn thieát hay khoâng). Noù ñöôïc goïi töø moät ñoái töôïng Depot trong quaù trình tìm kieám moät Store coù ñuû löôïng haøng caàn thieát khi Store bò thieáu haøng.
8/Phöông thöùc UpdateTransactionDatabase ñöôïc ñònh nghóa hình thöùc nhö sau :
void UpdateTransactionDatabase(in long PID,
in ItemList _itemListHolder,
in string _orderDate,
in string _deliveryDate)
Phöông thöùc naøy coù nhieäm vuï caäp nhaät cô sôû döõ lieäu Store khi thöïc hieän xong moät giao dòch, noù nhaän caùc ñoái soá nhö sau:
PID : Ñònh danh cuûa POS vöøa thöïc hieän giao dòch.
_itemListHolder : Danh saùch caùc maët haøng vöøa ñöôïc baùn.
_orderDate : Thôøi gian maø yeâu caàu cuûa khaùch haøng ñöôïc gôûi ñeán.
_deliveryDate : Thôøi gian ñaùp öùng yeâu caàu cuûa khaùch haøng.
Phöông thöùc chæ ñöôïc goïi beân trong ñoái töôïng Store neân khoâng ñöôïc khai baùo trong file IDL. Noù ñöôïc goïi töø phöông thöùc FindPrice.
9/Phöông thöùc Export ñöôïc ñònh nghóa hình thöùc nhö sau :
void Export(in ItemList _itemListHolder,
in long SID,
in string _orderDate)
Phöông thöùc naøy duøng ñeå ghi nhaän löôïng haøng xuaát ra khoûi kho cho moät Store naøo ñoù, noù nhaän caùc ñoái soá nhö sau :
_itemListHolder : Danh saùch caùc maët haøng ñöôïc xuaát ra khoûi kho.
SID : Ñònh danh cuûa Store ñöôïc nhaän haøng.
_orderDate :Thôøi gian xuaát haøng.
Phöông thöùc naøy ñöôïc goïi töø phöông thöùc FindEnoughItems trong Store.
Tax : Ñoái töôïng naøy seõ cho bieát tæ leä thueá töông öùng cuûa caùc maët haøng vaø ñöôïc ñònh nghóa nhö sau :
interface Tax
{
void calculateTax(inout POS::ItemList itemList);
};
Ñoái töôïng naøy chæ coù duy nhaát moät phöông thöùc laø calculateTax. Phöông thöùc naøy seõ nhaän vaøo ñoái soá laø moät danh saùch caùc maët haøng vaø traû veà tæ leä thueá thích hôïp cho töøng maët haøng trong tröôøng hôïp rate. Noù ñöôïc goïi töø moät ñoái töôïng POS trong quaù trình tính thueá cuûa caùc maët haøng.
Depot : Ñaây laø ñoái töôïng trung taâm coù nhieäm vuï ghi nhaän giao dòch cuûa töøng Store, noù cuõng coù cô sôû döõ lieäu cuûa rieâng mình ñeå caäp nhaät toång thu nhaäp cuûa heä thoáng döïa treân thu nhaäp cuûa töøng Store. Object naøy ñöôïc ñònh nghóa nhö sau :
interface Depot {
boolean findAnotherStore (in long StoreID,
in long AreaCode,
inout POS::ItemList itemList,
out string ImportFrom,
in string OrderDate);
void UpdateDepotTotals ( in long StoreId,
in float Totals,
in float Taxes,
in string TDate);
};
Object naøy coù caùc phöông thöùc sau :
1/find AnotherStore : Phöông thöùc naøy duøng ñeå tìm ra Store thích hôïp khi Store maø khaùch haøng yeâu caàu khoâng coù ñuû löôïng haøng caàn thieát. Phöông thöùc naøy nhaän caùc ñoái soá laø:
StoreID : Ñònh danh cuûa Store yeâu caàu.
Area Code : maõ soá vuøng cuûa Store yeâu caàu.
ItemList : danh saùch cuûa caùc maët haøng coøn thieáu.
ImportFrom: cho bieát löôïng haøng boå sung seõ töø Store naøo hoaëc töø Depot (Ñaây laø trò traû veà).
OrderDate: Thôøi gian yeâu caàu.
Neáu tìm ñöôïc löôïng haøng caàn thieát töø moät Store khaùc hoaëc töø Depot, phöông thöùc naøy seõ traû veà trò true, vaø ngöôïc laïi laø false. Noù ñöôïc goïi töø moät ñoái töôïng Store khi Store ñoù khoâng coù ñuû löôïng haøng caàn thieát.
2/UpdateDepotTotals : Phöông thöùc naøy duøng ñeå caäp nhaät toång thu cuûa toaøn boä heä thoáng, noù nhaän caùc ñoái soá laø:
StoreId: Ñònh danh cuûa Store vöøa thöïc hieän giao dòch.
Totals: Toång soá tieàn maø Store ñoù vöøa thu ñöôïc sau giao dòch (coù tính thueá).
Taxes: Toång soá thueá maø Store ñoù vöøa thu ñöôïc sau giao dòch.
TDate: Thôøi gian thöïc hieän giao dòch.
Phöông thöùc naøy ñöôïc goïi töø moät ñoái töôïng Store khi noù thöïc hieän xong giao dòch.
3/TakeReference: Phöông thöùc naøy chæ ñôn giaûn nhaän vaøo moät ñoái soá laø moät String vaø tìm ra tham chieáu töông öùng ñeán object coù teân laø ñoái soá ñoù baèng caùch söû duïng Naming Service. Noù ñöôïc goïi töø phöông thöùc FindAnotherStore ñeå Depot coù theå duøng tham chieáu ñeán caùc object Store ñeå hoûi xem noù coù ñuû löôïng haøng maø moät Store yeâu caàu hay khoâng thoâng qua phöông thöùc FindEnoughItems cuûa Store.
4/Export: Coù vai troø vaø nhaän vaøo caùc ñoái soá töông töï nhö phöông thöùc Export trong object Store. Noù ñöôïc goïi töø phöông thöùc FindEnoughItems khi Object Depot khoâng tìm ra ñöôïc Store naøo coù ñuû löôïng haøng ñöôïc yeâu caàu.
5/FindEnoughItems: Töông töï nhö phöông thöùc FindEnoughItems cuûa object Store. Noù ñöôïc goïi töø phöông thöùc FindAnotherStore khi object Depot khoâng tìm ra ñöôïc Store naøo coù ñuû löôïng haøng ñöôïc yeâu caàu.
Ngoaøi ra moãi ñoái töôïng ñeàu coù phöông thöùc khôûi taïo cuûa mình ñeå khôûi taïo caùc trò cho caùc bieán vaø tìm tham chieáu thích hôïp ñeán ñoái töôïng maø noù caàn goïi phöông thöùc. Cuï theå nhö sau:
Chöông trình Client seõ tìm tham chieáu ñeán ñoái töôïng Input vaø ñoái töôïng Advertise.
Ñoái töôïng Input seõ tìm tham chieáu ñeán ñoái töôïng Check vaø ñoái töôïng POS.
Ñoái töôïng POS seõ tìm tham chieáu ñeán ñoái töôïng Store vaø ñoái töôïng Tax.
Ñoái töôïng Store seõ tìm tham chieáu ñeán ñoái töôïng Depot.
4.TIEÁN TRÌNH THÖÏC THI CUÛA CAÙC OBJECT:
Hoaït ñoäng cuûa heä thoáng nhö sau:
Chöông trình client seõ goïi ñoái töôïng Advertise ñeå laáy danh saùch caùc maët haøng maø coâng ty coù baùn. Khi ngöôøi söû duïng choïn danh saùch caùc maët haøng caàn mua, chöông trình client seõ ghi nhaän danh saùch naøy vaøo moät sequence ItemList (ñöôïc aùnh xaï thaønh ñoái töôïng coù kieåu laø ItemListHolder) cuøng vôùi caùc thoâng tin khaùc nhö soá löôïng cuï theå cuûa töøng maët haøng, chuûng loaïi vaø caùc thoâng tin veà khaùch haøng trong ñoái töôïng coù kieåu laø CustomInfo. Caùc ñoái töôïng naøy seõ ñöôïc gôûi cho ñoái töôïng Input thoâng qua phöông thöùc inputInfo. Phöông thöùc naøy seõ goïi phöông thöùc CheckCustomInfo cuûa ñoái töôïng Check ñeå kieåm tra tính hôïp leä cuûa khaùch haøng, neáu thoâng tin veà khaùch haøng laø khoâng hôïp leä thì trò traû veà laø false (Vieäc kieåm tra chæ giaû thuyeát coù moät danh saùch khaùch haøng cuøng vôùi maõ soá theû tín duïng cuûa hoï, trong thöïc teá ñieàu naøy caàn coù moät heä thoáng kieåm tra phöùc taïp hôn lieân keát vôùi heä thoáng ngaân haøng) vaø ñoàng thôøi bieán Status cuõng mang giaù trò laø “Invalid Customer Info” ñeå chöông trình client xuaát ra cho khaùch haøng.
Neáu trò traû veà töø phöông thöùc checkCustomInfo laø true nghóa laø thoâng tin khaùch haøng laø hôïp leä thì ñoái töôïng Input seõ tieáp tuïc gôûi thoâng tin khaùch haøng vaø danh saùch caùc maët haøng ñeán ñoái töôïng POS. Ñoái töôïng POS seõ tìm ra ñoái töôïng Store coù vò trí gaàn vôùi nôi ñaët haøng nhaát vaø tieán haønh vieäc tìm giaù caùc maët haøng thoâng qua vieäc gôûi danh saùch caùc maët haøng cho Store nhôø phöông thöùc FindPrice cuûa ñoái töôïng naøy. Neáu ñoái töôïng Store tìm thaáy ñuû soá haøng maø POS yeâu caàu, noù seõ tìm giaù cuï theå cuûa caùc maët haøng, neáu soá löôïng haøng lôùn hôn hôn moät soá quy ñònh naøo ñoù (ví duï trong chöông trình laø 100) thì noù seõ duøng giaù baùn sæ thay vì giaù baùn leû vaø gaùn trò naøy cho tröôøng iPrice trong ñoái töôïng töông öùng vôùi maët haøng ñoù, tieán haønh goïi phöông thöùc Export ñeå laøm thuû tuïc xuaát kho (Caäp nhaät laïi soá löôïng haøng trong cô sôû döõ lieäu) vaø caäp nhaät laïi giao dòch vôùi POS baèng caùch goïi phöông thöùc UpdateTransactionDatabase vaø traû veà danh saùch ñaõ caäp nhaät cho ñoái töôïng POS cuøng vôùi trò true.
Neáu khoâng tìm thaáy ñuû löôïng haøng caàn thieát trong cô sôû döõ lieäu cuûa mình, Store seõ goïi phöông thöùc FindAnotherStore cuûa ñoái töôïng Depot vaø gôûi soá ID vaø maõ vuøng cuûa mình cho phöông thöùc naøy. Ñoái töôïng Depot seõ duøng phöông thöùc FindAnotherStore ñeå tìm trong cô sôõ döõ lieäu veà caùc Store (Cô sôû döõ lieäu naøy chöùa caùc ñònh danh, teân, maõ vuøng cuûa töøng Store vaø ñònh danh cuûa Store gaàn noù nhaát), khi tìm ra teân cuûa Store gaàn vôùi Store yeâu caàu nhaát, Depot seõ goïi phöông thöùc TakeReference ñeå laáy tham chieáu ñeán ñoái töôïng Store naøy vaø hoûi Store naøy coù ñuû soá löôïng haøng maø Store yeâu caàu thieáu hay khoâng qua phöông thöùc FindEnoughItems, neáu ñuû thì Store naøy seõ töï goïi thuû tuïc Export ñeå tieán haønh thuû tuïc xuaát kho vaø caäp nhaät laïi cô sôû döõ lieäu cuûa mình laø coù thöïc hieän xuaát kho cho Store ban ñaàu, ñoàng thôøi traû veà trò true. Neáu khoâng thì traû veà trò false, khi ñoù Depot seõ tieán haønh tìm taát caû Store coù maõ vuøng truøng vôùi maõ vuøng cuûa Store ban ñaàu vaø tieán haøng quaù trình hoûi töông töï. Neáu cuoái cuøng vaãn khoâng tìm ñöôïc Store naøo thích hôïp thì Depto seõ töï goïi phöông thöùc FindEnoughItems cuûa mình ñeå xem soá löôïng haøng trong kho cuûa Depot coù ñuû hay khoâng, neáu ñuû thì goïi phöông thöùc Export cuûa chính noù ñeå xuaát kho vaø traû veà trò true, neáu khoâng thì noù seõ traû veà trò false.
Khi Store goïi phöông thöùc FindAnotherStore cuûa Depot, neáu trò traû veà laø true thì noù ghi nhaän laïi soá löôïng haøng seõ ñöôïc chuyeån töø Store khaùc ñeán vaøo cô sôõ döõ lieäu vaø vaãn traû veà trò true cho POS. Tuy nhieân neáu coù moät soá löôïng haøng ñöôïc chuyeån töø Store khaùc ñeán hoaëc töø Depot thì thôøi gian giao haøng seõ ñöôïc trì hoaõn laïi vaø ñieàu naøy ñöôïc ghi nhaän trong bieán DeliveryDate.
Neáu POS nhaän ñöôïc trò false khi goïi phöông thöùc FindPrice cuûa Store thì noù seõ traû veà trò false töø phöông thöùc login vaø khi ñoù ñoái töôïng Input bieát raèng khoâng theå ñaùp öùng yeâu caàu cuûa khaùch haøng, noù seõ traû veà moät chuoãi thoâng baùo thích hôïp cho chöông trình.
Neáu POS nhaän ñöôïc trò true khi goïi phöông thöùc FindPrice cuûa Store thì noù seõ tieáp tuïc goïi phöông thöùc CalculateTax cuûa ñoái töôïng Tax ñeå tìm ra tæ leä thueá thích hôïp cho töøng maët haøng vaø sau ñoù noù seõ tieán haønh tính toång soá tieàn maø khaùch haøng phaûi traû, ñoàng thôøi ghi nhaän giao dòch vaø goïi phöông thöùc UpdateStoreTotals ñeå ñoàng boä cô sôû döõ lieäu cuûa Store. Cuoái cuøng noù traû veà giaù trò laø true.
Neáu ñoái töôïng Input nhaän ñöôïc trò true khi goïi phöông thöùc login cuûa POS thì giao dòch thaønh coâng vaø noù seõ traû veà toång soá tieàn vaø toång soá thueá maø khaùch haøng phaûi traû nhaän ñöôïc töø ñoái töôïng POS cho chöông trình client ñeå xuaát ra cho ngöôøi söû duïng.
5.QUAÙ TRÌNH HIEÄN THÖÏC CAÙC OBJECT:
Trong quaù trình hieän thöïc caùc ñoái töôïng cuûa heä thoáng, ñeå ñaùp öùng cho nhu caàu nhieàu user cuøng truy caäp moät ñoái töôïng, chuùng em ñaõ duøng moâ hình ñoàng thôøi Thread-per-Client Server ñöôïc hoã trôï bôûi ORBacus cho caùc ñoái töôïng, vì moâ hình naøy cho pheùp nhieàu user keát noái vaøo cuøng moät ñoái töôïng vaø gôûi yeâu caàu ñoàng thôøi, ñoái vôùi moãi user, ñoái töôïng Server söû duïng moâ hình naøy seõ sinh ra moät thread ñeå phuïc vuï cho yeâu caàu cuûa user ñoù, tuy nhieân vieäc phuïc vuï caùc yeâu caàu cuûa moãi user laø tuaàn töï.
Cô sôû döõ lieäu cuûa heä thoáng ñöôïc toå chöùc vaø quaûn lyù nhôø Access. Caùc ñoái töôïng trong heä thoáng duøng JDBC ñeå truy xuaát vaø caäp nhaät cô sôû döõ lieäu. Nhôø caàu noái JDBC-ODBC Bridge ñöôïc hoã trôï trong thö vieän JDBC.ODBC cuûa Sun ñöôïc tích hôïp trong JDK 1.1.6.
Vieäc ñoàng boä hoùa quaù trình truy xuaát cô sôû döõ lieäu ñöôïc thöïc hieän nhôø cô cheá synchronized cuûa Java ñeå thöïc hieän vieäc ñoàng boä hoùa giöõa caùc thread.
Giao dieän cuûa chöông trình client ñöôïc phaùt trieån nhôø vaøo thö vieän JFC (Swing) cuûa Sun.
6.MOÄT SOÁ HAÏN CHEÁ:
Tuy ñaõ coá gaéng raát nhieàu, nhöng heä thoáng do chuùng em xaây döïng coøn nhöõng haïn cheá vì nhöõng lyù do khaùch quan vaø chuû quan sau ñaây:
Heä thoáng coøn thieáu moät soá coâng cuï quaûn trò.
Chöa xaây döïng trong moâi tröôøng Web.
Chöa phaùt trieån ñöôïc thaønh phaàn quaûn lyù giao dòch vì thieáu coâng cuï hoã trôï.
Do gaëp nhieàu khoù khaên trong vieäc xin baûn quyeàn ñeå söû duïng thaønh phaàn baûo maät (security plugin) ñi keøm vôùi boä thö vieän do ORBacus cung caáp vaø do thieáu taøi lieäu, chuùng em ñaõ khoâng theå ñöa ñöôïc thaønh phaàn baûo maät Security Socket Layer vaøo heä thoáng.
7.HÖÔÙNG PHAÙT TRIEÅN TRONG TÖÔNG LAI:
Heä thoáng coù theå ñöôïc phaùt trieån theâm caùc thaønh phaàn sau ñaây ñeå trôû thaønh moät heä thoáng töông ñoái hoaøn chænh coù theå söû duïng trong thöïc teá:
Xaây döïng treân moâi tröôøng Web.
Xaây döïng caùc coâng cuï quaûn trò thích hôïp cho pheùp ngöôøi quaûn trò heä thoáng kieåm soaùt taøi nguyeân vaø döõ lieäu cuûa heä thoáng moät caùch hôïp lyù hôn. Cho pheùp ngöôøi quaûn trò coù theå deã daøng boå sung vaø huûy boû caùc ñoái töôïng trong heä thoáng.
Giaûi quyeát caùc vaán ñeà veà giao dòch: caân baèng taûi, xöû lyù giao dòch.
Tìm caùch ñöa dòch vuï baûo maät vaøo heä thoáng ñeå ñaûm baûo thoâng tin ñöôïc an toaøn.
MUÏC LUÏC
MÔÛ ÑAÀU
PHAÀN I : TÌM HIEÅU VEÀ CORBA
Chöông 1
TOÅNG QUAN VEÀ CORBA
I. CORBA : Khaû naêng töông taùc (interoperability) cuûa caùc object 2
II. OMA: (Object Management Architecture) 2
III. Nhöõng lôïi ích cuûa CORBA 4
IV. OMG : (Object Managenent Group) 4
Chöông 2
TOÅNG QUAN VEÀ KYÕ THUAÄT
I. CORBA vaø OMA 5
II. CORBA object 6
III. OMG IDL 6
1. Xaây döïng object CORBA 6
2. Thöïc hieän vieäc löïa choïn 6
3. Choïn ngoân ngöõ hieän thöïc 6
4. Keát noái tôùi ORB 7
IV. ORB 9
1. Neàn taûng cho khaû naêng töông taùc qua laïi 9
2. Object reference 10
3.IDL vaø ORB 11
4.DII: (Dynamic Invocation Interface) 11
V. Khaû naêng töông taùc treân neàn taûng CORBA 13
1.Truy xuaát moät object töø moät ORB töø xa 13
2.Toå hôïp thaønh phaàn ñoái töôïng ñaõ mua 14
3. Phaân boá client vaø object 16
VI. Kieán truùc quaûn lyù ñoái töôïng: (OMA) 16
VII. CORBA services 19
VIII.CORBA facilities 19
Chöông 3
GIÔÙI THIEÄU VEÀ OMG IDL
I. Söï tuaân theo chuaån CORBA 21
1. CORBA core 21
2. Nhöõng ñieåm tuaân theo CORBA boå sung 22
3. Ñaëc taû moâi tröôøng CORBA 22
Chöông 4
TÌM HIEÅU VEÀ ORB ÔÛ KHÍA CAÏNH CLIENT
I. Toång quan veà ORB vaø khía caïnh Client 24
II. Caáu truùc client vaø IDL stub 26
III. DII: Dynamic Invocation Interface 27
1.Ñònh danh moät object ñích 27
2.Laáy ra interface ñích 28
3.Xaây döïng moät cuoäc goïi 28
4.Request interface 29
5.Goïi DII request: trong tröôøng hôïp ñoàng boä 29
6.Goïi DII request: trong tröôøng hôïp baát ñoàng boä 29
IV. Interface Repository 29
1.Söû duïng IR 30
2.Ñònh danh moät IR 30
3.Caùch laøm vieäc cuûa IR 31
4.Caáu truùc cuûa IR 31
V. ORB Interface 32
1.Khôûi taïo client taïi thôøi ñieåm baét ñaàu 32
2.Chuyeån ñoåi nhöõng OR sang daïng string 33
Chöông 5
TÌM HIEÅU VEÀ ORB ÔÛ KHÍA CAÏNH SERVER
I. Kích hoaït Server vaø goïi object implementation 35
II. Chuaån hoùa khía caïnh server 38
III. Caùc thaønh phaàn khía caïnh server 38
IV. Caáu truùc cuûa OI 40
V. OA (Object Adapter) 41
1.BOA 42
2.OA thö vieän 42
3.Adapter döõ lieäu höôùng ñoái töôïng:(OO Database Adapter) 42
VI. BOA 42
VII. IDL skeleton tónh 44
VIII.DSI 45
Chöông 6
CORBA INTEROPERABILITY (KHAÛ NAÊNG TÖÔNG TAÙC TRONG CORBA)
I. Khaû naêng töông taùc trong CORBA 46
1.Ñoái vôùi ngöôøi söû duïng 46
2.Ñoái vôùi ngöôøi quaûn trò heä thoáng vaø nhöõng khaùch haøng mua ORB 46
3.Ñoái vôùi nhöõng nhaø laäp trình ñoái töôïng 47
II. Söï giao tieáp ORB-ORB 47
1.Vieãn caûnh khoâng ñoàng nhaát 48
III. CORBA domain 48
1.Keát noái coù tính kyõ thuaät vaø keát noái theo cheá ñoä trung gian 49
2.Caàu noái tröïc tieáp vaø caàu noái trung gian 49
3.IORs (nhöõng OR coù khaû naêng töông taùc_lieân keát) 52
4.Keát noái inline vaø möùc request (request level) 53
5.Caùc caàu noái "request_level" daïng "interface_specific" vaø "Generic" 55
IV. Caáu truùc cuûa söï ñaëc taû töông taùc 55
V. GIOP vaø IIOP 57
1.CDR 58
2.Daïng thoâng ñieäp GIOP 58
3.Löu chuyeån GIOP message 60
4.IIOP 60
VI. ESIOPs vaø DCE CIOP 61
1.Vai troø cuûa DCE trong DCE CIOP 61
2.Caáu truùc cuûa ñaëc taû DCE CIOP 61
PHAÀN II : CAÙC DÒCH VUÏ CUÛA CORBA
PHAÀN 1
DÒCH VUÏ LIFECYCLE & RELATIONSHIP 64
1.1. Toång quaùt veà caùc dòch vuï vaø caùc phöông tieän cuûa corba (CORBAServices and CORBAfacilities) 64
1.2. Dòch vuï Lifecycle 66
1.2.1.Caùc ñoái töôïng saûn xuaát (Factory Objects) 66
1.2.2.Di chuyeån, sao cheùp vaø xoùa ñoái töôïng (Move, Copy, Delete) 67
1.2.3.Caùc loaïi giao tieáp vaø ñoái töôïng 67
1.2.4.Vò trí : Caùc ñoái töôïng tìm kieám (Factory Finders) 69
1.3. Dòch vuï Relationship 69
1.3.1.Quan heä vaø vai troø (Relationship vaø Role) 69
1.3.2.Dòch vuï Relationship cô baûn : Role vaø Relationship 71
1.3.3.Möùc thöù hai cuûa dòch vuï Relationship : Sô ñoà caùc ñoái töôïng quan heä (Graphs of Related Objects) 71
1.3.4.Möùc thöù ba 73
1.3.5.Ñoàng nhaát ñoái töôïng (Object Identity) 73
1.3.6.Ñôn theå lifecycle phöùc hôïp (Compound Lifecycle Module) 74
1.4. Role vaø Relationship IDL 75
1.4.1.Ñaëc taû IDL cho caùc ñoái töôïng RoleFactory vaø Role 75
1.4.2.Ñaëc taû IDL cho caùc ñoái töôïng Relationship Factory vaø Relationship 77
1.4.3.Ñaëc taû IDL cho ñoái töôïng Node 78
PHAÀN 2
DÒCH VUÏ PERSISTENT OBJECT & EXTERNALIZATION 80
2.1. Kieán truùc cuûa POS 81
2.1.1.Ñieàu khieån tính vónh cöûu (Controlling Persistent) 83
2.2. Ví duï veÀ POS 83
2.3. Protocol (giao thöùc) 84
2.3.1.Giao thöùc Direct Access (Giao thöùc truy xuaát tröïc tieáp) 84
2.3.2.Giao thöùc ODMG-93 85
2.3.3.Giao thöùc Dynamic Data Object (Giao thöùc döõ lieäu ñoái töôïng ñoäng) 85
2.3.4.Caùc giao thöùc khaùc 85
2.4. Datastore 85
2.5. Dòch vuï Externalization (Dòch vuï löu tröõ môû roäng) 86
2.5.1.Ñònh daïng Stream (Stream Format) 87
2.5.2.Giao tieáp Externalization (Externalization Interface) 87
PHAÀN 3
DÒCH VUÏ NAMING & TRADER 90
3.1. Truy xuaát teân (accessing name) 91
3.2. Ñaïi dieän cho teân 91
3.3. Dòch vuï Trader 92
3.3.1.Truy xuaát dòch vuï Trader 93
3.3.2.Dòch vuï Trader seõ laøm vieäc nhö theá naøo ? 93
PHAÀN 4
DÒCH VUÏ EVENT 95
4.1. Caùc ngöõ caûnh giao tieáp (Communication semantics) 95
4.2. Kieán truùc cuûa dòch vuï Event 97
4.3. Giao tieáp cuûa dòch vuÏ Event 99
4.3.1.Ñaêng kyù söï kieän vôùi keânh söï kieän 102
4.3.2.Keânh söï kieän maãu (Typed Event Channel) 102
PHAÀN 5
DÒCH VUÏ TRANSACTION & CONCURRENCY 103
5.1. Khaùi nieäm giao dòch 103
5.2. Caùc ñaëc ñieåm ñaëc tröng cuûa OTS 104
5.2.1.Hoã trôï moâ hình ña giao dòch (Multiple Transaction Model) 104
5.2.2.Söï phaùt trieån cuûa quaù trình trieån khai 105
5.2.3.Moâ hình töông taùc (Model Interoperability) 105
5.2.4.Töông taùc treân maïng (Network Interoperability) 106
5.2.5.Söï ñieàu khieån vieäc nhaân baûn giao dòch moät caùch meàm deûo 106
5.2.6.Hoã trôï cho giaùm saùt TP (TP Monitor) 107
5.2.7.Hoã trôï cho caùc chuaån TP coù saün 107
5.3. Caùc thaønh phaàn cuûa OTS 108
5.3.1.Ngöõ caûnh giao dòch 109
5.4. Flat transaction (Giao dòch phaúng) 110
5.5. Nested transaction (Giao dòch loàng nhau) 110
5.6. Dòch vuï giao dòch ñoái töôïng (Object transaction service) cuûa OMG 111
5.7. Ví duï veà dòch vuï giao dòch 112
5.8. Dòch vuï ñieàu khieån ñoàng thôøi (Concurrency control service) 115
PHAÀN 6
DÒCH VUÏ PROPERTY & QUERY 117
6.1. Dòch vuï Property 117
6.1.1.Ñaëc taû IDL cuûa dòch vuï ñaëc tính cô baûn (Basic Property Service) 118
6.1.2.Ñònh nghóa vaø söûa ñoåi ñaëc tính 119
6.1.3.Lieät keâ vaø laáy caùc ñaëc tính 119
6.1.4.Xoùa ñaëc tính 120
6.1.5.Xaùc ñònh moät ñaëc tính coù ñöôïc ñònh nghóa hay khoâng 121
6.2. Laáy ra vaø thieát laäp caùc cheá ñoä cho caùc ñaëc tính 121
6.3. Dòch vuï Object query 121
6.3.1.Caùc thaønh phaàn cuûa OQS 121
6.3.2.Ngoân ngöõ truy vaán chuaån 122
6.3.3.Giao tieáp chuaån hoùa 123
6.3.4.Taäp hôïp chuaån hoùa 124
6.3.5.Query Evaluator/Manager (Ñaùnh giaù/Quaûn lyù truy vaán) 124
PHAÀN 7
DÒCH VUÏ SECURITY & LICENSING 126
7.1. Giôùi thieäu veà dòch vuï Security (Baûo maät) 126
7.2. Toång quaùt veà baûo maät 126
7.3. Söï tin caäy trong heä thoáng ñoái töôïng phaân boá 126
7.4. Caùc yeâu caàu baûo maät phaân boá 128
7.4.1.Tính nhaát quaùn (consistency) 128
7.4.2.Tính voâ höôùng (scalability) 129
7.4.3.Yeâu caàu ñieàu chænh 129
7.4.4.Tính khaû thi (Enforcebility) 130
7.4.5.Tính khaû duïng (Usability) 130
7.4.6.Tieâu chuaån ñaùnh giaù (Evaluation Criteria) 131
7.5. Caùc chöùc naêng baûo maät (Security functionality) 131
7.6. Caùc thaønh phaàn cuûa dòch vuï baûo maät 132
7.6.1.Trusted Computing Base (TCB - Cô sôû cuûa söï tin caäy trong tính toaùn) 133
7.7. Dòch vuï License (Dòch vuï caáp giaáy pheùp) 134
CAÙC PHÖÔNG TIEÄN CUÛA CORBA 136
8.1. Toång quaùt veà caùc phöông tieän cuûa CORBA 136
8.2. Caùc phöông tieän CORBA theo chieàu ngang 136
8.2.1. Giao dieän ngöôøi söû duïng (User Inteface) 137
8.2.2.Quaûn trò thoâng tin (Information management) 137
8.2.3.Quaûn trò heä thoáng (System Management) 139
8.2.4.Quaûn trò coâng vieäc (Task Management) 140
8.3. CORBAfacilities RFP 1 140
8.4. CORBAfacilities RFP 2 140
8.5. Caùc phöông tieän corba theo chieàu ngang (Vertical CORBAfacilities) 141
8.6. OMG Architecture board (Baûng kieán truùc cuûa OMG) 141
PHAÀN III: COÂNG CUÏ HIEÄN THÖÏC ORBACUS
CHÖÔNG 1
ORBACUS
I. Ñònh nghóa ORBacus 152
II.Ví duï “Helloworld” 152
1.IDL Code 152
2.Hieän thöïc 153
2.1.Hieän thöïc Server 153
2.2.Hieän thöïc Client 154
2.3.Bieân dòch 156
2.4.Thöïc thi öùng duïng 156
CHÖÔNG 2
GENERATOR ra ORBacus code
I.Toång quan 157
II.Ngöõ phaùp 157
III.Moâ taû 157
IV.Option cho jidl 158
V.Option cho hidl 159
VI.Option cho ridl 159
VII.Option cho irserv 160
VIII.Option cho irfeed 160
IX.Option cho irdel 160
CHÖÔNG 3
KHÔÛI TAÏO ORB VAØ BOA
I.Khôûi taïo ORB 162
1.Khôûi taïo ORB Java cho caùc öùng duïng 162
2.Khôûi taïo ORB Java trong JDK 1.2 162
3.Khôûi taïo ORB Java cho Applet 163
II.Khôûi taïo BOA 163
1.Khôûi taïo BOA trong Java 163
2. Khôûi taïo BOA Java trong JDK 1.2 164
III.Ñaët caáu hình ORB vaø BOA 164
1.Thuoäc tính 164
2.Nhöõng option cuûa doøng leänh 166
3.Loïc nhöõng option cuûa doøng leänh 167
4.Duøng file caáu hình 167
5.Ñònh nghóa nhöõng thuoäc tính trong Java 168
6.Thöù töï (öu tieân) cuûa nhöõng thuoäc tính 169
7.Vieäc söû duïng thuoäc tính ñöôïc caûi tieán 169
IV.Voøng laëp söï kieän server 171
1.ÖÙng duïng client/server 172
2.”Deactive” server 172
V.Applet 172
CHÖÔNG 4
ÑOÁI TÖÔÏNG CORBA
I.Toång quan 174
II.Hieän thöïc servant 175
1.Hieän thöïc Servant duøng thöøa keá 175
2.Hieän thöïc Servant duøng ñaïi dieän (delegation) 176
III.Taïo moät Servant 178
IV.Keát noái tôùi Servant 179
V.Ñoái töôïng saûn xuaát 180
VI.Truy xuaát moät servant töø tham chieáu 182
CHÖÔNG 5
ÑÒNH VÒ CAÙC ÑOÁI TÖÔÏNG
I.Nhaän nhöõng OR 184
II.Thôøi gian soáng cuûa OR 185
1.Hostname 185
2.Port number 185
3.Object key 186
III.OR döôùi daïng string 186
1.Söû duïng file 186
2.Söû duïng URL 187
3.Duøng thoâng soá applet 188
IV.Keát noái ñeán nhöõng ñoái töôïng ñöôïc ñaët teân 188
1.Duøng kyù hieäu iiop:// 188
2.Duøng get_inet_object 189
V.Service khôûi taïo 189
1.Phaân giaûi dòch vuï khi khôûi taïo 190
2.Cung caáp IOR cuûa service khôûi taïo 191
CHÖÔNG 6
ÑEÁM THAM CHIEÁU (REFERENCE COUNTER)
I.Ñònh nghóa 192
II.Ñeám tham chieáu trong Java 192
CHÖÔNG 7
AÙNH XAÏ TÖØ OMG IDL VAØO JAVA
1.Nhöõng teân quy ñònh saün 193
2.Nhöõng kieåu döõ lieäu cô baûn 193
2.1.Boolean 193
2.2.Char vaø widechar 194
2.3.Octet 194
2.4.Integer 194
2.5.Kieåu chaám ñoäng 194
3.Holder classes 194
3.1.Holder class cho nhöõng kieåu döõ lieäu cô baûn 194
3.2.Holder class cho kieåu do ngöôøi söû duïng ñònh nghóa 195
4.Kieåu String 195
5.Kieåu Enum 196
6.Struct 196
7.Union 197
8.Typedef 197
9.Exception type 197
9.1.Exception do ngöôøi duøng ñònh nghóa 197
9.2 CORBA System Exception 199
10.Array 199
11.Sequences 200
12.Kieåu any 200
12.1.Caùc method 200
12.2.Nhöõng kieåu IDL ñöôïc ñònh nghóa tröôùc 201
12.3.Kieåu do ngöôøi söû duïng ñònh nghóa 201
CHÖÔNG 8
MOÂ HÌNH ÑOÀNG THÔØI (Concurency Model)
I.Toång quan 202
1.Ñònh nghóa 202
2.Toång quan veà moâ hình ñoàng thôøi cuûa ORBacus 202
II.Moâ hình ñoàng thôøi ñôn luoàng 202
1.Treo (blocking) client vaø server 202
2.Taùi kích hoaït (reactive) server vaø client 203
III.Moâ hình ñoàng thôøi ña luoàng 205
1.Client vaø server ñöôïc phaân luoàng 205
2.Thread-per-Client Server 206
3. Thread-per-Request Server 207
4.Thread Pool Server 208
IV.So saùnh coâng suaát 209
1.ÖÙng duïng maãu 209
2.Caùc pheùp goïi theo phöông phaùp hôïp leä 209
3.Caùc pheùp goïi theo phöông phaùp “nested” 209
V.Choïn moâ hình ñoàng thôøi 210
CHÖÔNG 9
SÖÛ DUÏNG CAÙC CHÍNH SAÙCH
I.Toång quan 212
II.Caùc chính saùch ñöôïc hoã trôï 212
CHÖÔNG 10
CAÙC SERVICE CÔ BAÛN CUÛA ORBacus
I.Ñaët caáu hình vaø söû duïng caùc service cô baûn 214
1.Khôûi taïo service 214
2.Keát noái tôùi service 214
3.Teân ñoái töôïng cuûa caùc service cô baûn 215
II.Naming service 216
III.Property service 216
1.Option doøng leänh 216
2.Taïo thuoäc tính 216
3.Truy vaán thuoäc tính 217
4.Xoùa thuoäc tính 218
5.Ví duï 218
IV.Event service 221
1.Keânh söï kieän 221
2.Event Suppliers vaø Consumers 221
3.Ví duï ñôn giaûn 222
CHÖÔNG 11
NAMING SERVICE
I.Toång quan veà Naming Service 226
II.ORBacus Naming Service 228
1.Söï caàn thieát söû duïng ORBacus Naming Service 228
2.Söû duïng ORBacus Names 229
3.Söû duïng ORBacus Names step by step 229
4.Taïo nhöõng raøng buoäc môùi 230
5.Thöïc hieän coâng vieäc vôùi ORBacus Names 230
5.1.Startup Option 231
5.2.Truy tìm Naming Service 231
5.3.Caùc Menu 232
5.3.1.File menu 232
5.3.2.Edit menu 233
5.3.3.View menu 234
5.3.4.Tool menu 234
5.3.5.Toolbar 235
5.3.6.Popup menu 235
5.4.ORBacus Extended Naming Service 236
5.4.1.Boå sung date vaø time 236
5.4.2.Töï ñoäng update 237
CHÖÔNG 12
EXCEPTION VAØ THOÂNG ÑIEÄP BAÙO LOÃI
I.CORBA System Exception 238
II.Loãi 241
CHÖÔNG 13
SECURE SOCKET LAYER-SSL 243
CHÖÔNG 14
GIÔÙI THIEÄU iSaSiLk
I.SSL client (SSL socket) 249
II.SSL server 250
III.Caùc yeâu caàu cô baûn 253
1.Söï ñieàu khieån nhaø cung öùng (provider handling) 253
2.Xaùc nhaän, khoùa vaø thoâng soá 261
IV.SSL Socket vaø SSL context object 264
1.SSL Context class 265
1.1.SSLClientContext Class 266
1.1.1.Random number generator 266
1.1.2.Boä maõ hoùa höõu hieäu 267
1.1.3.Caùc taùc vuï “compression” khaû thi 268
1.1.4.Session manager 272
1.1.5.Trust Decider 280
1.2.SSLServer Context class 286
2.SSL Socket Class 287
1.Keát noái thoâng qua proxy 287
2.Laáy xaùc nhaän cuûa peer 287
3.Vieäc taùi thoûa hieäp thoâng soá baûo maät 287
4.SSLServer Socket class 288
PHAÀN IV: HIEÄN THÖÏC
I.Moâ taû heä thoáng
II.Moät soá yeâu caàu khi giaûi quyeát baøi toaùn
III.Moâ taû caùc ñoái töôïng
IV.Tieán trình thöïc thi cuûa caùc object
V.Quaù trình hieän thöïc caùc object
VI.Moät soá haïn cheá
VII.Höôùng phaùt trieån trong töông lai
PHAÀN V : PHUÏ LUÏC
PHAÀN VI : TAØI LIEÄU THAM KHAÛO
Các file đính kèm theo tài liệu này:
- BAOCAO.DOC
- COBRA.rar