Tải bản đầy đủ

Giáo trình kiến trúc hướng dịch vụ



I Á

ĐÌNH HIẾU

o

T R

KIÊN TRÚC

TỦ SÁCH KHOA HỌC

MS:182-KHTN-2016

OŨĐ
Ha nộiỊ n h à x uất b ả n đ ạ i h o c q u ố c g ia h à n ộ i

N


H


v õ ĐÌNH HIẾU

GIÁO TRÌNH

KIẾN TRÚC HƯỚNG DỊCH vụ

MHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA HÀ NỘI


MỤC LỤC

DANH MỤC CÁC TỪ VIẾT T Ắ T .............................................................................. 11
LỜI NÓI Đ Ẩ U .......................................................................................................13

Chương 1. MỞ O Ầ U ....................................................... .................................... 17
1.1.

Kiến trúc phần m é m ................................................................................ 17

1.2.

Khái niệm kiến trúc hướng dịch v ụ ............................................................18

1.3.

Các thành phẩn chính trong SOA............................................................. 19

1.4.

Dịch v ụ .................................................................................................. 20

1.5.

Vai trò của các chuẩn trong SOA............................................................. 22

1.6.


LỢi ích của SO A..................................................................................... 23

1.7.

Những hệ thống không phù hỢp với SOA................................................... 25

1.8.

Một số giải pháp SOA..............................................................................25

1.8.1.

Bộ giải pháp của Oracle........................................................................... 25

1.8.2.

Bộ giải pháp của IB M ..............................................................................26

1.8.3.

Bộ giải pháp của M uleSott....................................................................... 27

1.9.

Tổng kết................................................................................................. 28

Bài t ậ p .............................................................................................................. 28

Chương 2. CÁC CÔNG NGHỆ CHO ỨNG DỤNG PHÂN TÁN........................................ 31
2.1.

Công nghệ Socket................................................................................... 31

2.1.1.

Tổng quan vể Socket............................................................................... 31

2.1.2.

Socket trong J a v a .................................................................................. 34

2.2.

Gọi thủ tục từ xa ..................................................................................... 37

2.2.1.

Những khái niệm cơ bản..........................................................................37

2.2.2.

Thực thi phương thức từ xa trong Ja va ....................................................... 41


GIÁO TRÌNH KIẾN TRÚC HƯỚNG DỊCH vụ

2.3.

Thành phán phân tá n ............................................................................. 44

2.3.1.

Công nghệ CORBA................................................................................ 44

2.3.2.

Công nghệ E JB ..................................................................................... 49

2.4.

Công nghệ hướng thông điệp....................................................................51

2.4.1.

Tổng quan vê hướng thông điệp.............................................................. 51

2.4.2.

Công nghệ J M S .................................................................................... 54

2.5.

Tổng kết............................................................................................... 55

Bài t ậ p ........................................................................................................... 56

Chưdng 3. GIỚI THIỆU VỀ XM L........................................................................... 59
3.1.

Các khái niệm cơ bản............................................................................ 59

3.1.1.

Tài liệu XML đơn giản............................................................................ 59

3.1.2.

Thẻ và phần tử ...................................................................................... 60

3.1.3.

C âyX M L...............................................................................................60

3.1.4.

Thuộc tín h ............................................................................................62

3.1.5.

Chú th íc h ............................................................................................. 62

3.1.6.

Không gian tê n ...................................................................................... 63

3.2.

Cấu trúc của một tài liệuXM L.................................................................. 65

3.3.

Đánh giá tài liệu XM L............................................................................. 66

3.3.1.

Tài liệu đúng cú pháp............................................................................ 66

3.3.2.

Tài liệu XML đưỢc thẩm đ ịn h .................................................................. 66

3.4.

DTD..................................................................................................... 67

3.4.1.

Khai báo phần tử ................................................................................... 68

3.4.2.

Khai báo nội dung hỗnhỢp...................................................................... 68

3.4.3.

Nội dung rỗ n g ....................................................................................... 69

3.4.4.

Nội dung bất k ỳ ..................................................................................... 69

3.4.5.

Khai báo thuộc tín h ............................................................................... 69

3.4.6.

Khai báo DTD ngoài............................................................................... 71

3.4.7.

Hạn chế của DTD.................................................................................. 71

3.5.

XSD ..................................................................................................... 72


MỤC LỤC

3.5.1.

Khai báo < s c h e m a > ............................................................................. 73

3.5.2.

Khai báo < e le m e n t> ............................................................................. 75

3.5.3.

Khai báo < co m p le xT yp e > ..................................................................... 76

3.5.4.

Khai báo < a ttrib u te > ............................................................................. 77

3.5.5.

Khai báo < s im p le T y p e > ....................................................................... 78

3.5.6.

Toàn cục và địa phương......................................................................... 79

3.5.7.

Khai báo lược đô cho tài liệu XM L............................................................80

3.5.8.

Tạo lược đô từ nhiều iược đô có sẵn........................................................ 81

3.6.

Các mô hình lập trìn h ............................................................................. 81

3.6.1.

DOM ......................................................................................................81

3.6.2.

S A X ...................................................................................................... 85

3.6.3.

Xử lý tài liệu XML bằng Java................................................................... 85

3.7.

Tổng kết................................................................................................ 89

Bài t ậ p ............................................................................................................ 89

Chương 4. CÒNG NGHỆ DỊCH vụ W EB ................................................................ 93
4.1.

Tổng quan............................................................................................. 93

4.2.

SOAP.................................................................................................... 95

4.2.1.

Mục tiêu của SOAP................................................................................ 95

4.2.2.

Cấu trúc và nội dung của m ột thòng điệp SOAP....................................... 97

4.2.3.

Xử lý một thông điệp SOAP................................................................... 101

4.2.4.

SOAP và giao thức giao v ậ n ................................................................. 102

4.3.

VVSDL................................................................................................. 104

4.3.1.

Vai trò của W SDL.................................................................................104

4.3.2.

Cấu trúc của một đặc tả W S D L ............................................................ 105

4.3.3.

SửdụngVVSD L....................................................................................108

4.3.4.

VVSDL1.1 v à W S D L 2 .0 ....................................................................... 110

4.3.5.

