ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
GIỚI THIỆU KIẾN TRÚC HƯỚNG DỊCH VỤ
(SOA)
VÀ CÁCH THỰC HIỆN
BÁO CÁO ĐỒ ÁN MÔN HỌC
Giáo viên hướng dẫn: Ths. Tăng Mỹ Thảo
Nhóm:
1. Vũ Ngọc Hưng MSSV: 06520197
2. Vương Hà Thanh Mẫn MSSV: 06250282
Lời nói đầu
Sự phát triển của Internet đã thúc đẩy nhu cầu cộng tác, làm việc qua mạng
và sử dụng các dịch vụ trực tuyến dần trở thành một nhu cầu thiết yếu trong cuộc
sống của chúng ta. Điều đó đòi hỏi các ứng dụng không chỉ là những hệ thống hoạt
động đơn lẻ trên một máy trạm (máy client) và chịu phụ thuộc vào một nền tảng cố
định nào nữa, mà chúng phải là những hệ thống linh động giúp người dùng làm việc
“mọi lúc, mọi nơi”. Điều đó đã làm nhà phát triển phải đối mặt với hàng loạt các
vấn đề mới như làm sao tích hợp các thành phần phân tán lại với nhau; hay tái sử
dụng những thành phần có sẵn; vấn đề triển khai và bảo trì, … đang là một vấn đề
làm điên đầu các nhà phát triển.
“Tôi cần một dịch vụ lưu trữ”; “Khách hàng của tôi yêu cầu một dịch vụ
phân tích và đánh giá chứng khoán”. Đó là hai trong số rất nhiều yêu cầu của khách
hàng với các nhà phát triển và các nhà cung cấp. Gần như tất cả mọi thứ đang dần
trở thành những dịch vụ, chứ không còn là những thiết bị hay phần mềm cụ thể nữa,
từ những việc cơ bản như lưu trữ dữ liệu, đến xử lý, phân tích và đánh giá,…
Mô hình phần mềm như những dịch vụ đang rất phát triển hiện nay được gọi
là mô hình SOA – (Service Oriented Architecture) hay Kiến trúc Định hướng
Dịch vụ. Vậy thật sự SOA là gì ? Nó có thật sự hoàn hảo ? Làm thế nào để triển
khai SOA ? Các vấn đề của hệ thống SOA là gì ? Đó cũng chính là những câu hỏi
4.2.1 Các yêu cầu về quản lý dự án (project) 16
4.2.2 Tạo dự án (project) mới 18
4.2.3 Chỉnh sửa, xóa một project 19
4.2.4 Thêm, xóa thành viên của một project 19
4.2.5 Liệt kê các project của một thành viên 19
4.2.6 Hiển thị tiến độ của project theo phần trăm (%) 20
4.2.7 Hiển thị các thông tin của project: days left, budget, description 20
4.2.8 Hiển thị calendar kèm theo milestone 20
4.2.9 Thêm một cột mốc (milestone) mới 21
4.2.10 Chỉnh sửa, xóa và đóng một milestone 21
4.2.11 Tạo mới một danh sách công việc (tasklist) 21
4.2.12 Hiển thị danh sách các tasklist và các task tương ứng 22
4.2.13 Chỉnh sửa và xóa một tasklist 23
4.2.14 Tạo mới một công việc (task) 23
4.2.15 Chỉnh sửa, xóa và đóng một task 23
4.2.16 Phân công công việc cho một hay nhiều thành viên 23
4.2.17 Thêm và xóa thành viên khỏi một project 24
4.2.18 Các yêu cầu về quản lý thành viên/người sử dụng (user) 24
4.2.19 Liệt kê tất cả các thành viên 24
4.2.20 Thêm một thành viên mới vào hệ thống 24
4.2.21 Xóa một thành viên khỏi hệ thống 25
4.3. Yêu cầu phi chức năng 26
4.3.1 Các thành viên có thể cập nhật tiến độ công việc của họ 26
4.3.2 Yêu cầu hiệu quả 26
4.3.3 Bảng trách nhiệm yêu cầu hiệu quả 27
4.3.4 Yêu cầu tiện dụng 28
4.3.5 Bảng trách nhiệm yêu cầu tiện dụng 29
4.3.6 Yêu cầu tương thích 30
4.3.7 Yêu cầu công nghệ 30
4.3.8 Yêu cầu tiến hoá 31
4.8.3.1 Chức năng 52
4.8.4 Màn hình “Milestone Add/Edit” 52
4.8.4.1 Chức năng 52
4.8.5 Màn hình “Task List” 53
4.8.5.1 Chức năng 53
4.8.6 Màn hình “User “ 53
4.8.6.1 Chức năng 54
4.8.7 Liệt kê và thêm user vào project. Màn hình “My Project” 54
4.8.7.1 Chức năng 54
4.8.8 Màn hình “Add Project” 54
4.8.8.1 Chức năng 55
4.8.9 Màn hình “User profile” 55
4.8.9.1 Chức năng 56
4.8.10 Màn hình “Edit user” 57
4.8.10.1 Chức năng 57
4.8.11 Màn hình “My Task” 57
4.8.11.1 Chức năng 58
4.8.12 Màn hình “Add Task List” 58
4.8.12.1 Chức năng 58
4.8.13 Màn hình “Add Task” 59
4.8.13.1 Chức năng 59
4.8.14 Màn hình “User Administration” 60
4.8.14.1 Chức năng 60
4.8.15 Màn hình “Add User” 61
4.8.15.1 Chức năng 61
4.9. EPM Web Service 61
4.10. Xây dựng ứng dụng Client – EPM Agent 63
4.10.1 Gọi EPMService từ client 63
4.10.2 Thiết kế giao diện 64
4.10.2.1 Màn hình Login 64
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 2
doanh nghiệp có thể tích hợp các thành phần hiện có vào các ứng dụng mới và các
thành phần này có thể được chia sẻ hoặc tái sử dụng trong nhiều lĩnh vực khác nhau
của công ty đó mà không cần phải chỉnh sửa mã nguồn hay phải tái cấu trúc lại hệ
thống.
Có nhiều cách khác nhau để kết nối các dịch vụ, chẳng hạn dùng các giao
thức mạng có sẵn, hoặc tạo một giao thức riêng. Nhưng từ năm 2001, các dịch vụ
web (Web service) được xây dựng dựa trên nền tảng web toàn cầu, bất cứ nơi nào
cũng có, đã trở thành một phương pháp phổ biến cho việc kết nối các thành phần
của hệ thống SOA với nhau. Thoạt nhìn SOA và dịch vụ web trông có vẻ giống
nhau nhưng chúng không phải là một. Chúng ta sẽ tìm hiểu rõ hơn về các dịch vụ
web trong các phần tiếp theo.
Hình 1.1 – Mô hình cơ bản của SOA.
1.2. Các nguyên tắc và tính chất của hệ thống SOA
Những phần sau sẽ giới thiệu những nguyên tắc cơ bản của một dịch vụ
hướng Kiến Trúc (SOA).Những nguyên tắc không không chính xác tuyệt đối,
nhưng được dùng như một khung tham khảo cho các cuộc thảo luận liên quan đến
SOA.
1.2.1 Ranh giới rõ ràng
Các dịch vụ thực hiện quá trình tương tác chủ yếu thông qua thành phần giao
tiếp. Thành phần giao tiếp này sẽ quy định những dạng thông điệp sử dụng trong
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 3
quá trình trao đổi : thông điệp nào sẽ được chấp nhận và những thông điệp nào sẽ
không được xử lý. Và đây chính là cách duy nhất để các đối tượng bên ngoài có thể
truy cập thông tin và chức năng của dịch vụ. Ta chỉ cần gửi thông điệp theo các định
dạng đã được định nghĩa trước mà không cần quan tâm đến cách xử lý của dịch vụ
dính càng chặt bao nhiêu thì càng có nhiều thay đổi liên quan cần chỉnh sửa ở phía
sử dụng dịch vụ mỗi khi có thay đổi nào đó xảy ra. Mức độ coupling tăng dần khi
bên sử dụng dịch vụ càng cần biết nhiều thông tin ngầm đinhj của bên cung cấp.
Nghĩa là nếu bên sử dụng dịch vụ biết vị trí và chi tiết định dạng dữ liệu của bên
cung cấp dịch vụ thì quan hệ giữa hai bên càng chặt. Ngược lại, nếu bên sử dụng
dịch vụ không cần biết mọi thông tin chi tiết của dịch vụ trước khi triệu gọi nó thì
quan hệ giữa hai bên cáng có tính loose coupling.
SOA hỗ trợ loose coupling thông qua việc sử dụng hợp đồng và liên kết
(contract and binding). Một người sử dụng truy vấn đến nơi lưu trữ và cung cấp
thông tin dịch vụ (registry) để lấy thông tin về loại dịch vụ cần sử dụng . Registry sẽ
trả về tất cả những dịch vụ thỏa tiêu chuẩn tìm kiếm. Từ bấy giờ người dùng chỉ
việc chọn dịch vụ mà mình cần, và thực thi phương thức trên đó theo mô tả dịch vụ
nhận được từ registry. Bên sử dụng dịch vụ không cần phụ thuộc trực tiếp vào cài
đặt của dịch vụ mà chỉ dựa trên hợp đồng mà dịch vụ hỗ trợ.
Tính loose coupling giúp gỡ bỏ những ràng buộc điều khiển giữa những hệ
thống đầu cuối .Mỗi hệ thống có thể tự quản lý độc lập nhằm tăng hiệu suất, khả
năng mở rộng và khả năng đáp ứng cao. Những thay đổi cài đặt cũng được che giấu
đi. Loose coupling đem đến sự độc lập giữa bên cung cấp và bên sử dụng nhưng nó
đòi hỏi các interface phải theo chuẩn và cần một thành phần trung gian quản lý,
trung chuyển yêu cầu giữa các hệ thống đầu cuối.
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 5
1.2.6 Sử dụng lại dịch vụ
Bởi vì các dịch vụ được cung cấp lên mạng và được đăng ký ở một nơi nhất
định nên chúng dễ dàng được tìm thấy và tái sử dụng. Nếu dịch vụ không có khả
năng tái sử dụng, nó cũng khồn cần đến interface mô tả. Các dịch vụ có thể được tái
sử dụng bằng cách kết hợp lại với nhiều mục đích khác nhau. Tái sử dụng lại các
dịch vụ còn giúp loại bỏ những thành phần trùng lắp và tăng độ vững chắc trong cài
đặt, nó còn giúp đơn giản hóa việc quản trị.Thực ra tái sử dụng dịch vụ lại dễ dàng
được triệu gọi thông qua một dạng kết nối. Một kết nối được gọi là interoperable
chứa bên trong nó một giao thức và một định dạng dữ liệu mà mỗi client kết nối đến
nó đều hiểu. Khả năng cộng tác đạt được bằng cách hỗ trợ các giao thức và định
dạng dữ liệu chuẩn của dịch vụ và các client. Kỹ thuật này đạt được bằng cách ánh
xạ mỗi tính chất và ngôn ngữ qua một đặc tả trung gian. Đặc tả trung gian sẽ chịu
trách nhiệm ánh xạ giữa định dạng của dữ liệu khả kết gian. Đặc tả trung gian sẽ
chịu trách nhiệm ánh xạ giữa định dạng của dữ liệu khả kết (interoperable) đến định
dang dữ liệu tùy thuộc vào nền tảng hệ thống. Ví dụ Web Service là một đặc tả
trung gian cho giao tiếp giữa các hệ thống JAX-RPC và JAXM chuyển đối tượng
Java thành SOAP,…
1.2.10Tự động dò tìm và ràng buộc động
SOA hỗ trợ khái niệm truy tìm dịch vụ (service discovery). Một người sử
dụng cần đến một dịch vụ nào đó có thể tìm kiếm dịch vụ dựa trên một số tiêu
chuẩn khi cần. Người sử dụng chỉ cần hỏi một registry về dịch vụ nào thỏa yêu cầu
tìm kiếm . Ví dụ, một hệ thống chuyển khoảng (consumer) yêu cầu một registry tìm
tất cả các dịch vụ có khả năng kiểm tra thẻ tín dụng. Registry trả về một tấp các
entry thỏa yêu cầu. Các entry chứa thông tin về dịch vụ, bao gồm cả phí giao dịch.
Bên sử dụng sẽ chọn một dịch vụ có phí giao dịch thấp nhất trong danh sách các
dịch vụ trả về, kết nối đến nhà cung cấp dịch vụ đó dựa trên thông tin registry entry
để sử dụng dịch vụ kiểm tra thẻ tín dụng.Trong phần mô tả dịch vụ kèm theo đã có
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 7
tất cả các tham số cần thiết dùng để thực thi dịch vụ, bên sử dụng chỉ cần định dạng
dữ liệu yêu cầu đúng theo mô tả cung cấp và gửi đi.Nhà cung cấp dịch vụ sẽ thực
thi kiểm tra thẻ tín dụng và trả về một thông điệp có định dạng đúng như trong phần
mô tả dịch vụ. Mối ràng buộc duy nhất giữa bên cung cấp và bên sử dụng là bản
hợp đồng được cung cấp bởi registry trung gian. Mối ràng buộc này là ràng buộc
trong thời gian chạy chứ không phải ràng buộc trong lúc biên dịch. Tất cả thông tin
cần thiết về dịch vụ được lấy về và sử dụng trong khi chạy.
thứ gì về việc mã được gói chặt như thế nào hay nó có nguồn gốc từ
đâu. Tất cả những thứ mà họ cần làm đó là xây dựng một sự kết nối
đến dịch vụ đó.
oOo
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 9
2. Kiến trúc của SOA
2.1. Kiến trúc tổng quan của SOA
Hình 2.1 – Kiến trúc tổng quan của SOA.
• Service Provider: Cung cấp các dịch vụ phục vụ cho một nhu cầu nào đó.
User (người sử dụng hay một ứng dụng sử dụng service) không cần quan tâm
đến vị trí thực sự mà service họ cần sử dụng đang hoạt động.
• Serive Consumer: User sử dụng dịch vụ được cung cấp bởi Service
Provider.
• Service Registry: Nơi lưu trữ thông tin về các service của các Service
Provider khác nhau, Service Consumer dựa trên những thông tin này để tìm
kiếm và lựa chọn Service Provider phù hợp.
Service Provider sẽ đăng ký thông tin về service mà mình có thể cung cấp
(các chức năng có thể cung cấp, khả năng của hệ thống (resource, performance), giá
cả dịch vụ, ) vào Service Registry. Service Consumer khi có nhu cầu về một
service nào đó sẽ tìm kiếm thông tin trên Service Registry. Ngoài chức năng hỗ trợ
tìm kiếm, Service Registry còn có thể xếp hạng các Service Provider dựa trên các
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 10
tiêu chí về chất lượng dịch vụ, bầu chọn từ các khách hàng đã sử dụng service,
Những thông tin này sẽ hỗ trợ thêm cho quá trình tìm kiếm của Service Consumer.
Khi đã xác định được Service Provider mong muốn, Service Consumer thiết lập
kênh giao tiếp trực tiếp với Service Provider nhằm sử dụng service hoặc tiến hành
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 12
Hình 2.4 – Mô hình cơ bản của Web Service.
SOA và Web service là hai khái niệm tách biệt nhau. SOA chỉ đặc tả một mô
hình phát triển các ứng dụng dựa trên dịch vụ, Còn Web service tập trung vào công
nghệ để thực hiện điều đó dựa trên nền tảng Web. Nói ngắn gọn, Web service là một
mô hình cụ thể hóa của SOA. Web service được sử dụng phần lớn trong các ứng
dụng SOA. Chúng ta cần chú ý là khái niệm “service” của SOA không chỉ là Web
service mà nó bao hàm cả các dịch vụ khác mà chúng ta có thể tìm thấy và sử dụng
chúng trong một mạng máy tính.
2.4. Mô hình giao tiếp bằng thông điệp (message) trong
SOA
So với kiểu thiết kế Component-Based, điểm khác biệt chính của SOA là cung
cấp khả năng giao tiếp giữa các thành phần trong hệ thống (service) sử dụng thông
điệp (message) dựa trên các chuẩn giao tiếp đã được chuẩn hóa (HTTP, FTP, SMTP,
). Chính nhờ đặc điểm này, hệ thống SOA trở nên độc lập với platform (platform
independent). Các service hoạt động trên nền các platform khác nhau vẫn có thể
giao tiếp với nhau nhờ vào các interface giao tiếp đã được chuẩn hóa để cộng tác xử
lý một tác vụ nào đó.
Sử dụng thông điệp (message) để giao tiếp có các lợi thế sau:
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 13
• Cross-platform: thông điệp (message) trở thành ngôn ngữ chung của các
platform và các ngôn ngữ lập trình khác nhau. Điều này đảm bảo các service
trên các platform khác nhau hoạt động với cấu trúc dữ liệu đặc thù của
platform đó.
• Asynchronous communications: hoạt động gởi nhận thông điệp được thực
hiện theo cơ chế Fire-and-Forget. Sender và Receiver không cần phải chờ
thông điệp trả lời sau khi đã gởi đi một thông điệp. Điều này giúp cho Sender
các hệ thống SOA thoạt nhìn bên ngoài rất đơn giản nhưng lại rất phức tạp ở bên
trong. Ngược lại, nếu xây dựng SOA từ framework có sẵn, chúng ta sẽ có được
nhiều cái lợi như: thời gian phát triển và triển khai nhanh, được hỗ trợ tốt hơn. Bù
lại chúng ta sẽ không thể tự do chỉnh sửa và thay đổi theo ý muốn.
IBM là công ty đi tiên phong trong việc nghiên cứu và ứng dụng mô hình
SOA. Vì vậy cũng dễ hiểu mô hình xây dựng SOA của IBM là thông dụng nhất.
Bên cạnh đó còn có mô hinh SOA của Oracle, SUN và Microsoft.
Danh sách một số mô hình SOA phổ biến:
• Xây dựng SOA theo mô hình của IBM với sự hỗ trợ của công cụ Rational.
• Xây dựng SOA theo mô hình của Oracle bằng bộ phần mềm lớp giữa Oracle
SOA Suite.
• Mô hình SOA của Microsoft dựa vào công vụ Web Matrix.
• Mô hình SOA của SUN được tích hợp vào IDE NetBeans.
Do phạm vi của bài viết này là tìm hiểu tổng quát về SOA nên chúng ta sẽ
không đi sâu vào chi tiết các mô hình này. Nhìn chung các công ty này đều tuân
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 15
theo đặc tả của SOA và họ đều cung cấp cho người sử dụng một công cụ tương tác
khá trực quan để thiết kế các xử lý business giữa các dịch vụ và gần như không cần
phải viết dòng mã nào.
Hinh 3.2 - Thiết kế mô hình BPEL trong NetBeans IDE.
Các mô hình này được xây dựng dựa trên ngôn ngữ BPEL (Business
Process Execution Language), đây là một ngôn ngữ định dạng kế thừa từ XML
dùng để đặc tả các quy trình nghiệp vụ.
oOo
Đồ án môn học – Nhóm SOA
Trường Đại học Công nghệ Thông tin - Khoa Công nghệ Phần mềm
Trang 16
4. Triển khai SOA và Web service trong ứng
Trang 17
Stt Tên yêu cầu Biểu mẫu Quy định Ghi chú
project như như bao nhiêu
ngày nữa đền deadline (days
left); ngân sách (budget);
miêu tả sơ lược (description)
Hiển thị một lịch (calendar)
kèm theo các cột mốc
(milestone)
BM5
Hiển thị danh sách các hoạt
động (activity) của một
project
BM6 QĐ4
Xuất danh sách các hoạt động
ra định dạng PDF hay Excel
Thêm một cột mốc
(milestone) mới
BM7 QĐ5
Chỉnh sửa một milestone QĐ6
Xóa một milestone QĐ6
Đóng một milestone QĐ6
Có thể tạo danh sách các công
việc (tasklist)
BM8 QĐ7
Hiển thị danh sách các tasklist
và các task của chúng
BM9
Chỉnh sửa một tasklist QĐ8
Xóa một tasklist QĐ8
project
QĐ16
Time tracker: báo cáo thời
gian của các hoạt động trong
project
BM16
Có thể tra cứu các hoạt động
theo thời gian bắt đầu hoặc
thời gian kết thúc
BM17
Có thể chỉnh sửa một dòng
trong bản báo cáo
QĐ17
Xóa một dòng khỏi bản báo
cáo
QĐ17
Trích xuất báo cáo ra định
dạng PDF hoặc Excel
4.2.2 Tạo dự án (project) mới
• Biểu mẫu 1 (BM1):
Đồ án môn học – Nhóm SOA