Tên đề tài: "Nghiên cứu và xây dựng hệ thống xác thực người dùng tập trung cho các hệ thống tin học tại Viễn thông Hà Nội".
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI MỞ ĐẦU 3
CHƯƠNG 1 MÔ TẢ TỔNG QUAN VỀ HỆ THỐNG XÁC THỰC TẬP TRUNG 5
1.1 Giới thiệu tổng quan về mô hình xác thực 5
1.2 Mô hình xác thực của một số hệ thống tại Viễn thông Hà Nội 6
1.2.1 Hệ thống điều hành sửa chữa và quản lý mạng cáp 6
1.2.2 EOffice 8
1.2.3 Phát triển thuê bao và điều hành thi công 9
1.2.4 Quản lý Thanh toán Cước phí Viễn thông 11
1.2.5 Hệ thống báo cáo sản xuất kinh doanh 13
1.3 Nhu cầu xây dựng hệ thống xác thực tập trung 14
CHƯƠNG 2: CƠ SỞ DỮ LIỆU MYSQL, MÔ HÌNH HỆ THỐNG SỬ DỤNG WEBSERVICE VÀ MỘT SỐ PHƯƠNG PHÁP XÁC THỰC 16
2.1 Cơ sở dữ liệu MySQL 16
2.1.1 Giới thiệu về hệ Quản trị cơ sở dữ liệu MySQL 16
2.1.2 Truy xuất hệ Quản trị cơ sở dữ liệu MySQL 18
2.1.3 Những cú pháp cơ bản của MySQL 22
2.2 Mô hình hệ thống sử dụng WebService 26
2.2.1 Giới thiệu về Web Services 26
2.2.2 Các thành phần của Web Services 27
2.2.3 Mô hình Web Services 31
2.3 Một số phương pháp xác thực 41
2.3.1 Sơ lược về xác thực người dùng 41
2.3.2 Xác thực qua tên người dùng/mật khấu 42
2.3.3 Xác thực sinh trắc học qua vân tay 43
2.3.4 Xác thực qua chứng chỉ Token 44
2.3.5 Xác thực sử dụng OTP qua SMS 46
2.3.6 Xác thực sử dụng OTP ma trận 2 chiều 47
2.3.7 Quản lý mật khẩu người dùng 48
CHƯƠNG 3 THIẾT KẾ HỆ THỐNG XÁC THỰC TẬP TRUNG 48
3.1 Yêu cầu hệ thống 48
3.2 Thiết kế CSDL 49
3.2.1 Cấp đơn vị 49
3.2.2 Đơn vị 49
3.2.3 Nhân viên 49
3.2.4 Người sử dụng 50
3.2.4 Thông tin mật khẩu ma trận của người dùng 51
3.2.5 Log cập nhật thông tin 51
Trang 23.2.6 Log thực hiện xác thực 52
CHƯƠNG 4 LẬP TRÌNH VÀ TRIỂN KHAI 52
4.1 Chương trình và phương thức giao tiếp giữa các hệ thống 52
4.1.1 Chương trình quản lý thông tin xác thực 52
4.1.2 Giao tiếp giữa hệ thống xác thực và các hệ thống khác 55
4.2 Các bước triển khai với mô hình hệ thống hiện tại 59
4.2.1 Mô hình tổ chức hệ thống 59
4.2.2 Đánh giá khả năng chuyển đổi của một số hệ thống đã khảo sát 62
4.2.3 Tiến trình xác thực username/password và OTP trên toàn hệ thống 65
4.3 Quy định đặt tên người dùng: 67
4.3.1 Quy tắc đặt tên user 67
4.3.2 Thiết lập và sử dụng mật khẩu 67
4.3.3 Mật khẩu của người sử dụng 68
4.3.4 Mật khẩu của người quản trị 68
4.4 Quy trình thực hiện khai báo, chỉnh sửa, xóa bỏ thông tin xác thực 68
4.4.1 Thực hiện thêm mới, chỉnh sửa thông tin người dùng 68
4.4.2 Xóa bỏ thông tin xác thực 68
4.5 Triển khai thực tế trên hệ thống báo cáo và điều hành sửa chữa 69
4.5.1 Các bước thực hiện chung 69
4.5.2 Mô hình xử lý xác thực qua Username/Password 70
4.5.3 Mô hình xử lý xác thực qua Username/Password và OTP 71
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72
PHỤ LỤC 73
TÀI LIỆU THAM KHẢO 75
Trang 3Việc nghiên cứu và tiếp thu công nghệ mới áp dụng trong sản xuất kinh doanh nhằm nâng cao hiệu quả, tính bảo mật của các hệ thống CNTT là cần thiết đối với sự phát triển công nghệ thông tin của Viễn thông Hà Nội
Việc xây dựng một hệ thống xác thực tập trung cho tất cả các hệ thống CNTT của Viễn thông Hà Nội sẽ đáp ứng được nhu cầu quản lý người dùng tập trung Hệ thống này sẽ cung cấp tính năng xác thực người dùng cho tất cả các hệ thống CNTT khác qua các thư viện hàm giao tiếp chuẩn Khi đó các hệ thống CNTT khác có thể sử dụng kết quả xác thực do hệ thống xác thực tập trung cung cấp để quyết định người dùng có quyền hay không hoặc có quyền đến mức nào khi truy nhập từng hệ thống
Ngoài ra, việc nghiên cứu và áp dụng các công nghệ mới, đặc biệt là các công nghệ bảo mật, an toàn dữ liệu đã được Giám đốc Viễn thông Hà Nội quan tâm chỉ đạo nghiên cứu Trong các công nghệ bảo mật sử dụng yếu tố sinh trắc học, kỹ thuật nhận dạng vân tay là mô hình xác thực người dùng có tính bảo mật khá cao, an toàn hơn rất nhiều so với việc sử dụng tên truy nhập/mật khẩu Người dùng chỉ cần lưu trữ mã vân tay trong CSDL xác thực (mã này là duy nhất) và sử dụng vân tay thay cho việc dùng tên truy nhập/mật khẩu nên việc bị đánh cắp là rất ít khả năng xảy ra Ngoài ra, kỹ thuật này cũng bắt đầu được sử dụng ở Việt Nam do cho phí thiết bị đã giảm đáng kể, phù hợp với nhu cầu thực tế hơn so với các công nghệ bảo mật sử dụng yếu tố sinh trắc học khác như kỹ thuật quét võng mạc hay mạch máu
Viễn thông Hà Nội hoàn toàn có thể xây dựng một hệ thống xác thực tập trung
sử dụng kỹ thuật nhận dạng vân tay kết hợp với tên truy nhập/mật khẩu nhằm quản lý tập trung quyền truy nhập các hệ thống CNTT của toàn bộ CBCNV Với định hướng
Trang 4trên, nhóm đề tài đã đề nghị và được Giám đốc Viễn thông Hà Nội phê duyệt đề cương
đề tài
Đề tài bao gồm các nội dung sau:
Chương 1 Mô tả tổng quan về hệ thống xác thực tập trung Chương này giới
thiệu tổng quan về mô hình xác thực người dùng phổ biến nhất Nhóm đề tài cũng đưa
ra các hiện trạng các mô hình xác thực người dùng đang sử dụng trong các hệ thống tại Viễn thông Hà Nội và những vấn đề, tồn tại của các hệ thống hiện tại
Chương 2 CSDL MySQL, mô hình tổ chức hệ thống sử dụng Web Service và một số phương pháp xác thực Trình bày các vấn đề lý thuyết và các nghiên cứu về
hệ quản trị CSDL MySQL, mô hình tổ chức hệ thống sử dụng Web Service cũng như các vấn đề liên quan đến từng phương pháp xác thực cụ thể, bao gồm: Xác thực qua tên người dùng/mật khẩu, xác thực sinh trắc học sử dụng yếu tố vân tay, xác thực sử dụng chứng chỉ Token
Chương 3 Thiết kế hệ thống xác thực tập trung Chương này nhóm đề tài trình
bày cho tiết về yêu cầu của một hệ thống xác thực tập trung, các yếu tố liên quan khi xây dựng một hệ thống xác thực tập trung Phần cuối chương này, nhóm đề tài trình bày thiết kế của hệ thống, thiết kế CSDL, giao diện chương trình
Chương 4 Lập trình và triển khai Xây dựng chương trình quản lý việc xác thực
tập trung, xây dựng các hàm giao tiếp giữa hệ thống xác thực tập trung với các hệ thống khác, việc triển khai hệ thống, các quy định đặt tên người dùng khi triển khai hệ thống xác thực tập trung trong Viễn thông Hà Nội, quy trình thực hiện khai báo, chỉnh sửa thông tin người dùng
Chương 5 Kết luận
Nhóm thực hiện đề tài trân trọng cảm ơn Giám đốc Viễn thông Hà Nội đã tin tưởng giao cho nhóm thực hiện và triển khai đề tài này Trong quá trình thực hiện, nhóm đề tài cũng được lãnh đạo Viễn thông Hà Nội, các phòng ban chức năng và các đơn vị liên quan tạo điều kiện giúp đỡ Chúng tôi xin chân thành cảm ơn
Trang 5CHƯƠNG 1 MÔ TẢ TỔNG QUAN VỀ HỆ THỐNG XÁC THỰC TẬP TRUNG
1.1 Giới thiệu tổng quan về mô hình xác thực
a Khái niệm về xác thực
Xác thực (Authentication) là một hành động nhằm thiết lập hoặc chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là những lời khai báo do người đó đưa ra hoặc về vật đó là sự thật Xác thực một đối tượng còn có nghĩa là công nhận nguồn gốc của đối tượng, trong khi, xác thực một người thường bao gồm việc thẩm tra nhận dạng họ Việc xác thực thường phụ thuộc một hoặc nhiều yếu tố xác thực cụ thể
Xác thực là đặc biệt quan trọng để cho sự hoạt động của hệ thống được an toàn
Hệ thống luôn thực hiện xác thực trước tiên thực thể hoặc đối tượng khi nó hoặc người
đó cố thử thiết lập liên lạc Khi đó nét nhận dạng của thực thể được dùng để xác định
sự truy nhập của nó như một đặc quyền hoặc để có được sự phục vụ của hệ thống Suốt quá trình thực hiện xác thực, hai bên muôn luôn trao đổi các bí mật chung mà nó
sẽ được dùng để đưa đến sự bảo mật và toàn vẹn dữ liệu xác thực
b Xác thực người dùng
Hệ thống xác thực người dùng đóng vai trò hết sức to lớn trong việc bảo mật thông tin của người dùng trong thời kỳ tin học hóa hiện nay Đối với một người sử dụng máy tính, việc nhập thông tin tên người dùng, mật khẩu là một thao tác quen thuộc hàng ngày để có thể truy nhập vào các hệ thống nghiệp vụ, các tệp tin, thư điện
tử, tài khoản ở ngân hàng, những thông tin cá nhân,… mà người dùng đó không muốn người khác biết được
Hầu hết các hệ thống tin học hiện nay sử dụng kiểu xác thực thông qua tên người dùng và mật khẩu chẳng hạn các hệ thống như Gmail, Mail Yahoo,…
Trong đó tên người dùng là một chuỗi ký tự được người dùng chọn hoặc được một hệ thống cung cấp theo một quy tắc nào đó và mật khẩu là các ký tự mà người dùng lựa chọn Mật khẩu mà người dùng đặt có thể là tên người thân, ngày sinh nhật, tên một nhân vật ưa thích,… mục đích là để người dùng có thể ghi nhớ được
Trang 6Giao diện đăng nhập Mail Yahoo Thực tế trong một doanh nghiệp, có thể có rất nhiều hệ thống nghiệp vụ như quản lý tài sản, quản trị nhân sự, kế toán, quản lý kho… Nếu không có những quy định chung thì một nhân viên của doanh nghiệp (tương ứng với một người sử dụng) có thể có rất nhiều tên đăng nhập khác nhau, đồng thời có thể có nhiều mật khẩu khác nhau Dẫn đến tình trạng người dùng gặp khó khăn khi thực hiện nghiệp vụ liên quan tới xác thực người dùng
Trong Viễn thông Hà Nội, một người dùng có thể phải thực hiện thao tác với rất nhiều hệ thống nghiệp vụ như: Phát triển thuê bao, Điều hành thi công, Quản lý Thanh toán Cước phí Viễn thông, Quản lý Mạng cáp, Quản lý cổng;… cũng như các hệ thống tin học khác, các hệ thống này hầu hết sử dụng phương pháp xác thực người dùng thông qua tên người dùng và mật khẩu Mặt khác trong quá trình phát triển, do thiếu những quy định cụ thể về việc đặt tên người dùng và các hệ thống được triển khai theo các giai đoạn khác nhau, nên với mỗi hệ thống người sử dụng lại có một tên đăng nhập (tên người dùng) riêng và phải nhớ mật khẩu tương ứng với tên đăng nhập đó Có những người dùng phải nhớ nhiều tên đăng nhập của bản thân do không có sự thống nhất giữa việc đặt tên đăng nhập giữa các hệ thống
1.2 Mô hình xác thực của một số hệ thống tại Viễn thông Hà Nội
1.2.1 Hệ thống điều hành sửa chữa và quản lý mạng cáp
a Chức năng của hệ thống
GTCAS là một hệ thống tập trung, được tích hợp từ các hệ thống quản lý mạng cáp đồng, cáp quang, các dịch vụ chạy trên mạng cáp này, quản lý được mạng hạ tầng mạng cống bể (cống, bể, ống cống, cáp đi trong ống cống), mạng đường cột (cột, cáp/dây thuê bao treo trên cột)
Trang 7Điều hành sửa chữa toàn bộ dịch vụ & điều hành xử lý sự cố trong VTHN, bao gồm các chức năng như lập phiếu báo hỏng, đo thử, phân ca,
Web Server 10.10.31.136 (ASPX; C#)
Client web form ĐHSC
HTTP
Oracle Quản lý mạng cáp
Trang 8+ ĐHSC : 917 người dùng (tính tới thời điểm hiện tại)
- id_nhanvien : nhân viên,
- dang_hoatdong : trạng thái khóa/mở
QLMC:
Trang 9- Mã hóa thông tin người dùng : không
eMail server 10.10.41.8
Client Windows Form EOffice
IMAP/POP3
Eoffice Server 10.10.40.141 IMAP
CSDL SQL Server
Trang 10Bao gồm hai chương trình là:
- Chương trình Phát triển Thuê bao: Là chương trình nhập thông tin đầu vào đầu tiên cho toàn bộ chu trình chăm sóc về dịch vụ viễn thông cho khách hàng Chương trình Phát triển thuê bao trợ giúp nhân viên giao dịch lập hợp đồng tiếp nhận các yêu cầu về dịch vụ viễn thông của khách hàng, bao gồm các chức năng chính như lập hợp đồng (đặt mới, dịch chuyển,…), thực hiện giao phiếu trực tiếp tới đơn vị thi công, tra cứu thông tin khách hàng và hoàn công,…
- Chương trình Điều hành Phát triển Thuê bao: là chương trình hỗ trợ quản lý thi công lắp đặt dịch vụ cho khách hàng Bao gồm các chức năng chính như giao phiếu nhân công, giao phiếu tự động, tra cứu lịch sử lắp đặt,…
Oracle PTTB
Web Server 10.10.20.11 (ASPX Website; C#)
Web Browser (clients)
Các
hệ thống khác
HTTP
Trang 11o Client web form: phân theo nhóm người dùng, với mỗi nhóm có một menu javascript riêng, khi người dùng đăng nhập, thực hiện xác định nhóm và load file javascript tương ứng
o Các hệ thống khác: xác thực thông qua việc truyền tham số username, password (bản rõ) vào phần header của web request Web Server thực hiện kiểm tra thông tin username, password trên CSDL để cho phép thực hiện tiếp các nghiệp vụ của Web Service
- Các hệ thống cùng sử dụng : Phát triển thuê bao; Web site điều hành thi công; Web service lập hợp đồng cắt phục
- Mã hóa thông tin người dùng : không
d Thông tin về danh mục người dùng
* Số lượng: 1726 người dùng:
- Giao dịch viên: 936
- Đài, host, OMC: 387
- Lãnh đạo VTHN, công ty điện thoại: 8
- Các người dùng lấy báo cáo, tra cứu,…
* Nhóm người dùng:
- Lãnh đạo các công ty điện thoại
- Trưởng các đài, phòng nghiệp vụ
- Giao dịch viên tiếp nhận yêu cầu
- Nhân viên điều hành thi công: OMC, Host, đài
- Cán bộ phòng ban chức năng
* Thông tin bảng dữ liệu người dùng:
Trang 12Là chương trình quản lý nợ của khách hàng, bao gồm các chức năng: gạch nợ (theo nhiều phương thức khách hàng thực hiện trả), điều chỉnh, quản lý đường thu, đôn đốc thanh toán, cắt/phục nợ, tổng hợp nợ cuối tháng,… Hiện tại chương trình đang được xây dựng mới với mô hình hệ thống như phần dưới đây
o Windows Form điểm giao dịch: Xác thực thông qua Username, Password
mã hóa được gửi cho Web Service máy chủ 10.10.40.250
o Windows Form trung tâm: kết nối trực tiếp với CSDL QLTT để xác thực
- Các hệ thống cùng sử dụng : Module nhập chứng từ điểm thu, module xử
Web Server 10.10.40.250 (Web Service; C#)
Windows form Trung tâm
Windows Form Điểm giao dịch
HTTP
Trang 13* Số lượng: 79 người dùng (tính tới thời điểm hiện tại)
- NHANVIEN_ID : Nhân viên
1.2.5 Hệ thống báo cáo sản xuất kinh doanh
Web Server 10.10.20.15 (ASP Website)
Web Browser (clients)
HTTP
Trang 14- Cách thức phân quyền : theo từng địa chỉ website
- Phương thức xác thực : xác thực thông qua một trang asp authen include tại đầu của mỗi trang ASP báo cáo
- Các hệ thống cùng sử dụng : không
- Mã hóa mật khẩu : không
- Mã hóa thông tin người dùng : không
d Thông tin về danh mục người dùng
Số lượng: 160 người dùng
Nhóm người dùng:
o Phòng ban chức năng và lãnh đạo đơn vị, theo dõi báo cáo
o Cán bộ cập nhật thông tin dạng Excel lên hệ thống
Thông tin bảng dữ liệu người dùng:
1.3 Nhu cầu xây dựng hệ thống xác thực tập trung
Việc xây dựng một hệ thống xác thực tập trung cho tất cả các hệ thống CNTT của Viễn thông Hà Nội sẽ đáp ứng được nhu cầu quản lý người dùng tập trung Hệ thống này sẽ cung cấp tính năng xác thực người dùng cho tất cả các hệ thống CNTT khác qua các thư viện hàm giao tiếp chuẩn Khi đó các hệ thống CNTT khác có thể sử dụng kết quả xác thực do hệ thống xác thực tập trung cung cấp để quyết định người dùng có quyền hay không hoặc có quyền đến mức nào khi truy nhập từng hệ thống Tuy nhiên để xây dựng một hệ thống xác thực tập trung, cần nghiên cứu và đưa
ra một giải pháp tổng thể Trước tiên cần tiến hành rà soát và đưa ra một quy tắc đặt tên người dùng phù hợp thông qua việc rà soát, đánh giá và tổng hợp dữ liệu về thông tin người dùng trong các hệ thống đã có Từ đó đưa ra một phương án tối ưu nhất cho việc xây dựng hệ thống dữ liệu người dùng tập trung
Trang 15Vấn đề thêm mới người dùng phải được thực hiện trực tiếp trên hệ thống xác thực tập trung nhằm đảm bảo cho việc quản lý Các chương trình tác nghiệp sẽ không trực tiếp tham gia vào khâu thêm mới người dùng mà chỉ sử dụng dữ liệu người dùng Sau khi xây dựng thành công hệ thống xác thực tập trung với dữ liệu người dùng phù hợp cùng với thư viện hàm giao tiếp chuẩn, cần có sự phối hợp chỉnh sửa các chương trình tác nghiệp liên quan để chuyển đổi các chương trình này sang sử dụng kỹ thuật xác thực trên hệ thống xác thực tập trung thông qua các hàm giao tiếp đã xây dựng
Quá trình chuyển đổi trên cũng cần được tính toán các bước hợp lý, chẳng hạn quyền truy xuất chương trình vẫn phải được lưu trữ trực tiếp, hệ thống xác thực tập trung chỉ đưa ra kết quả xác thực trong khi quyền truy nhập chương trình vẫn do chương trình đó định nghĩa riêng
Trang 16CHƯƠNG 2: CƠ SỞ DỮ LIỆU MYSQL, MÔ HÌNH HỆ THỐNG SỬ DỤNG WEBSERVICE VÀ MỘT SỐ PHƯƠNG PHÁP XÁC THỰC 2.1 Cơ sở dữ liệu MySQL
2.1.1 Giới thiệu về hệ Quản trị cơ sở dữ liệu MySQL
Cơ sở dữ liệu MySQL đã trở thành cơ sở dữ liệu mã nguồn mở phổ biến nhất trên thế giới vì cơ chế xử lý nhanh và ổn định của nó cùng với sự đáng tin cậy cao và dễ sử dụng Nó được sử dụng rộng rãi bởi các nhà phát triển Website riêng lẻ cũng như bởi rất nhiều tổ chức lớn trên thế giới để tiết kiệm thời gian và tiền bạc cho những Websites có dung lượng lớn, phần mềm đóng gói, bao gồm cả những hãng đi đầu trong lĩnh vực công nghiệp công nghệ thông tin như Yahoo, Alcatel-Lucent, Google, Nokia, YouTube
MySQL không chỉ là cơ sở dữ liệu mã nguồn mở phổ biến nhất trên thế giới, nó còn trở thành cơ sở dữ liệu được lựa chọn cho thế hệ mới của các ứng dụng xây dựng trên nền Linux, Apache, MySQL, PHP/Perl/Python MySQL chạy trên hơn 20 Platform bao gồm: Linux, Windows, OS/X, HP-UX, AIX, Netware mang lại tính linh hoạt trong việc sử dụng Một số ưu điểm của MySQL:
a Tính linh hoạt
Máy chủ cơ sở dữ liệu MySQL cung cấp đặc tính linh hoạt, có sức chứa để xử lý các ứng dụng được nhúng sâu với dung lượng chỉ 1MB để chạy các kho dữ liệu đồ sộ lên đến hàng terabytes thông tin Sự linh hoạt về Patform là một đặc tính lớn của MySQL với tất cả các phiên bản của Linux, Unix và Windows đang được hỗ trợ Tính chất của mã nguồn mở cho phép MySQL có sự tùy biến hoàn toàn để thích hợp cho Database Server
b Tính thực thi cao
Kiến trúc Storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy chủ cơ sở dữ liệu MySQL theo đặc trưng cho từng ứng dụng đặc thù Dù ứng dụng là một hệ thống xử lý giao dịch tốc độ cao hay Website dung lượng lớn phục vụ hàng triệu yêu cầu mỗi ngày, MySQL cũng có thể đáp ứng khả năng xử lý những đòi hỏi khắt khe nhất của bất kì hệ thống nào Với các tiện ích tải tốc độ cao, đặc biệt là khả năng xử lý Caches và các cơ chế xử lý nâng cao khác, MySQL cung cấp tất cả các tính năng cần phải có cho các hệ thống doanh nghiệp
c Có thể sử dụng ngay
Sự đáng tin cậy cao là tiêu chuẩn của MySQL MySQL đưa ra nhiều tùy chọn từ cấu hình C/S tốc độ cao, cho phép các nhà phân phối bên thứ 3 đưa ra những giải pháp tích hợp trên Server cơ sở dữ liệu MySQL
Trang 17d Hỗ trợ giao dịch mạnh
MySQL cung cấp một trong số những Engine thao tác cơ sở dữ liệu mạnh nhất trên thị trường, bao gồm hỗ trợ giao dịch ACID, không hạn chế số bản ghi, khả năng phân loại và hỗ trợ giao dịch đa dạng Multi-version Tính toàn vẹn của dữ liệu cũng được bảo đảm trong suốt quá trình Server hoạt động
e Lưu trữ Data đáng tin cậy
MySQL đạt chuẩn cho các Website phải trao đổi dữ liệu thường xuyên vì nó có Engine xử lý tốc độ cao, khả năng chèn dữ liệu nhanh và hỗ trợ mạnh đối với các chức năng tìm kiếm Những tính năng này cũng được áp dụng cho môi trường lưu trữ dữ liệu đến mức hàng terabytes của MySQL
f Chế độ bảo mật dữ liệu mạnh
Vì bảo mật dữ liệu là công việc số một của các chuyên gia về cơ sở dữ liệu, MySQL đưa ra tính năng bảo mật đặc biệt chắc chắn Trong quá trình xác thực quyền truy cập cơ sở dữ liệu, MySQL cung cấp các kĩ thuật mạnh mà chắc chắn chỉ có người
sử dụng đã được phân quyền mới có thể truy nhập được vào Server lưu trữ cơ sở dữ liệu SSH và SSL cũng được hỗ trợ để các kết nối được an toàn và bảo mật Một đối tượng Framework được đưa ra để chỉ có người sử dụng có quyền mới thao tác được dữ liệu Tiện ích Backup và Recovery cung cấp bởi MySQL và các hãng phần mềm thứ 3 cho phép Backup mức Logic và vật lý cũng như Recovery toàn bộ dữ liệu hoặc dữ liệu tại một thời điểm nào đó
g Phát triển đa dạng các phương thức
Một trong số các lý do khiến cho MySQL là cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới là nó cung cấp đa dạng các phương thức thao tác dữ Cơ sở dữ liệu MySQL hỗ trợ Stored procedure, Trigger, Function, View, Cursor, ANSI-standard SQL và nhiều phương thức nữa Thư viện Plug-in sẵn sàng để nhúng cơ sở dữ liệu MySQL và hỗ trợ trong bất kì ứng dụng nào MySQL cũng cung cấp các bộ kết nối như ODBC, JDBC cho tất cả các Form của ứng dụng sử dụng MySQL
h Dễ dàng quản lý
MySQL trình diễn khả năng cài đặt nhanh đặc biệt với thời gian trung bình từ lúc Download phần mềm đến khi cài đặt hoàn thành chỉ mất chưa đầy 15 phút, cho dù Platform là Microsoft Windows, Linux, Macintosh hay Unix Khi đã được cài đặt, tính năng tự quản lý như tự động mở rộng không gian, tự khởi động lại và cấu hình động sẵn sàng cho người quản trị cơ sở dữ liệu làm việc MySQL cũng cung cấp công cụ quản lý dạng giao diện đồ họa cho phép một DBA quản lý, cấu hình và điều khiển hoạt động của nhiều Server MySQL từ một máy tính Nhiều công cụ của các hãng phần mềm thứ 3 cũng có sẵn trong MySQL để cung cấp tính năng này
Trang 18i Mã nguồn mở tự do và hỗ trợ 24/7
Nhiều công ty lưỡng lự trong việc giao phó toàn bộ cho phần mềm mã nguồn mở
vì họ không thể tìm được sự hỗ trợ hay hệ thống phục vụ chuyên nghiệp Họ tin vào phần mềm có bản quyền, nhưng những lo lắng của họ có thể được dẹp bỏ với MySQL
j Tổng chi phí thấp nhất
Bằng cách sử dụng MySQL cho các dự án phát triển mới, người dùng đang thấy
rõ được việc tiết kiệm chi phí Tính tin cậy và dễ duy trì của MySQL ở mức trung bình
và người quản trị cơ sở dữ liệu không phải mất nhiều thời gian cho các thao tác quản trị
2.1.2 Truy xuất hệ Quản trị cơ sở dữ liệu MySQL
Về mặt kỹ thuật, Term cơ sở dữ liệu có tác động đến file hoặc một nhóm các file lưu giữ dữ liệu có thật Dữ liệu được truy cập bằng việc sử dụng một tập hợp các chương trình được gọi là DBMS (Database Management System) Hầu như toàn bộ DBMS hiện nay đang là các RDBMS (Relational Database Management Systems - Các hệ thống quản trị cơ sở dữ liệu quan hệ), trong đó dữ liệu được tổ chức và lưu trữ trong một bộ các bảng có liên quan MySQL cũng là RDBMS vì nó đặc biệt phù hợp với các Website
Để cơ sở dữ liệu trở nên có ích, cần phải chuyển được dữ liệu vào và ra khỏi đó Các chương trình là các công cụ thực hiện điều này vì chúng tác động vào cơ sở dữ liệu để lưu giữ và truy xuất dữ liệu Một chương trình kết nối với cơ sở dữ liệu và đưa
ra yêu cầu “Hãy lấy dữ liệu này và lưu trữ ở vị trí chỉ định” trong khi một chương trình khác lại đưa một yêu cầu “Hãy tìm một dữ liệu chỉ định và đưa nó ra” Các chương trình ứng dụng có tác động lên cơ sở dữ liệu đang chạy khi người sử dụng tác động lên trang Web Ví dụ, khi người sử dụng ấn vào nút Submit sau khi đã điền vào các Form, chương trình liền “chế biến” thông tin trong Form đó và lưu nó trong cơ sở dữ liệu MySQL là một RDBMS tốc độ nhanh và dễ sử dụng dùng cho các cơ sở dữ liệu trên các Website Tốc độ là điểm tập trung chính của các nhà lập trình từ khi bắt đầu Mặc dù MySQL có ít tính năng hơn các đối thủ thương mại của nó thì nó có toàn bộ các tính năng cần thiết cho bộ phận quan trọng các lập trình viên cơ sở dữ liệu Dễ dàng hơn khi cài đặt và sử dụng so với các đối thủ cạnh tranh thương mại của mình và
sự khác biệt về giá là thế mạnh của MySQL MySQL được phát triển, phân phối và được hỗ trợ bởi MySQL AB, một công ty Thuỵ điển MySQL được phổ biến theo 2 cách:
- Phần mềm nguồn mở: MySQL phổ biến qua GNU GPL và không mất phí Bất cứ ai đáp ứng được các yêu cầu của GPL đều có thể sử dụng phần mềm một cách miễn phí MySQL được sử dụng miễn phí như một cơ sở dữ liệu trên Website
Trang 19- Bản quyền thương mại: MySQL phổ biến với giấy phép đăng ký thương mại đối với những ai coi trọng nó hơn GPL Nếu lập trình viên muốn sử dụng MySQL như một phần của sản phẩm phần mềm và muốn bán sản phẩm hơn là công bố nó dưới GPL, lập trình viên cần phải mua bản quyền thương mại Giá mua bản quyền rất hợp lý
Tìm kiếm hỗ trợ kỹ thuật đối với MySQL không phải là vấn đề Người thiết kế
có thể tham gia vào một trong các cuộc thảo luận qua e-mail được cung cấp trên Website MySQL và có thể tìm kiếm các các câu hỏi và trả lời về MySQL
a Các ưu thế của MySQL
MySQL là cơ sở dữ liệu phù hợp với các lập trình viên Web Tốc độ và kích cỡ nhỏ làm cho nó trở nên lý tưởng đối với Website Thực tế nó chính là một chương trình mã nguồn mở và đây chính là cơ sở giải thích cho tính phổ biến của nó Các ưu điểm của MySQL:
tốc độ nên phần mềm được thiết kế ngay từ đầu với tốc độ trong ý tưởng
cho đăng ký thương mại rất hợp lý
bằng cách sử dụng một câu lệnh ngôn ngữ SQL, đây là ngôn ngữ tiêu chuẩn
để liên lạc với các RDBMS
rộng các hệ điều hành khác nhau như Windows, Linux, Mac OS, Unix (trong đó có Solaris, AIX và DEC UNIX), FreeBSD, OS/2, Irix và các hệ khác
trợ miễn phí qua E-mail Các nhà lập trình MySQL tham gia vào các danh sách E-mail hỗ trợ Có thể mua hỗ trợ kỹ thuật từ MySQL AB với mức phí rất nhỏ
toàn bộ các đặc quyền cơ sở dữ liệu (Ví dụ quyền tạo lập cơ sở dữ liệu hoặc xoá dữ liệu) đối với người sử dụng riêng biệt hoặc các nhóm người sử dụng Các mật khẩu được mã hoá
triệu dòng hoặc hơn Kích thước file xác lập mặc định giới hạn đối với bảng
Trang 20là 4 GB, nhưng có thể tăng file này lên giới hạn lý thuyết là 8 triệu TB nếu
hệ điều hành có thể quản lý được
người làm chương trình có thể sửa đổi phần mềm MySQL để phù hợp với các môi trường đặc trưng
b Hoạt động của MySQL
Phần mềm MySQL gồm có máy chủ MySQL, một vài các chương trình tiện ích
có trên bộ phận quản trị của cơ sở dữ liệu MySQL và một số phần mềm hỗ trợ mà MySQL Server cần thiết Trọng tâm của hệ thống là MySQL Server
MySQL Server điều hành hệ thống cơ sở dữ liệu Nó điều hành toàn bộ các chỉ dẫn cơ sở dữ liệu Nếu muốn tạo ra một cơ sở dữ liệu mới, phải gửi một thông điệp cho MySQL Server với nội dung “hãy tạo một cơ sở dữ liệu và gọi nó là newdata” Sau đó MySQL Server tạo một từ điển phụ trong từ điển dữ liệu của nó với tên là newdata Cùng một phương thức đó, để bổ xung dữ liệu cho cơ sở dữ liệu phải gửi một
“thông điệp chào” MySQL Server, cung cấp cho nó dữ liệu và yêu cầu bổ xung dữ liệu vào nơi cần thiết
Trước khi đi qua các hướng dẫn cho các MySQL Server cần phải chạy và chờ các yêu cầu MySQL Server thường được thiết lập vì vậy mà nó sẽ được bắt đầu khi máy tính khởi động và chạy liên tục Đây là bước Setup bình thường đối với Website Tuy nhiên, không cần thiết phải buộc nó hoạt động ngay khi máy tính được khởi động
Ta có thể bắt đầu từ bất cứ lúc nào muốn truy cập vào cơ sở dữ liệu Khi chạy, MySQL Server vẫn tiếp tục nghe các thông điệp hướng trực tiếp vào nó
c Các kiểu dữ liệu MySQL
MySQL lưu trữ thông tin trong các dạng thức khác nhau dựa trên kiểu thông tin MySQL cho phép các kiểu dữ liệu khác nhau được sử dụng trong các cách khác nhau Các kiểu dữ liệu chính là dữ liệu ký tự, dữ liệu phông chữ và dữ liệu thời điểm/thời gian
Trang 21 Dạng thức độ dài cố định: Trong dạng thức này, MySQL dự trữ một khoảng trống cố định dành cho dữ liệu Nếu dữ liệu dài hơn độ dài cố định, chỉ có các ký tự phù hợp mới được lưu, các ký tự còn lại không được lưu Nếu chuỗi ký tự lại ngắn hơn độ dài cố định, các khoảng trống bị bỏ phí
Dạng thức có độ dài khác nhau: Trong dạng thức này, MySQL lưu trữ chuỗi
ký tự trong lĩnh vực có cùng độ dài như chuỗi ký tự Người thiết kế vẫn định
rõ độ dài của chuỗi ký tự, nhưng nếu chuỗi này ngắn hơn độ dài đã định MySQL chỉ sử dụng khoảng trống đã yêu cầu hơn là bỏ trống khoảng thêm
đó Nếu chuỗi ký tự dài hơn khoảng được định rõ, các ký tự thêm không được lưu lại
Nếu sự khác nhau về độ dài chuỗi ký tự chỉ chút ít, hãy sử dụng dạng thức độ dài
cố định Tuy nhiên, nếu chuỗi ký tự có thể biến đổi nhiều hơn vài ký tự, hãy sử dụng dạng thức độ dài biến đổi để lưu khoảng trống
Dữ liệu số
Một kiểu dữ liệu chung khác nữa là dữ liệu bằng số hay nói cách khác dữ liệu được lưu như số Các số thập phân có thể được lưu như số nguyên Khi dữ liệu lưu như số, nó có thể được sử dụng trong các tính toán như cộng, trừ, bình phương Nếu như dữ liệu không được sử dụng cho các tính toán dạng số, việc lưu trữ nó như chuỗi
ký tự là tốt nhất vì lập trình viên sẽ sử dụng nó như một chuỗi ký tự
MySQL lưu các số dương và âm nhưng có thể ra lệnh cho MySQL lưu chỉ các số dương Nếu dữ liệu chỉ là số âm, hãy lưu dữ liệu như số không dấu
Dữ liệu Thời điểm và thời gian
Kiểu dữ liệu chung thứ ba là dữ liệu thời điểm và thời hạn Dữ liệu được lưu như thời hạn có thể được trình bày trong các loại dạng thức thời hạn khác nhau Nó có thể được sử dụng để xác định độ dài của thời gian giữa hai thời điểm hoặc hai thời hạn hoặc giữa thời điểm hoặc thời gian đặc trưng và thời điểm hoặc thời gian bất kỳ
Dữ liệu liệt kê
Đôi khi dữ liệu chỉ có một giới hạn các giá trị, ví dụ các giá trị là có hoặc không MySQL cung cấp loại dữ liệu được gọi là bảng liệt kê được sử dụng với loại dữ liệu này Yêu cầu MySQL các giá trị nào có thể được lưu trữ trong cột và MySQL sẽ không lưu bất cứ các giá trị nào khác trong cột
d Tên loại dữ liệu MySQL
Khi tạo ra cơ sở dữ liệu, lập trình viên lệnh cho MySQL loại dữ liệu nào có thể
có trong cột đặc biệt bằng việc sử dụng các tên MySQL dành cho các loại dữ liệu
Trang 22Bảng sau đây cho thấy các kiểu dữ liệu MySQL được sử dụng đa số là trong các ứng dụng cơ sở dữ liệu
Các kiểu dữ liệu MySQL
VARCHAR(length) Chuỗi ký tự độ dài biến đổi Chuỗi ký tự dài nhất có
thể được lưu là length, nó có thể giữa 1 và 255
TEXT Chuỗi ký tự có độ dài biến đổi với độ dài tối đa là
64KB các dòng text
có thể được hiển thị là giới hạn về độ dài Ví dụ, nếu
độ dài là 4, chỉ có các số từ -999 đến 999 có thể được thể hiện, mặc dù các con số cao hơn được lưu giữ
INT(length) UNSIGNED Số nguyên từ 0 đến 4294967295 Độ dài là kích thước
của chữ số có thể được hiện thị Ví dụ, nếu độ dài là
4, chỉ có các con số đến 9999 có thể được hiển thị, mặc dù các con số cao hơn có thể được lưu
DECIMAL(length.doc) Số thập phân nơi length là số lượng các ký tự có thể
được sử dụng để hiển thị số gồm các điểm, các dấu hiệu, các số mũ và dec là số tối đa các vị trí thập phân được cho phép Ví dụ, 12.34 có độ dài là 5 và thập phân là 2
bày giá trị như YYYY-MM-DD (ví dụ, 2001-04-03) TIME Giá trị thời gian với giờ, phút và giây Các display
như HH:MM:SS
display như YYYY-MM-DD HH:MM:SS
ENUM (“vall.”val2” ) Chỉ các giá trị được liệt kê có thể được lưu Tối đa
các giá trị 65535 có thể được liệt kê
2.1.3 Những cú pháp cơ bản của MySQL
- Cú pháp tạo 1 cơ sở dữ liệu: CREATE DATABASE tên_cơ_sở_dữ_liệu;
Trang 23- Cú pháp sử dụng cơ sở dữ liệu: Use tên_database;
- Cú pháp thoát khỏi cơ sở dữ liệu: EXIT
- Cú pháp tạo 1 bảng trong cơ sở dữ liệu:
CREATE TABLE user (<tên_cột> <mô_tả>,…,<tên_cột_n>… <mô_tả_n>)
Ví dụ: create table user(user_id INT(15) UNSIGNED NOT NULL
AUTO_INCREMENT, username VARCHAR(255) NOT NULL, password CHAR(50) NOT NULL, email VARCHAR(200) NOT NULL, PRIMARY KEY (user_id));
- Hiển thị có bao nhiều bảng: SHOW TABLES;
- Hiển thị có bao nhiêu cột trong bảng: SHOW COLUMNS FROM TABLE;
- Thêm 1 cột vào bảng:
ALTER TABLE tên_bảng ADD <tên_cột> <thuộc_tính> AFTER <tên_cột>
Ví dụ: alter table user add age varchar(200) NOT NULL after email;
- Thêm giá trị vào bảng:
INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng);
Ví dụ: insert into user(username,password,email,age,home)
values(“Lanna”,”12345″,”lanna@yahoo.com”,”F”,”www.abc.com”);
- Truy xuất dữ liệu:
SELECT tên_cột FROM Tên_bảng;
Ví dụ: select user_id,username from user;
- Truy xuất dữ liệu với điều kiện:
SELECT tên_cột FROM Tên_bảng WHERE điều kiện;
Ví dụ: select user_id,username from user where user_id=2;
- Truy cập dữ liệu và sắp xếp theo trình tự
SELECT tên_cột FROM Tên_bảng
WHERE điều kiện (có thể có where hoặc không)
ORDER BY Theo quy ước sắp xếp
Trong đó quy ước sắp xếp bao gồm hai thông số là ASC (từ trên xuống dưới), DESC (từ dưới lên trên)
Trang 24Ví dụ: select user_id,username from user order by username ASC ;
- Truy cập dữ liệu có giới hạn :
SELECT tên_cột FROM Tên_bảng
WHERE điều kiện (có thể có where hoặc không)
LIMIT vị trí bắt đầu, số record muốn lấy ra
Ví dụ: select user_id,username from user order by username ASC limit 0,10 ;
- Cập nhật dữ liệu trong bảng:
UPDATE tên_bảng SET tên_cột=Giá trị mới
WHERE (điều kiện)
Nếu không có ràng buộc điều kiện, chúng sẽ cập nhật toàn bộ giá trị mới của các record trong bảng
Ví dụ: update user set email=”admin@abc.com” where user_id=1 ;
- Xóa dữ liệu trong bảng:
DELETE FROM tên_bảng WHERE (điều kiện)
Nếu không có ràng buộc điều kiện, chúng sẽ xó toàn bộ giá trị của các record trong bảng
Ví dụ: delete from user where user_id=1 ;
2.1.4 So sánh MySQL với MSSQL
MySql phiên bản 4.x không thể so với MSSQL vì phiên bản này thiếu khá nhiều tính năng quan trọng để được xếp loại là một CSDL cao cấp (ví dụ như thiếu ứng dụng
Trang 25View, StoreProc, Triggers…) Để công bằng nên thử so sánh MySql 5.x và MSSQL
2005
a Tính năng
MySQL hơn MSSQL ở tính năng cung cấp nhiều loại Sorage Engine Tuy nhiên
về mặt tích hợp chặt chẽ cho trọn bộ hệ thống và công cụ phát triển Software thì MSSQL tốt hơn MySQL, đặc biệt ở mảng ứng dụng NET MSSQL còn hỗ trợ XML trực tiếp trong DB, trong khi đó thì MySQL chưa làm được Các chức năng cần thiết như View, Store Procedure, Trigger thì cả hai tương đương nhau
b Hiệu suất
Tính về mặt hiệu suất, có rất nhiều thử nghiệm cho rằng MSSQL có Performance kém hơn MySQL nhiều mặt MSSQL đòi hỏi tài nguyên rất lớn (CPU mạnh, nhiều RAM…), nếu không nó rất ì ạch MySQL không đòi hỏi nhiều như MSSQL MySQL
có thể chạy trên các hệ thống UNIX và có Performance tốt hơn hẳn MSSQL trên hệ thống Windows Server trong nhiều trường hợp
c Bảo mật
MSSQL qua mặt MySQL về tính bảo mật ở mức Column Level MySQL chỉ có thể đặt quyền truy nhập (Set Access) đến Row Level là hết Hệ thống xác thực người dùng của MSSQL cũng qua mặt MySQL Tuy vậy, vbefe mặt bảo mật thì MSSQL dễ
bị khai thác hơn MySQL bởi MSSQL tích hợp quá chặt vào hệ điều hành Lỗi của hệ điều hành hoặc một bộ phận nào đó dẫn đến việc MSSQL bị khai thác nhanh hơn MySQL
d Khả năng nhân bản (Replication)
Cả hai đều có khả năng Replicate hoặc cung cấp phương tiện để làm việc này Tuy nhiên, MySQL nhanh hơn và ít sự cố hơn MSSQL vì tất cả các SQL Statements dùng để thay đổi, cập nhật dữ liệu được lưu giữ trong Binary_log MSSQL cung cấp nhiều phương pháp Replicate cao cấp hơn, chi tiết hơn bởi thế nó phức tạp hơn và chậm hơn
e Khả năng phục hồi (Recovery)
Nếu MySQL chạy thuần túy với MyISAM Storage Engine thì khả năng phục hồi (sau khi bị Crash) không cách gì so sánh được với MSSQL Tuy nhiên nếu MySQL chạy với Innodb Engine thì khả năng phục hồi không thua kém gì MSSQL Ngoài ra, khả năng phục hồi còn được xét ở mức độ liên quan đến khả năng nhân bản (Replication) ở trên Bởi vì MSSQL cung cấp nhiều phương thức nhân bản nên việc phục hồi dữ liệu trên MSSQL dễ dàng hơn
f Chi phí
Trang 26Bản MySQL Community không mất phí Việc cài đặt, sử dụng và tối ưu hóa MySQL không khó vì tài liệu của nó rất đầy đủ, thông tin về MySQL tràn ngập trên Web So với MSSQL, người dùng phải trả gần 1,5 ngàn đô la cho 1 License MSSQL Standard và khi cần Support phải trả thêm tiền Microsoft vẫn cung cấp bản MSSQL không thu phí dành cho mục đích Development Tài liệu về MSSQL cũng rất nhiều trên mạng Bản MySQL Enterprise thì phải trả tiền (khoảng 400 đô la) nhưng được Support đầy đủ
2.2.1 Giới thiệu về Web Services
Web Services là các phần mềm ứng dụng dùng XML để trao đổi dữ liệu với các ứng dụng khác trên các máy tính khác sử dụng giao thức Internet Web Services hoạt động trên cả Internet và Intranet để thực hiện các mục tiêu cụ thể, gọi các thủ tục hoặc hàm mà các ứng dụng khác gọi tới hoặc sử dụng Các Request có thể được gửi và phản hồi giữa các ứng dụng khác nhau trên các máy tính khác nhau
XML Web Services được xây dựng dựa trên 4 thành phần cơ bản là:
- XML: miêu tả dữ liệu và ngôn ngữ lập trình
- SOAP: cấu trúc khung cho thông điệp
- WSDL: công cụ để mô tả thủ tục tương tác
- UDDI: công cụ để xuất ra các Services
Các thành phần trên tạo thành một tập các đặc điểm cơ bản cung cấp nền tảng cho các ứng dụng tích hợp Việc sử dụng Web Services được xác định bởi WC3 là phần chuẩn hoá mà XML, SOAP và WSDL là các thành phần bắt buộc còn UDDI là tuỳ chọn
Trang 27Không có sự ràng buộc nào về cách xác định Web Services, đặc biệt trong mối quan hệ giữa các hoạt động của các Web khác nhau Người ta đưa ra các quan điểm sau:
Web-based Services là tất cả các hình thức trao đổi dữ liệu qua Web
Web Services Technologies là WSDL, SOAP và UDDI
Web Services là các Web-based Services được bổ sung với các Web Services Technology
Một số yêu cầu cơ bản đối với Web Services:
2.2.2 Các thành phần của Web Services
a XML (Extensible Markup Language)
Là ngôn ngữ để tạo ra tất cả các hỗ trợ Web Services, điều này có nghĩa là các thông điệp được viết bằng XML là tốt nhất Các thông điệp với các ngôn ngữ khác nhau có thể trao đổi sử dụng Web Services
b WSDL (Web Services Description Language)
WSDL là tài liệu được viết bằng XML mô tả một Web Service Nó chỉ rõ vị trí của Service, các phương thức mà Service hỗ trợ hoặc các yêu cầu Nó cung cấp tất cả các đặc điểm để cho việc sử dụng Web Services có hiệu quả WSDL được xác định qua:
Các giao diện Web Services
Kiểu dữ liệu và thông điệp
Mô hình tương tác
Giao thức liên kết
Cần một định dạng chuẩn hoặc cú pháp là điều cần thiết để đáp ứng các yêu cầu
sử dụng Web Service Các tài liệu WSDL chứa một tập các định nghĩa để xác định
Trang 28một Web Service và các yêu cầu liên quan tới việc sử dụng nó Một tài liệu WSDL xác định một Web Service sử dụng những thành phần chính sau:
Thành phần Định nghĩa
<portType> Phương thức được thực hiện bởi Web Service
<message> Thông điệp được sử dụng bởi Web Service
<types> Kiểu dữ liệu được sử dụng bởi Web Service
<binding> Giao thức liên lạc sử dụng Web Service
Cấu trúc chính của một tài liệu WSDL như sau:
Trang 29Một tài liệu WSDL còn có thể có một số thành phần khác như các thành phần mở rộng hoặc các thành phần dịch vụ để có thể tạo nên một nhóm các định nghĩa của nhiều Web Services trong một tài liệu WSDL
WSDL Port: <portType> là thành phần WSDL quan trọng nhất Nó định nghĩa một Web Service, các phương thức có thể thực hiện và các thông điệp liên quan Port định nghĩa các điểm kết nối tới một Web Service Nó có thể ví như thư viện các hàm
và mỗi hoạt động có thể so sánh với một hàm trong các ngôn ngữ lập trình truyền thống
WSDL Message: <message> định nghĩa các thành phần dữ liệu Mỗi thông điệp
có thể gồm một hoặc nhiều phần Các phần có thể ví như các tham số của một hàm được gọi trong các ngôn ngữ lập trình
WSDL Types: <types> định nghĩa kiểu dữ liệu được dùng trong Web Service Đối với các Platform độc lập, WSDL sử dụng cú pháp giản đồ XML (XML Schema)
để định nghĩa các kiểu dữ liệu
Trang 30WSDL Bindings: <binding> định nghĩa dạng thông điệp và các tham số chi tiết của giao thức cho mỗi Port WSDL Port mô tả giao diện đưa ra bởi Web Service Đây
là sự kết hợp giữa một Web Service và các yêu cầu truyền thông của nó WSDL Bindings định nghĩa định dạng thông điệp và các chi tiết về giao thức cho một Web Service Một Web Service có thể hỗ trợ nhiều WSDL Bindings để đưa ra giao diện nhưng mỗi Bindings chỉ có thể truy nhập tại một địa chỉ duy nhất xác định bởi URI Operation Types: Request-Response là phương thức hoạt động chính tuy nhiên WSDL cũng định nghĩa 4 phương thức khác nhau:
One-way Phương thức nhận một thông điệp nhưng không trả lời
Request-response Phương thức nhận và trả lời một thông điệp
Solicit-response Phương thức gửi thông điệp và đợi trả lời
Notification Phương thức gửi thông điệp nhưng không đợi trả lời
c SOAP (Simple Object Access Protocol)
Các thông tin SOAP định nghĩa một khung cho việc truyền thông của Web Services và được bản đồ hoá tới HTTP Nó cũng cung cấp các định dạng để truyền các tài liệu XML qua mạng và quy ước việc gọi các thủ tục từ xa SOAP có thể được sử dụng với bất kỳ giao thức nào như TCP, HTTP, SMTP thậm chí cả MSMQ Tuy nhiên liên kết giao thức cũng cần được định nghĩa cho mỗi môi trường Các thông tin SOAP còn cung cấp một khung linh hoạt cho việc định nghĩa liên kết giao thức duy nhất như việc cung cấp một liên kết rõ ràng cho HTTP từ khi nó được sử dụng rộng rãi
Nó là một ngôn ngữ đánh dấu đơn giản trong việc mô tả các thông điệp giữa các ứng dụng Nó cung cấp cách thức để phát triển, kết hợp các ứng dụng và các hoạt động qua Web hoặc Intranet bằng cách đưa ra các Platform và ngôn ngữ lập trình độc lập để tạo ra hệ thống tích hợp các Web Services SOAP khá đơn giản, dễ phát triển và tương thích với hệ điều hành, ngôn ngữ lập trình hoặc Platform Nó được viết bởi nhiều phần nhưng Envelope và Body là bắt buộc phải có:
- Envelope: xác định nơi mở đầu và kết thúc một thông điệp
- Header: chứa các thuộc tính của thông điệp được sử dụng
- Body: chứa mã XML
- Attachments: bao gồm các nội dung đính kèm vào phần chính của thông điệp
Trang 31- RPC Interaction: xác định cách thức RPC (Remote Procudure Call) tương tác với SOAP
- Encoding: xác định cách dữ liệu được truyền trong thông điệp
d UDDI (Universal Directory, Discovery, Interchange)
Đây là một cấu trúc để định nghĩa những XML-based Registry nào có thể đưa các thông tin về nó Một XML-based Registry chứa tên của nhà cung cấp và mô tả về các khả năng của dịch vụ được cung cấp Các XML Registry dựa trên UDDI cung cấp một vùng để quảng bá về nó và các Web Services Việc sử dụng UDDI là tuỳ chọn
2.2.3 Mô hình Web Services
a Khái niệm
Web Services đã trở thành tập các công nghệ mới nhằm cung cấp mô hình hướng dịch vụ qua Internet Nó cung cấp cách thức gọi các dịch vụ được cung cấp bởi các ứng dụng và giao thức tiêu chuẩn Tập trung vào tính độc lập của Platform, các Web Services đã chuyển tiềm năng ban đầu là khả năng tác nghiệp lẫn nhau và tính linh động của các ứng dụng thành việc hiện thực hoá sự kết nối qua lại các hệ thống hiện
có để trao đổi thông điệp Do vậy các nỗ lực quan trọng nhất hiện nay là nhằm phát triển lĩnh vực này
Chúng ta cần xem xét tổng quát các công nghệ cần thiết đối với Web Services và các định nghĩa, các biện pháp và các khái niệm có liên quan Chúng ta cũng cần xem xét các hỗ trợ dành cho các tiến trình và tích hợp các đặc điểm bổ sung mới Web Services là tập các công nghệ mới kết nối lẫn nhau là phương tiện để tăng cường các khả năng của các nhà lập trình để lập trình các ứng dụng dành cho Internet Nó cung cấp một mô hình cho việc liên lạc giữa các ứng dụng qua các giao thức đơn giản và các dạng thức như HTTP, XML (Extensible Markup Language) và SOAP (Simple Object Access Protocol) trong khi các ứng dụng không cần biết về sự thực hiện các dịch vụ chúng gọi tới ngoài sự tồn tại của chúng và các giao diện của chúng Các Web Services riêng biệt là độc lập Platform và cũng độc lập với nhau
XML là tiêu chuẩn làm cho nó có thể vận dụng tự động, xử lý dữ liệu và chia tách nội dung với việc thể hịên, đây là một trong các đặc điểm cốt lõi SOAP ngược lại cho phép gọi từ xa qua việc sử dụng XML và cung cấp tính linh hoạt
SOAP làm nền tảng và đánh dấu sự khởi đầu Web Services vào năm 2000 và
2001 Đầu tiên, tập các công nghệ mới này được nhìn nhận như một giải pháp cuối cùng cho việc thoả thuận trên các tiêu chuẩn đối với Middleware như một sự mở đầu cho sự tương tác và tính khả chuyển của các ứng dụng và các hệ thống Tuy nhiên, các chính sách và các xung đột doanh nghiệp tránh cho điều này không xảy ra và vẫn còn
Trang 32một thoả thuận về SOAP và cách miêu tả Web Services, tuy nhiên các giá trị của chúng và các khu vực ứng dụng đã đi theo các hướng khác nhau
Tuy nhiên, Web Services đưa ra công nghệ có thể tồn tại được Nó được sử dụng chính trong việc tích hợp các hệ thống hiện có với nhau hơn là cung cấp giải pháp để thay thế J2EE hay CORBA Điều này phù hợp với ý tưởng quản trị và điều hành các tính chất không đồng nhất hơn là nỗ lực vượt qua đặc điểm thường thấy của các hệ thống máy tính
b Mô hình Web Service: Công nghệ và các định nghĩa
Nói chung, Web Service có thể dựa trên khái niệm là Module ứng dụng hay phần mềm cung cấp các dịch vụ qua Internet, độc lập về ngôn ngữ mà nó dùng hoặc Platform mà nó chạy trên đó Định nghĩa chính thức hơn và trọn vẹn hơn của Web Services có thể được thấy trong “Web Services Conceptual Architecture (WCSA 1.0)” của IBM Software Group “Web Services là giao diện miêu tả tập hợp các hoạt động có thể truy cập mạng thông qua thông điệp chuẩn hoá XML để được sử dụng độc lập với
Platform trên đó nó được thực hiện và độc lập về ngôn ngữ lập trình” Đây không phải
là định nghĩa hoàn chỉnh và được đề cập một cách vừa đủ trên toàn bộ khái niệm của
Web Services
Mô hình
Trong Web Services, 3 thực thể cơ sở được xác định là cung cấp dịch vụ (Service Provider), yêu cầu dịch vụ (Service Requestor) và đăng ký dịch vụ (Service Registry) Service Provider sẽ host dịch vụ, tạo ra giao diện của nó và mô tả dịch vụ có mặt như
đã đề cập ở trên Web Service được đăng ký với Service Registry bằng cách gửi mô tả dịch vụ, sau đó nó sẽ được xuất ra Mô tả dịch vụ này chứa toàn bộ thông tin cần thiết dành cho Service Requestor để phát hiện và sử dụng dịch vụ, bao gồm các loại dữ liệu
sử dụng, các hoạt động có thể tiến hành, thông tin ràng buộc để thiết lập kết nối và việc định vị trí dịch vụ trên mạng Service Registry có thể được tìm thấy bởi nhiều Service Requestor khác nhau trên trên cơ sở các thông tin Universal Description, Discovery, Integration (UDDI) Service Registry có thể thậm chí được hoàn thành bằng việc môi giới Web Services có thể là một Service Requestor, gọi các Web Services khác nhằm thực hiện các mục tiêu của mình Điều này cho thấy vai trò của Service Requestor và Service Provider có thể thay đổi lẫn nhau Hơn nữa, Web Services Definition Language (WSDL) là ngôn ngữ được dùng để xác định các giao diện và các cơ chế được sử dụng trong liên lạc trong mô hình Web Services
Trang 33Mô hình trên là cách nhìn dựa trên khái niệm của mô hình Web Services, nơi mà Service Registration, Service Discovery và Binding là 3 hoạt động cốt yếu đã được đề cập Hơn nữa, chúng ta có thể phân biệt giữa Web Service được miêu tả trong phần mô
tả dịch vụ và chính nó được host bởi Service Provider, mặc dù điều này có liên hệ chặt chẽ
Đăng ký Service - Xuất bản một Service
Các miêu tả dịch vụ có thể tự động sinh ra bởi các công cụ dựa trên Meta-data từ
mô hình lập trình trong việc sử dụng và triển khai Web Service Chúng có thể tồn tại trước, được bổ sung bằng các mô tả dịch vụ khác đang tồn tại hoặc thậm chí được viết code trực tiếp mặc dù lựa chọn này không được coi trọng
Một khi được tạo nên, miêu tả dịch vụ cần được xuất bản Các phương pháp đã
sử dụng một danh mục bao gồm cả động và tĩnh để miêu tả dịch vụ có thể được xuất bản cho một hoặc nhiều việc đăng ký phụ thuộc vào phạm vi tác nghiệp Biện pháp đơn giản nhất để sử dụng là xuất bản trực tiếp qua E-mail, FTP hoặc yêu cầu như HTTP GET Bước tiếp theo dựa trên thang đánh giá động dẫn đến việc sử dụng mã tự động để thu được các mô tả dịch vụ từ địa chỉ mạng được xác định trước Để hoạt động được tăng cường, Cache mô tả dịch vụ Local bao gồm các năng lực tìm kiếm mở rộng có thể được tận dụng Cuối cùng, để nối các máy chủ trong toàn bộ tổ chức hoặc doanh nghiệp, các UDDI Node riêng hoặc UDDI Node điều khiển có thể được sử
Trang 34dụng Các kiểu Node có thể cho phép tạo ra phạm vi rộng hơn để phát hiện dịch vụ, dựa trên các thông tin về Domain Các loại Node đặc trưng bao gồm:
Internal Enterprise Application UDDI Node
- Trong mạng nội bộ doanh nghiệp
- Cho phép kiểm soát bên trong qua các yêu cầu truy cập, xuất bản và tính sẵn sàng
Portal UDDI Node
- Cho các mạng doanh nghiệp đối tác, cho phép phát hiện ra một số dịch vụ
- Kiểm soát truy cập, QoS của UDDI Node được duy trì
Partner Catalog UDDI Node
- Tương tự với Portal nhưng chỉ dành cho các doanh nghiệp đối tác đáng tin tưởng, đặc biệt
- Có khả năng chuyên biệt hoá, biến đổi ngữ cảnh và Meta-data của Web Services cho phù hợp với các đặc trưng của đối tác
E-Marketplace UDDI Node
- Service dựa trên loại chuẩn công nghiệp
- Cho phép cạnh tranh giữa các Service Provider
- Bao gồm việc lọc và bảo đảm QoS
UDDI Operator Node
- Mang tính tác nghiệp chung, cho phép khôi phục các đối tác tiềm năng
- Cần thực hiện ngữ cảnh và các nguyên tắc phân loại được chỉ định
Phát hiện Service - Tìm kiếm Service
Làm thế nào để có được mô tả cho Service tuỳ thuộc vào phương pháp xuất Service ra, bổ xung Service và sự linh hoạt của Service Các Service có thể được xác định bởi kiểu giao diện hỗ trợ khi thiết kế một ứng dụng hoặc bởi cách thức liên lạc hay chất lượng của Service khi chạy Khối lượng công việc cần tiền xử lý được thi hành bởi Service Requestor tuỳ thuộc vào kiểu Service Registry được gọi Chẳng hạn, các UDDI Node trong có thể không bị yêu cầu bất kỳ hành động kiểm tra về an ninh nào từ Service trong khi các UDDI Node ngoài sẽ phải thực hiện điều này Vì vậy Service có thể được lựa chọn dựa vào mức độ hỗ trợ gắn kết, ưu tiên thực hiện, mức
QoS, trạng thái hoặc tính năng Load Balancing
Liên kết tới Service
Trang 35Service Requestor sử dụng thông tin định vị và gắn kết của phần mô tả dịch vụ
để thiết lập kết nối tới Web Service Điều này có thể đạt được bằng cách tóm lược thông tin gắn kết được tìm thấy với SOAP để đưa ra yêu cầu (có thể được hình thành tại thời điểm thiết kế) và được gửi vào Web Service khi chạy Điều này cũng phụ thuộc vào tính linh động của ứng dụng và Web Service khi được yêu cầu cũng như việc thực hiện UDDI Node
Hình trên cho thấy việc thực hiện của Web Services với Client chính là Service Requestor, UDDI là Service Registry và Web Servers chính là Service Provider cung cấp các Service riêng biệt và host các Web Services được sử dụng Đây là ví dụ cho thấy trường hợp nơi một Service sử dụng một Service khác để hoàn thành yêu cầu ban đầu của Service Requestor Đầu tiên Client tìm kiếm Service với các mô tả của Service, kiểm tra với thông tin gắn kết và đưa ra yêu cầu Web Service gọi Web Service khác để thực hiện một số tính năng do nó có năng lực để phát hiện ra Service này khi chạy Khi được gọi, nó sẽ tìm một Web Service phù hợp tại UDDI Node và nó quay lại nối kết với Web Service thứ hai Một khi kết quả trung gian được trả lại, Web Service thứ nhất sẽ kết hợp thông tin này vào tiến trình của nó và khi công việc hoàn thành sẽ trả kết quả cuối cùng cho Client
c Hỗ trợ cho các tiến trình và tích hợp
Trang 36Cấu trúc này cho phép tạo ra các cơ chế “Mô tả, xuất ra và tương tác nhau” dựa vào SOAP, WSDL và UDDI để một Service là cơ sở tạo ra một ứng dụng mới phức tạp và cung cấp ứng dụng được tích hợp tương tự:
- Service Composition: Business Process Execution Languege for Web Services (BPEL4WS)
- Robustness: Web Services Coordination (WS-Coordination) và Web Services Transactions (WS-Transaction)
- Security: Web Services Security (WS-Security)
- Reliability: Web Services Reliability Messaging (WS-Reliable Messaging)
- Quality of Service: Web Services Policy FrameWork (WS-Policy)
Kể cả những thành phần mới, các thành phần Web Service còn được thiết kế để bất kỳ thành phần nào cũng được sử dụng một cách độc lập Phần chính để cung cấp các hỗ trợ cho các tiến trình và tích hợp các Service là khái niệm Service Composition
và Robustness Các thông tin BPEL4WS chứa các định nghĩa của ngôn ngữ được dùng trong mô hình Service Composition Một Service Composition hay một tiến trình
Trang 37BPEL4WS được coi như một quá trình được phối hợp với một số Web Service để thực hiện một mục đích nào đó Các thông tin trong BPEL4WS bao gồm:
- Process: BPEL4WS Composition
- Partner: Service mà tiến trình tương tác
Một tiến trình sử dụng một số giao diện để liên lạc và trao đổi thông tin với các Partner của nó Liên lạc giữa tiến trình với một Partner nói chung là kiểu P2P, liên lạc theo kiểu hai chiều Điều này bao quát cả vai trò chính mô hình Client/Server nơi mà các Services có thể được gọi mà không cần phía yêu cầu cung cấp bất kỳ Service nào hoặc Service được dùng như những hàm phụ trợ
Các Partner trong BPEL4WS được định nghĩa bởi giao diện WSDL dùng để liên kết trong tiến trình Nó cho phép truy xuất tới một Service qua nhiều giao thức bằng cách tách mô tả Service khỏi Service cụ thể Các hàm cấu thành độc lập với Platform
và cơ chế truyền thông tin sử dụng điều này có nghĩa tiến trình có thể truy xuất với SOAP/HTTP hoặc IIOP/JMS Hơn nữa BPEL4WS định nghĩa một tập các tác vụ cơ bản mà việc liên lạc cần tới:
- Invoke: yêu cầu, gọi một Service
- Receive: chờ một thông điệp gọi Service
- Reply: trả lại một kết quả I/O
Thêm vào đó, những thông tin cơ bản về lỗi, việc kết thúc tiến trình và các thao tác dữ liệu cũng được định nghĩa Để xây dựng một tác vụ phức tạp hơn từ các tác vụ
cơ bản, một tập các cấu trúc cũng được cung cấp:
- Sequence: sắp xếp chuỗi các tác vụ
- Switch: điều kiện rẽ nhánh
- While: vòng lặp
- Pick: chọn lần lượt
- Flow: chạy các tác vụ song song, kiểm soát liên kết
BPEL4WS cũng có cơ chế xử lý và bù lỗi Nó được gọi là cơ chế xử lý và bù lỗi
Cơ chế xử lý lỗi sẽ kiểm soát những lỗi xuất hiện trong tiến trình và các tiến trình có thể được xác định lại trong phạm vi nào đó Khi một lỗi được kiểm soát, nếu việc xử lý lỗi không kiểm soát được lỗi, lỗi có thể được khoanh lại tại nơi lỗi xảy ra Khi đó nó sẽ gọi cơ chế bù lỗi để đưa ra hành động đã được định trước để thực hiện với lỗi này