WSDL và các chuẩn khác......................................................................111

4.4,

UDDI................................................................................................... 112

4.4.1.

Muc tiêu của UDDI............................................................................... 112


GlAOTRlNH KIẾN TRÚC HƯỚNG DỊCH vụ

4.4.2.

Thông tin trong bộ đăng ký UDDI...........................................................113

4.4.3.

Cấu trúc dữ liệu UDDI........................................................................... 113

4.4.4.

A P Icủ a U D D I...................................................................................... 115

4.5.

Một số chuẩn khác của công nghệdịch vụ W e b ...................................... 116

4.6.

Xây dựng dịch vụ Web bằng Ja va ........................................................ 117

4.6.1.

D ịc h v ụ ..............................................................................................117

4.6.2,

ứng dụng khách................................................................................. 119

4.7.

Tổng kết.............................................................................................121

Bài t ậ p ..........................................................................................................122

Chướng 5. KlỂU KIẾN TRÚC REST.................................................................... 123
5.1.

Tổng quan về HTTP............................................................................ 123

5.1.1.

Tài nguyên và định danh......................................................................124

5.1.2.

Tương tác trong HTTP........................................................................ 125

5.1.3.

Thông điệp......................................................................................... 126

5.2.

JSON................................................................................................ 128

5.3,

Các nguyên lý của REST..................................................................... 130

5.3.1.

Sử dụng HTTP một cách tường m in h ................................................... 131

5.3.2.

Đảm bảo tính phi trạng thái..................................................................133

5.3.3.

Thiết kế các URI tương tác cây thư m ục.................................................133

5.3.4.

Sử dụng JSON và X M L ........................................................................134

5.4.

So sánh các phường pháp hiện thực hóa dịch vụ VVeb.......................... 135

5.4.1.

Giao thức trao đổi dữ liệu..................................................................... 135

5.4.2.

Thông điệp......................................................................................... 136

5.4.3.

Khả năng định tuyến thông điệp........................................................... 136

5.4.4.

Hỗ trỢ giao d ịc h ................................................................................. 137

5.4.5.

Bảo m ậ t............................................................................................. 137

5.4.6.

Độ tin cậy trong truyền nhận thông đ iệ p ................................................ 138

5.4.7.

Tính dễ sử d ụ n g ................................................................................. 138

5.5.

Hiện thực hóa REST bằng Java............................................................ 138


MỤC LỤC

7

5.5.1.

Tạo sinh v iê n ...................................................................................... 140

5.5.2.

Truy xuất thòng t in ............................................................................... 141

5.5.3.

Cập nhật sinh viên................................................................................ 142

5.5.4.

Triển khai............................................................................................ 142

5.6.

Tổng kết.............................................................................................. 144

Bài t ậ p .......................................................................................................... 144

Chương 6. KÉT HỜP DỊCH vụ WEB................................................................... 147
6.1.

Tổng quan về kết hỢp dịch vụ ............................................................... 147

6.2.

Ngôn ngữ W S-BPEL............................................................................. 149

6.2.1.

Giơi th iệ u ............................................................................................. 149

6.2.2.

Cấu trúc của quy trình VVS-BPEL...........................................................150

6.2.3.

Đối tá c .................................................................................................151

6.2.4.

Dữ liệu trong VVS-BPEL......................................................................... 153

6.2.5.

Tưdng tác với các dịch vụ W eb............................................................. 154

6.2.6.

Các tác vụ điéu khiển........................................................................... 155

6.2.7.

Phép g á n ............................................................................................ 159

6.3.

Các khái niệm nâng cao trong VVS-BPEL................................................ 160

6.3.1.

Phạm v i .............................................................................................. 160

6.3.2.

Xử lý lỗ i................................................................................................161

6.3.3.

Dừng tác vụ đang thực th i..................................................................... 162

6.3.4.

C ơ c h ế đ ê n b ù .................................................................................... 162

6.3.5.

Xử lý sự k iệ n ....................................................................................... 164

6.3.6.

Các công cụ thiết kế trực q uan............................................................. 165

6.5.

Kết hợp dịch vụ Web bằng các phưdng pháp kh á c..................................166

6.4.1.

Dùng ngôn ngữ lập trình truyền th ố n g .................................................... 167

6.4.2.

VVS-CDL.............................................................................................. 167

6.4.3.

BPM N ................................................................................................. 167

6.5.

Tổng kết.............................................................................................. 168

Bài t ậ p ............................................................................................................168


8

GIÁO TRÌNH KIẾN TRÚC HƯỚNG DỊCH VU

Chương 7. AN NINH DỊCH vụ WEB..................................................................... 171
7.1.

Giới th iệ u .............................................................................................. 171

7.1.1.

Khóa chia sẻ và khóa công k h a i............................................................. 171

7.1.2.

Chữ ký s ố ............................................................................................ 173

7.1.3.

P K I.............,.......................................................................................175

7,2.

Chữ ký s ố ............................................................................................ 175

7.2.1.

Nguyên tác cơ bản của chữ ký XM L....................................................... 176

7.2.2.

Cấu trúc của chữ ký X M L ...................................................................... 176

7.2.3.

Các dạng chữ ký X M L ...........................................................................178

7.2.4.

T ạ o c h ữ k ý X M L ................................................................................... 179

7.2.5.

Xác thực chữ ký X M L ........................................................................... 180

7.3.

M ã h ó a X M L ........................................................................................ 182

7.3.1.

Cấu trúc mã hóa XM L............................................................................182

7.3.2.

Quá trình mã h ó a ..................................................................................186

7.3.3.

Quá trình giải m ã .................................................................................. 187

7.4.

W S-Security......................................................................................... 189

7.5.

Tổng kết................................................................................................191

Bài t ậ p .......................................................................................................... 191

Chương 8. CÔNG NGHỆ ESB.............................................................................. 193
8.1.

Các vấn đề trong tích hợp ứng dụng và vai trò của E S B.......................... 193

8.2.

Phân loại E S B ...................................................................................... 196

8.3.

Các chức năng chính của ESB............................................................... 197

8.3.1.

Làm trong suốt vị tr í..............................................................................197

8.3.2.

Chuyển đổi giao thức.............................................................................198

8.3.3.

Chuyển đổi thông điệp...........................................................................199

8.3.4.

Định tuyến của thông điệp.....................................................................200

8.3.5.

Cải tiến thông đ iệ p ............................................................................... 200

8.3.6.

An n in h ................................................................................................ 201


MỤC LỤC

8.3.7.

Giám sát và quản lý ...............................................................................202

8.4.

Cấu hình triển k h a i................................................................................203

8.4.1.

ESB toàn c ụ c ....................................................................................... 203

8.4.2.

ESB kết nối trực tiế p ..............................................................................204

8.4.3.

ESB trung g ia n ..................................................................................... 205

8.4.4.

E S B IiênhỢ p........................................................................................ 205

8.5,

M uleE S B ............................................................................................. 206

8.5.1.

Các thành phần thực th i......................................................................... 207

8.5.2.

Thông điệp........................................................................................... 210

8.5.3.

An n in h ................................................................................................ 211

8.6.

Tổng kết............................................................................................... 211

Bài tập ..........................................................................................................212

Chưdng 9. KỸ NGHỆ DỊCH VỊ) ............................................................................213
9.1.

Kỹ nghệ dịch v ụ ................................................................................... 213

9.1.1.

Xác định các ứng viên........................................................................... 214

9.1.2.

Thiết kế giao diện dịch vụ ...................................................................... 216

9.1.3.

Hiện thực hóa và triển khai dịch v ụ ......................................................... 217

9.2.

Một số nguyên lý thiết kế dịch v ụ .......................................................... 219

9.2.1.

Thiết kế để tái sử dụng.......................................................................... 219

9.2.2.

Kết nối mém d ẻ o .................................................................................. 219

9.2.3.

Đóng gói.............................................................................................. 220

9.2.4.

Không trạng th á i................................................................................... 220

9.3.

Phát triển phần mém với dịch vụ ............................................................ 220

9.4,

Phưđng pháp SOMA..............................................................................223

9.4.1.

Mô hình và chuyển hóa nghiệp v ụ .......................................................... 223

9.4.2.

Quản lý giải pháp.................................................................................. 223

9.4.3.

Pha nhận diện.......................................................................................224

9.4.4.

Pha đặc tả ............................................................................................228

9.4.5.

Pha chi tiết hóa..................................................................................... 229


10

GIÁO TRlNH KIẾN TRÚC HƯỚNG DỊCH vu

9,4.6. Các pha hiện thực hóa, triển khai, giám sất, và quản l ý .......................... 230
9.5.

Tổng kết..............................................................................................231

Bài tập .......................................................................................................... 231

Chương 10. QUẢN TRỊ KIẾNTRÚC HƯỚNG DỊCH vụ ............................................ 233
10.1,

Quản trị SOA là g ì? ............................................................................ 233

10.1.1, Thiết lập quyên ra quyết định.............................................................. 234
10.1.2, Xác định các dịch vụphù hợp.............................................................. 235
10.1.3, Quản lý dịch v ụ .................................................................................. 235
10.1.4, Đánh giá sự hiệu quả.......................................................................... 238
10.2.

Vòng đời quản trị SOA........................................................................ 239

10.2.1. Lập kế h o ạ ch ......................................................................................240
10.2.2. Định n g h ĩa ......................................................................................... 240
10.2.3. Thực t h i ............................................................................................. 241
10.2.4. Đánh g iá ............................................................................................ 241
10.3.

Các công cụ hỗ trỢ .............................................................................242

10.3.1. Bộ đãng ký.................................................................................................242

10.3.2. Các công

cụ

giám sát và quản lý ............................................. 243

10.3.3. Các công

cụ

an n in h .............................................................. 245

10.3.4. Các công

cụ

kiểm th ử .............................................................245

10.4.

Tổng kết............................................................................................. 246

Bài tập .......................................................................................................... 246

TÀI LIỀU THAM KHẢO .....................................................................................247


DANH MỤC CÁC Từ VIẾT TẮT
Từ
viết tắt

Từ đầy đủ

DOM

Application Program
Interíace
Công nghệ thông tin
Common Object Request
Broker Architecture
Cơ sở dữ liệu
Distributed Component
Obịect Model
Document Object Model

EJB

Enterprise JavaBean

ESB
FTP

Enterprise Service Bus
File Transíer Protocol

HTTP

HyperText Transíer Protocol

IDL

Interface Deíinition
Language

IIOP

Internet Inter-Orb Protocol

JDBC

Java Database Connectivity

JMS

Java Message Service

JSON

JavaScript Object Notation

API
CNTT
CORBA
CSDL
DCOM

Chú giải’
(trong trường hợp viết tắt
từ tiếng Anh)
Giao diện lập trình
Kiến trúc môi giới yêu cầu
đối tượng chung
Mô hình đối tượng thành
phần phân tán
Mô hình đối tượng tài liệu
Công nghệ thành phần
trên nền tảng Java
Bus dịch vụ doanh nghiệp
Giao thức truyền tập tin
Giao thức sử dụng để
truyền nhận dữ liệu trên
Web
Ngôn ngữ định nghĩa
giao diện
Giao thức tương tác giữa
các ORB
API đế kết nối với CSDL
từ các ứng dụng Java
Công nghệ hướng thông
điệp của Java
Định dạng đơn giản dùng
để trao đổi dữ liệu

Nhiều từ viết tắt tiếng A nh khi dịch thẳng sang tiếng V iệt có th ể gây khó hiểu. Đối
với những từ viết tắt như vậy, cột này có nội dung là diễn giải của từ đấy.


12

GIÁO TRÌNH KIẾN TRÚC HƯỚNG DỊCH vụ

KPI

Key Períormance Indicator

MOM

Message Oriented
Middlevvare

ORB

Object Request Broker

RPC

Representational State
Transíer
Remote Procedure Call

SAX

Simple API for XML

REST

SOA

Simple Mail Transíer
Protocol
Service-oriented architecture

SOAP

Simple object access protocol

SOMA

Service-oriented modeling
and architecture

SLT

Service litmus test

UDDI

Universal Description,
Discovery, and Integration

URI

Uniíorm Resource Identiíier

URL

Uniíorm Resource Locator

ws-

Web Service business process
execution language

SMTP

BPEL
VVSDL

VVeb Service deíinition
language

XML

Extensible Markup Language

Chi số chính để đánh giá
hiệu năng
Phần mềm trung gian
hướng thông điệp
Bộ môi giói yêu cầu
đối tượng
Kiểu kiến trúc REST
Gọi thủ tục từ xa
Thư viện API đế xử lý
XML
Giao thức chuyển thư
điện tử
Kiến trúc hướng dịch vụ
Giao thức truy cập
đối tượng đơn giản
Một phương pháp mô
hình và kiến trúc các hệ
thống hướng dịch vụ
Một phương pháp kiểm
thử dịch vụ
Chuẩn để xây dựng danh
bạ
Định danh tài nguyên
thống nhâ't
Địa chi của tài nguyên
Web
Ngôn ngữ thực thi quy
trình nghiệp vụ dịch vụ
Web
Ngôn ngữ định nghĩa
dich vu Web
Ngôn ngữ đánh dâu
mở rộng


LỜI NÓI ĐẨU
Công nghệ thông tin (CNTT) ngày càng thể hiện vai trò thiết
yếu trong các hoạt động của xã hội. Từ các hoạt động giải trí cá
nhân, hoạt động giáo dục, đến các hoạt động kinh doanh, ở đâu
chúng ta cũng có thể thấy được sự hiện diện của công nghệ thông
tin. Đối với các doanh nghiệp, CNTT là nền tảng hạ tầng tối quan
trọng, có ảnh hưởng sâu rộng đến hoạt động nghiệp vụ của doanh
nghiệp. Có một hạ tầng CNTT tốt sẽ mang lại cho doanh nghiệp
những lợi thế cạnh tranh.
Một hệ thống CNTT tốt phải là một hệ thống dễ quản lý, linh
hoạt và có khả năng tái sử dụng cao. Kiến trúc hướng dịch vụ
(Service-oriented architecture, viết tắt là SOA) được xem là giải
pháp để xây dựng các hệ thống thông tin với các đặc điểm đã nêu.
Trong khoảng 10 năm gần đây, các công ty chuyên về giải pháp
như IBM, Oracle, SAP và TIBCO đã nghiên cứu và cung cấp nhiều
giái pháp dựa trên kiến trúc hướng dịch vụ.
Giáo trình này nhằm trang bị cho sinh viên và học viên kiến
thức cơ bán về kiến trúc hướng dịch vụ. Giáo trình chủ yếu phục
vụ cho sinh viên đại học năm thứ 4 và học viên cao học. Đ ể có thể
đọc hiểu các chủ đề kiến thức trong cuốn giáo trình này sinh viên
và học viên cần có các kiến thức cơ bản về lập trình ]ava, lập trình
VVeb, và công nghệ phần mềm.
Kiến trúc hướng dịch vụ được quan tâm ở nhiều khía cạnh và
được tích hợp nhiều công nghệ. Mỗi công nghệ đề cập đến đều có
thể được trình bày trong một cuốn sách riêng. Với mục tiêu cung
cấp cái nhìn tổng quan cho người đọc, giáo trình sẽ trình bày
những công nghệ quan trọng của kiến trúc hướng dịch vụ ở mức
độ chi tiết vừa phải.


14

GIÁO TRlNH KIẾN TRÚC HƯỚNG DỊCH VỤ

Giáo trình gồm 10 chương. Chương 1 (Mở đầu) đưa ra ngữ
cảnh kiến trúc hướng dịch vụ. Chương 2 trình bày về các công
nghệ xây dựng ứng dụng phân tán. Nội dung của chương này
nhằm cung cấp cho người đọc một cái nhìn hệ thống về các công
nghệ ứng dụng phân tán. Những tổn tại của các công nghệ được
trình bày trong Chương 2 là tiền đề cho nội dung XML được trình
bày ở Chương 3. Chương 4 giới thiệu công nghệ dịch vụ Web (dựa
trên XML) với các thành phần cơ bản SOAP, WSDL và UDDI.
Công nghệ dịch vụ Web được xem là bước phát triển tiếp theo của
các công nghệ được trình bày trong Chương 2 và là công nghệ
chính để hiện thực hóa kiến trúc hướng dịch vụ. Chương 5 trình
bày một dạng dịch vụ Web khác đang được sử dụng phổ biến là
REST. Nếu chúng ta xem mỗi dịch vụ Web cung cấp một chức
năng thì việc kết hợp các chức năng (từ các dịch vụ Web) thành
một chức năng lớn hơn là một nhu cầu tất yếu. Đó là lý do vì sao
Chương 6 tập trung vào kết hợp dịch vụ Web. Phần lớn nội dung
trong chương này trình bày về

ws

- BPEU là ngôn ngữ được sử

dụng để kết hợp dịch vụ Web. Chương 7 đi sâu vào khía cạnh an
ninh trong kiến trúc hướng dịch vụ với nội dung quan tâm chính
là Chữ ký XML và Mã hóa XML. Chương 8 trình bày về một thành
phần quan trọng trong hệ thống kiến trúc hướng dịch vụ là bus
dịch vụ doanh nghiệp (enterprise Service bus). Chương 9 trình bày
về khía cạnh phương pháp phát triển hệ thống kiến trúc hướng
dịch vụ. So với những chương trước, chương này ít quan tâm đến
khía cạnh kỹ thuật. Tươiig tự, ở Chương 10, chúng ta sẽ tìm hiêli
về khái niệm quản trị kiến trúc hướng dịch vụ với sự tập trung
vào những khía cạnh liên quan đến việc quản trị hệ thống kiến
trúc hướng dịch vụ.
Cuối của từng chương sẽ có phần câu hỏi ôn tập nhằm giúp
cho người đọc hệ thống lại những nội dung chính của chương.
Ngoài ra danh sách các tài liệu tham khảo côing được cung cấp ở
cuối giáo trình để giúp cho người đọc có thê tìm hiểu sâu, rộng
hơn về các chủ đề được trình bày.


LỜI NỐI ĐÁU

15

Các chương trong giáo trình tương đối độc lập nên người đọc
có thể chọn đọc từng chương theo chủ đề cần tìm hiểu. Các
Chương 4, 6 và 7 yêu cầu người đọc cần có kiến thức cơ bản về
XML vì vậy nếu chưa tìm hiểu về XML người đọc nên xem trước
Chương 3.
Để hoàn thành được cuốn giáo trình này, tác giả đã nhận
được nhiều sự động viên, giúp đỡ tận tình và các ý kiến đóng góp
quý báu từ các đổng nghiệp, học viên cao học, và sinh viên Khoa
Công nghệ thông tin của Trường Đại học Công nghệ, Đại học
Quốc gia Hà Nội. Tác giả xin cám ơn sự hỗ trợ của PGS. TS.
Nguyễn Việt Hà, PGS. TS. Trương Ninh Thuận, PGS. TS. Trương
Anh Hoàng, PGS.TS. Nguyễn Ngọc Hóa, TS. Tô Văn Khánh, TS.
Đặng Đức Hạnh (Trường Đại học Công nghệ, ĐHQGHN), PGS.
TS. Nguyễn Đình Hóa, TS. Lê Quang Minh (Viện Công nghệ
thông tin, ĐHQGHN), PGS. TS. Đặng Văn Đức (Viện Công nghệ
thông tin, Viện Hàn lâm Khoa học và Công nghệ Việt Nam), và
đặc biệt là PGS. TS. Phạm Ngọc Hùng (Trường Đại học Công
nghệ, ĐHQGHN).
Mặc dù tác giả đã rất nỗ lực nhưng cuốn giáo trình này không
tránh khỏi các thiếu sót. Tác giả rất mong muốn nhận được ý kiến
đóng góp của bạn đọc để có thế cải tiến trong những lần xuất bản
sau, góp phần nâng cao chất lượng đào tạo của Khoa Công nghệ
thông tin, Truờng Đại học Công nghệ, Đại học Quốc gia Hà Nội.
Xin trân trọng cám ơn.
Tác giả

Võ Đình Hiếu


Chương 1. MỞ ĐẨU
Chương này trình bày một cách tổng quan về kiến trúc hướng
dịch vụ. Phần đầu của chương thảo luận khái niệm kiến trúc phẩn
mềm. Sau đó, chúng ta sẽ tìm hiểu về khái niệm kiến trúc hướng
dịch vụ và các thành phần chính trong kiến trúc hướng dịch vụ.
Chúng ta cũng tìm hiểu về khái niệm dịch vụ và một số các thuộc
tính của dịch vụ trong kiến trúc này. Sau đó chương trình bày về
lợi ích của việc áp dụng kiến trúc hướng dịch vụ và những hệ
thống không nên áp dụng kiến trúc hướng dịch vụ. Một số giải
pháp của các công ty hàng đầu về kiến trúc hướng dịch vụ được
trình bày vào cuối chương.
1.1. Kiến trúc phần mềm
Khi viết một ứng dụng nhỏ, điểu mà chúng ta thường quan
tâm đến là ngôn ngữ lập trình, cấu trúc dữ liệu và giải thuật.
Nhưng với các ứng dụng phức tạp, một trong những khía cạnh
quan trọng chúng ta cần phải quan tâm là kiến trúc phần mềm.
Một cách ngắn gọn, kiến trúc phần mềm được hiểu là cấu trúc của
hệ thống bao gồm các thành phần phần mềm, các thuộc tính có thể
nhìn thấy từ bên ngoài, và các mối quan hệ giữa các thành phần
đó [1].
Kiến trúc phần mềm đóng vai trò rất quan trọng trong việc
xây dựng hệ thống [2]. Chúng ta sử dụng kiến trúc làm phương
tiện đế trao đổi giữa những bên liên quan trong quá trình xây
dựng và sử dụng hệ thống. Kiến trúc phần mềm còn được sử
dụng đế phân tích các thuộc tính chất lượng (ví dụ: từửi sẵn sàng,
tính dễ thay đổi) của hệ thống. Kiến trúc phần mềm có thể được
xem là thiết kế mức cao của hệ thốn^. Bản thiết kẹ pàỵ

SP

đuĩar—

ĐAI HỌC O U Ố C GIA HÀ NỘÌ^
ĩ

RUNG TẦM t h ò n g tin t h ư V!ỆN

^ r-\r\rh

r'\rS r\ 1


18

GlAO TRÌNH KIẾN TRÚC HƯỚNG DỊCH vụ

làm mịn dần đến mức có thê hiện thực hóa được bằng các phát
biểu của ngôn ngữ lập trình cụ thể.
Trong quá trình xây dựng hệ thống, thông thường kiến trúc
phần mềm được thiết kế sau khi yêu cầu về hệ thống được thu
thập. Quá trình thiết kế kiến trúc là một quá trình lặp và phân rã
1, 3]. Một trong những bước quan trọng trong thiết kế kiến trúc là
xem xét để áp dụng những kiểu kiến trúc (còn được gọi là mẫu
kiến trúc) có sẵn cho hệ thống đang xây dựng. Kiểu kiến trúc định
nghĩa sẵn một số thành phần, các thuộc tính, và mối quan hệ giữa
các thành phần. Áp dụng kiểu kiến trúc giúp chúng ta biết trước
được một SỐ thuộc tính chất lượng của hệ thống được xây dựng.
Một số kiểu kiến trúc được sử dụng phô biến là khách - chủ, phân
lớp (layer), ống dẫn - bộ lọc (pipe-filter)...[4 .
1.2. Khái niệm kiến trúc hướng dịch vụ
Trong những năm gần đây, kiến trúc hướng dịch vụ (SOA) là
một cách tiếp cận hiệu quả trong việc tích hợp hệ thống. Các công
ty CNTT lớn trên thế giới như IBM, HP, BEA, Oracle, SAP và
Microsoít đều chú trọng đến SOA và có những giải pháp, công cụ
hỗ trợ. Vậy SOA là gì?
Rất nhiều người với những vai trò khác nhau cố gắng đưa ra
định nghĩa cho SOA [5, 6]. Họ có thể là nhũng người quản lý, kiến
trúc sư phần mềm, người phát triên hệ thống,... Tùy theo hướng
quan sát, mỗi người có thể đưa ra một định nghĩa riêng cho SOA.
Thông thường các định nghĩa này không mâu thuẫn với nhau mà
bổ sung cho nhau. Rõ ràng là nếu chúng ta giải thích "SOA là gì?"
cho một giám đốc điều hành sẽ khác với cách chúng ta giải thích
cho một lập trình viên.
Với người quản lý các hệ thống thông tin, SOA là một giải
pháp vói tham vọng giảm chi phí của các ứng dụng, tăng lợi
nhuận khi đầu tư vào ứng dụng và tài nguyên công nghệ, giảm
thời gian đưa ra giải pháp cho nghiệp vụ.


Chương 1. MỞ ĐẮU

19

Với những người quản lý nghiệp vụ, SOA là một tập các dịch
vụ có thể sử dụng cho khách hàng, đối tác, và các phần khác nhau
của tô chức. Các ứng dụng sẽ hỗ trợ tối đa cho nghiệp vụ bởi vì
chúng là kết quả của việc kết hợp các dịch vụ. Các dịch vụ này có
thê thay đổi một cách nhanh chóng, tái triển khai trong những ngữ
cảnh nghiệp vụ khác nhau, cho phép nghiệp vụ có thể dễ dàng
đáp ứng theo nhu cầu của khách hàng, cơ hội kinh doanh và điều
kiện thị trường.
Với những người là kiến trúc sư phần mềm, SOA có nghĩa là
tạo ra các ứng dụng dễ dàng được cấu hình và kết hợp. SOA giảm
thiểu sự phức tạp và khó thay đổi của hạ tầng CNTT. SOA giảm
thời gian phát triển và chi phí bởi vì việc giảm độ phức tạp sẽ dẫn
đến việc thay đổi và kiểm thử dễ dàng hơn. Nếu quan tâm chi tiết
hơn, kiến trúc sư phần mềm có thể cho rằng SOA là một giải pháp
kiến trúc cho việc tích hợp nhiều hệ thống khác nhau và cung cấp
một kiểu kiến trúc thúc đẩy kết nối mềm dẻo và tái sử dụng.
Đối với những người phát triển, SOA là một mô hình lập
trình sử dụng công nghệ dịch vụ Web (VVeb services) với các
chuẩn như SOAP, VVSDL, và WS-BPEL. Việc sử dụng các chuẩn sẽ
được hỗ trợ thông qua các ngôn ngữ lập trình, công cụ và môi
trường phát triển.
Trong giáo trình này, chúng ta chi tập trung vào hai cách nhìn
cuối: SOA như là một kiểu kiến trúc và được hiện thực hóa dựa
trên công nghệ dịch vụ Web.
1.3. Các thành phần chính trong SOA
Dưóả góc nhìn của kiến trúc sư phần mềm, SOA là một kiểu kiến
trúc. Những phần chúih trong SOA được trình bày ở Hình 1-1 [7 .


Hình 1-1. Các thành phần chính trong SOA

Các thành phần chính bao gồm bên cung cấp dịch vụ (Service
provider), bên sử dụng dịch vụ (Service consumer), và bộ đăng ký
dịch vụ (Service registry). Sau khi phát triển xong dịch vụ, bên
cung cấp sẽ xuất bản các thông tin về dịch vụ ở bộ đăng ký. Khi
cần tìm một dịch vụ để sử dụng, bên sử dụng sẽ kết nối và tìm
kiếm ở bộ đăng ký. Sau khi có thông từì về dịch vụ, bên sừ dụng
kết nối và sử dụng các chức năng cung cấp bởi dịch vụ.
1.4. Dịch vụ
Khái niệm quan trọng nhất trong kiến trúc hướng dịch vụ là
dịch vụ. Trong ngữ cảnh này, một dịch vụ là một chức năng được
cung cấp qua mạng. Dịch vụ có giao diện lập trình rõ ràng và
được chuẩn hóa. Chúng ta có thể có những dịch vụ đơn giản ví dụ
như dịch vụ tra cứu tỉ giá ngoại tệ, hoặc những dịch vụ phức tạp
hơn như dịch vụ đặt vé máy bay.
Một dịch vụ trong SOA có những thuộc tính chính sau [5, 8]:
-

Không trạng thái (stateless): Klai một bên sử dụng gọi dịch
vụ nhiều lần, dịch vụ không cần biết những chức năng đã


C hương 1. MỞ ĐÁU

21

được gọi, và không quan tâm đến chức năng nào sẽ được
sử dụng trong tương lai.
-

Có thể được khám phá: Các dịch vụ đều có thể được tìm
thấy bởi bên sử dụng.

-

Tự mô tả: Dịch vụ thường đi kèm với giao diện mô tả về
dịch vụ. ở trong các chương sau chúng ta sẽ thấy rằng dịch
vụ Web sẽ được mô tả bằng WSDL.

-

Có thể kết hợp: Dịch vụ trong SOA phải có khả năng kết
hợp với nhau đế thực hiện một chức năng nào đấy. Khả
năng kết hợp các dịch vụ chính là sức mạnh của SOA. ở
trong Chương 6 của giáo trình này, chúng ta sẽ tìm hiểu
chi tiết hon về việc kết hợp dịch vụ (cụ thể là kết hợp dịch
vụ VVeb).

-

Kết nối mềm dẻo (loose coupling): Phía sử dụng có thể kết
nối và sử dụng dịch vụ trong thời gian chạy. Trong quá
trình hoạt động, phía sử dụng có thể thay đổi, kết nối và sử
dụng những dịch vụ khác có chức năng tương đương.

-

Độc lập với vị trí, ngôn ngữ, và giao thức: Dịch vụ phải
được thiết kế để trong suốt vói vị trí, độc lập với ngôn
ngữ lập trình và giao thức vận chuyển. Trong suốt với vị
trí có nghĩa là việc hiện thực dịch vụ không phụ thuộc vào
địa chỉ IP hay tên miền của máy chủ. Trong quá trình triển
khai dịch vụ, việc thay đổi vị trí của dịch vụ chỉ ảnh
hưởng đến việc cập nhật lại thông tin về dịch vụ ở bộ
đăng ký. ở khía cạnh ngôn ngữ lập trình, việc dịch vụ
được hiện thực bằng ngôn ngữ lập trình nào hoàn toàn
độc lập với bên sử dụng. Một dịch vụ có thể được triển
khai với nhiều giao thức vận chuyến khác nhau như
HTTP, SMTP, h o í:/v à FTP.
Chúng ta có thể xem dịch vụ như là sự phát triển ở mức cao

hơn về khía cạnh trừu tượng hóa trong chuỗi đối tượng, thành
phần phần mềm và dịch vụ (Hình 1-2).


6IÁ 0 TRÌNH KIẾN TRÚC HƯỚNG DỊCH vụ

22

Đối tượng

Thành phần

Dịch vụ

Mức độ trừu tượng
Hình 1-2. Đối tượng, thành phần, và dịch vụ

Dù rằng dịch vụ trong kiến trúc hướng dịch vụ không nhất
thiết phải là dịch vụ Web nhưng hiện nay công nghệ dịch vụ Web
là công nghệ chính dùng đế hiện thực hóa kiến trúc hướng dịch vụ.
1.5. Vai trò của các chuẩn trong SOA
Khi đề cập đến chuẩn trong SOA, hai loại chuẩn chúng ta có
thể quan tâm: chuẩn xây dựng cơ sở hạ tầng và chuẩn quy trình
phát triển phẩn mềm (còn gọi là chuẩn phương pháp). Trong giáo
trình này, chúng ta chỉ quan tâm đến các chuẩn được sử dụng để
xây dựng cơ sở hạ tầng.
v ề cơ bản, các chuẩn trong SOA cũng chính là các chuẩn liên
quan đến công nghệ dịch vụ Web và phần lớn các chuẩn này đều
dựa trên ngôn ngữ đánh dấu mở rộng XML. XML và XML Schema
đã được chuẩn hóa từ 1998 và 2001. SOAP và UDDI được chuẩn
hóa từ 2003. WS- Security được chuẩn hóa vào 2004. Các tổ chức
phụ trách các chuẩn trên thế giới như W3C, OASIS, Open Group
đã công nhận và hỗ trợ những chuẩn này. Ngoài ra, một số các đặc
tả kỹ thuật khác cũng đã được áp dụng một cách rộng rãi. Ví dụ
trong khi WSDL 2.0 đang được đề nghị hoàn thiện bởi W3C, đặc
tả WSDL 1.1 đã và đang được hỗ trợ và sử dụng rộng rãi bởi các
công ty CNTT lớn trên thế giới.
Chính việc sử dụng các chuẩn trong SOA làm cho hệ thống
được xây dựng theo SOA trở nên linh hoạt và dễ đáp ứng các yêu
cầu từ nghiệp vụ. Cụ thể, các chuẩn đảm bảo các hệ thống trong


Chương 1. MỞ ĐÁU

23

cùng công ty hay giữa công ty với đối tác có thể kết nối, cùng hoạt
động. Việc sử dụng các chuẩn cũng có thể giúp quá trình phát
triến và chuyên giao sản phẩm nhanh hơn thông qua việc áp dụng
các quy trình và công cụ. Khi được hiện thực theo các chuẩn, sự
phụ thuộc giữa các phần trong hệ thống sẽ được hạn chế. Hệ
thống sẽ trở nên linh hoạt hơn. Được hiện thực theo chuẩn cũng
phần nào khẳng định chất lượng dịch vụ mang lại từ hệ thống.
Các chuẩn thường được sử dụng để xây dựng hệ thống SOA
bao gồm:
-

XML (Extensible Markup Language): Ngôn ngữ đánh dấu
mở rộng, được sử dụng để định dạng dữ liệu được trao đổi
trong và giữa các hệ thống [9].

-

SOAP (Simple Object Access Protocol): Quy định cấu trúc
của thông điệp gửi/nhận giữa các dịch vụ Web [10].

-

VVSDL (Web Service Description Language): Ngôn ngữ mô
tả dịch vụ VVeb [11].

-

VVS-Security: Bao gổm các quy định về đảm bảo an ninh
cho dịch vụ Web [12 .

-

VVS-BPEL (Web Services Busmess Process Executíon Language):
Ngôn ngữ dựa trên XML, dùng đê’ định nghĩa các quy trình
nghiệp vụ [13].
Chúng ta sẽ tìm hiểu chi tiết về các chuẩn này trong các

chương khác của giáo trình.
1.6. Lợi ích của SOA
Như chúng ta có thể thấy từ phần trên, xây dựng hệ thống
theo SOA đổng nghĩa với việc sử dụng các chuẩn. Như vậy, sử
dụng SOA sẽ làm tăng khả năng tích hợp các ứng dụng trong
cùng một công ty. Tích hợp các ứng dụng trong công ty sẽ giúp
công ty sử dụng tốt hơn các nguồn thông tin. Tuy nhiên, việc tích
hợp này không dễ dàng vì các ứng dụng này có thể được cung cấp
bởi nhiểu công ty khác nhau và sừ dụng các công nghệ khác nhau.


24

GIÁO TRÌNH KIẼN TRÚC HƯỚNG DỊCH VỤ

Tích hợp các ứng dụng được xây dụng trên những nền tảng khác
nhau sẽ cần chi phí đáng kế, thậm chí nhiều lúc còn không thực
hiện được. SOA sẽ là giải pháp cho vấn đề này.
SOA cho phép các công ty kết nối các hệ thống với nhau, thúc
đẩy hợp tác kinh doanh. Trước đây, việc kết nối hệ thống thông
tin của các công ty thường bị hạn chế vì trở ngại về mặt kỹ thuật.
Với SOA, các chức năng của hệ thống sẽ được chuyển thành dịch
vụ dựa trên các chuẩn chung. Điều này dẫn đến việc kết nối giữa
các công ty sẽ được tiến hành dễ dàng.
SOA giúp cho hệ thống công nghệ thông tin đáp ứng tốt hơn
các yêu cầu thay đổi từ phía nghiệp vụ. Trong các doanh nghiệp
CNTT được xây dựng như là cơ sở hạ tầng để doanh nghiệp hoạt
động. Vì một lý do nào đó, doanh nghiệp thay đổi về nghiệp vụ
(sát nhập các bộ phận, sát nhập với doanh nghiệp khác, đưa ra
dịch vụ mới, sản phẩm mới, kinh doanh trực tuyến,...). Việc này sẽ
kéo theo sự thay đổi phía CNTT. Nói một cách chính xác hơn, hạ
tầng CNTT cần phải thay đổi để phục vụ cho sự thay đổi phía
nghiệp vụ. Nếu không được thiết kế để chuẩn bị cho các sự thay
đổi từ phía nghiệp vụ, sự thay đổi ở phía nển tảng CNTT sẽ cần
nhiều thời gian, chi phí cao và có thể dẫn đến làm giảm ý nghĩa
của việc thay đổi nghiệp vụ. Với SOA, các quy trình nghiệp vụ
dựa trên các dịch vụ. Do đó, việc thay đổi, tạo mới các quy trình
nghiệp vụ trở nên đon giản và nhanh chóng hơn.
Trong quá trình xây dựng hệ thống CNTT dựa trên SOA,
chúng ta sẽ xác định rõ dịch vụ nào phục vụ cho quy trình nghiệp
vụ nào. Từ đấy, chúng ta biết được dịch vụ đây có hiệu quả không
đối với nghiệp vụ của công ty. Bằng cách xem xét tất cả các dịch
vụ, chúng ta sẽ biết được mức độ hiệvi quả của việc đầu tư cho
CNTT. Từ đó, các doanh nghiệp sẽ xác định được khoản đẩu tư và
hướng đầu tư phù hợp để phát triến cơ sở hạ tầng CNTT nhằm
phục vụ hiệu quả nhất cho nghiệp vụ.
Bằng cách chuyển các chức năng của hệ thống thông tin thành
các dịch vụ và chia sẻ trong doanh nghiệp, SOA thúc đẩy việc tái
sử dụng. Điểu này cũng đồng nghĩa với việc tiết kiệm chi phí và
tăng hiệu quả đầu tư cho hạ tầng CNTT.


C hương 1. MỞ ĐẤU

25

1.7. Những hệ thống không phù hợp với SOA
Với những gì được trình bày ở trên chúng ta có thể thấy rằng
SOA mang lại nhiều lợi ích. Tuy nhiên, không phải hệ thống nào
cũng phù hợp cho việc sử dụng SOA. Với những trường hợp sau
sử dụng SOA có thể không những không phát huy được các điểm
mạnh của SOA mà còn mang lại những ảnh hưởng không tốt đến
hệ thống [7].
-

Các hệ thống có môi trường đổng nhất; Nếu một công ty/tổ
chức sử dụng các sản phẩm công nghệ từ cùng một nguồn
cung cấp, việc kết nối giữa các thành phần có thể được thực
hiện một cách dễ dàng.

-

Các hệ thống xử lý thời gian thực: Thông thường những hệ
thống này yêu cẩu hiệu năng lóĩi. Sử dụng SOA sẽ giảm
hiệu năng của hệ thống bởi SOA sử dụng nhiều lớp trung
gian vói nhiều giao thức khác nhau.

-

Các hệ thống ít có sự thay đổi: Nếu hệ thống không có sự
thay đổi về quy trình nghiệp vụ, dòng dữ liệu,... thì không
cần thiết phải sử dụng SOA

-

Các hệ thống mà gắn kết chặt không phải là một trở ngại:
Kết nối mềm dẻo được phát huy tối đa tác dụng khi các
thành phần trong hệ thống thuộc về các bên quản lý khác
nhau. Nếu hệ thống không cần thiết phải có gắn kết mềm
dẻo thì không nhất thiết phải dùng SOA.

1.8. Một số giải pháp SOA

1.8.1. Bộ giải pháp của Oracle
Oracle SOA Suite [14] là một bộ phần mềm sử dụng để xây
dựng, triển khai và quản lý các hệ thống theo SOA. Bộ phần mềm
này được cấu trúc gồm bốn lớp chính: kết nối (connectivity), ảo
hóa và trung gian dịch vụ (Service virtualization & mediation), kết
hợp (orchestration), phân tích (analytics).


GIÁO TRÌNH KIẾN TRÚC HƯỚNG DỊCH vụ

26

Lớp kết nối cho phép các ứng dụng kết nối các nguồn dữ liệu
trong và ngoài hệ thống. Lớp ảo hóa và trung gian do Oracle
Service Bus đảm trách. Oracle Service Bus là một ESB (enterprise
Service bus). ESB này giúp cho bên sừ dụng dịch vụ độc lập với sự

phức tạp cũng như những thay đổi từ phía ứng dụng chủ (backend). Các chức năng chính trong lớp kết hợp được thực hiện bởi
Oracle BPEL Process Manager. Đây là công cụ dùng đế kết nối các
dịch vụ riêng lẻ thành các quy trình. Việc kết hợp được dựa trên
ngôn ngữ BPEL. Lớp phân tích bao gồm các công cụ cho phép
người dùng tổng hợp thông tin từ nhiều nguồn trong hệ thống và
biểu diễn theo nhiều hình thức. Lớp này giúp cho các nhà quản lý
có một giao diện tổng hợp về các vấn đề liên quan đến nghiệp vụ
của công ty/tổ chức và từ đó có thể đưa ra các quyết định. Oracle
còn có Oracle Enterprise Repository là ímg dụng phục vụ cho
quản trị SOA.

Analytics
Business Activĩty Monitoring

Evenỉ Proceuing

Orchestration
BPEL Process Manager

Business Rulos

Service Virtuaiizatíon & Mediatỉon
Service Bus

Connectivity
Cloud

Orvpremỉses

Apps Servìcoỉ Platform

Apps Mainírame D8

Busineu to Business

EDI

XML

MFT

Hình 1-3. Kiến trúc Oracle SOA Suite [14]

1.8.2. Bộ giải pháp của IBM
IBM là công ty hàng đầu về cung cấp các giải pháp SOA. IBM
SOA Poundation [15] là một tập các phần mềm, các kỹ năng và
mẫu để xây dựng các hệ thống SOA. IBM SOA Poundation được
xây dựng dựa trên kiến trúc SOA tham khảo của IBM. Kiến trúc


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×