4. Triển khai SOA và Webservice trong ứng dụng thực tế
4.5.2.2 Danh sách các lớp đối tượng và quan hệ
STT Tên lớp/quan hệ Loại Ý nghĩa/Ghi chú
1 DataObject Lớp mô tả chung nhất cho các đối tượng
dữ liệu.
2 User Lớp đối tượng người dùng, miêu tả chung
cho ba loại người dùng chính của hệ thống là: Admin, Project Manager và các
Member (thành viên bình thường). Lớp User kế thừa từ lớp DataObject. 3 DeadlineWork Đại diện cho các công việc được thi hành
trong một khoảng thời gian nhất định (nghĩa là có deadline).
Lớp DeadlineWork kế thừa từ lớp
DataObject.
4 Project Lớp đặc tả cho một dự án CNTT. Dự án là
một dạng công việc được thực hiện trong một khoảng thời gian rõ ràng vì vậy nó được kế thừa từ lớp DeadlineWork.
5 Milestone Đây là lớp đại diện cho một mốc thời gian
của một dự án CNTT. Mỗi dự án có thể có nhiều mốc thời gian khác nhau để phân chia công việc và lập kế hoạch cho dự án. Milestone có quan hệ với một Project và là một đối tượng con chứa trong Project. Một Milestone cũng có hiệu lực trong một khoảng thời gian cụ thể, nên nó cũng được kế thừa từ lớp DeadlineWork.
6 TaskList TaskList – danh sách công việc, là một
danh sách hay tập hợp chứa nhiều công việc con. Nhiệm vụ chính của lớp này là
TaskList có quan hệ với một Milestone và là một đối tượng con chứa trong
Milestone.
TaskList cũng được kế thừa từ lớp
DeadlineWork.
7 Task Đại diện cho một công việc được giao cho
một thành viên trong dự án thực hiện. Task là một phần tử con của TaskList. Task được kế thừa từ lớp DeadlineWork.
8 Role Đại diện cho một phân quyền trong hệ
thống. Một phân quyền định ra các hành động mà một đối tượng người dùng có thể thực hiện được khi sử dụng hệ thống. Người quản trị (Admin hoặc Project Manager) có thể dùng các quyền mặc định của hệ thống hoặc tạo ra các phân quyền mới cho từng dự án.
Role được kế thừa từ lớp DataObject.
9 Action Đại diện cho một hành động hay một tác
vụ được thực thi bởi người người dùng (ví dụ: thêm, xóa, sửa,…)
Action được kế thừa từ lớp DataObject.
10 Module Module là một thành phần trong hệ thống
chẳng hạn như: front end, back end, khu vực quản lý dự án, khu vực quản lý thành viên... Thực sự lớp này chỉ có ý nghĩa cho người quản trị (Admin hoặc Project
bình thường (Member).
Lớp này có 2 nhiệm vụ chính: giúp quản lý dễ dàng các thành phần của hệ thống và phục vụ cho chức năng phân quyền. Module được kế thừa từ lớp DataObject. 11 ModuleAction Như tên gọi của nó, lớp này là sự kết hợp
từ hai lớp Module và Action. Mỗi loại phân quyền sẽ được phép thực hiện những tác vụ (Action) khác nhau trong từng Module khác nhau.
ModuleAction được kế thừa từ lớp DataObject.
12 TimeTracker Lớp TimeTracker có nhiệm vụ lưu vết quá
trình làm việc của các thành viên để dễ dàng báo cáo tiến độ công việc sau này. TimeTracker được kế thừa từ lớp
4.6.2 Sơ đồ logic chi tiết:
4.7. Thiết kế giao diện
4.7.1 Danh sách các màn hình
STT Tên màn hình Chức năng
1 Desktop Trang chủ xuất hiện sau khi người dùng đăng nhập
vào hệ thống. Là trang tổng hợp các thông tin mới nhất.
2 Project Trang hiển thị thông tin chung của mỗi dự án. Xuất hiện khi người dùng click chọn một dự án.
Tương tự cho chức năng Edit.
5 Task List Quản lý các danh sách công việc và phân công công việc cho các thành viên.
6 User Liệt kê và thêm user vào project.
7 My Project Liệt kê tất cả các dự án mà một người dùng đã và đang tham gia.
8 Add Project Tạo dự án mới.
9 User profile Quản lý thộng tin cá nhân của người dùng. 10 Edit user Chỉnh sửa thông tin cá nhân của người dùng.
11 My Task Hiển thị tất cả các Task list của user trong project đó Hiển thị tất cả các Task có trong Task list.
12 Add Task List Thêm một Task List vào project.
13 Add Task Thêm một Task mới trong Task List.
14 Project Administraion Trang quản lý dự án dành cho admin. 15 User Administration Quản lý các thành viên trong toàn hệ thống.
16 Add User Thêm thành viên mới vào hệ thống.
17 System Administration Trang cấu hình hệ thống dành cho admin.
18 TimeTracking Quản lý thời gian làm việc của các nhiệm vụ (task) và lưu vết lại theo cấu hình của admin.
19 Filter Tracking Lọc (tìm kiếm) báo cáo. Cho phép lọc theo thời gian bắt đầu, kết thúc, hoặc lọc theo user hoặc task.
4.8. Mô tả chi tiết các màn hình
4.8.1 Màn hình “Desktop”
4.8.1.1 Chức năng
Trang chủ xuất hiện sau khi người dùng đăng nhập vào hệ thống. Đây là trang tổng hợp các thông tin mới nhất, bao gồm danh sách các dự án mà người dùng hiện tại đang tham gia (My Projects) , danh sách các công việc được giao (My Tasks) và một lịch biểu (Calendar) hiển thị các cột mốc (milestone).
4.8.1.2 Các thành phần của giao diện
STT Tên điều khển Kiểu dữ liệu Bắt buộc Giá trị Ghi chú
(1) (2) (3) (4) (6) (10) (13) (14) (16) (17) (7) (8) (11) (12) (5) (15)
chính của ứng dụng luôn xuất hiện trên màn hình, giúp người dùng di chuyển qua lại giữa các màn hình/chức năng và không bị “lạc” trong ứng dụng.
Xem (*) để biết thêm chi tiết.
2 tabDesktop Tab Giúp người dùng truy cập
vào thẻ Desktop. Đây cũng là thẻ mặc định hiển thị sau khi đăng nhập.
3 tabMyProjects Tab Truy cập vào thẻ quản trị
các dự án.
4 tabMyTasks Tab Truy cập vào thẻ quản trị
các nhiệm vụ được giao.
5 lblDesktop Label Tiêu đề của thẻ.
6 lstProjects Table Danh sách các dự án.
7 likFinish Link Dùng để đóng hay hoàn
thành một dự án. Hình , chỉ hiển thị với admin. 8 Các likEdit và lnkDelete Link Dùng để chỉnh sửa ( ) và xóa các dự án. Hình , chỉ hiển thị với admin
Hình , chỉ hiển thị với admin
10 lstTasks Table Danh sách các công việc
cần làm.
11 likFinish Link Dùng để đóng hay hoàn
thành một dự án. Hình , chỉ hiển thị với admin. 12 Các likEdit và lnkDelete Link Dùng để chỉnh sửa ( ) và xóa các dự án. Hình , chỉ hiển thị với admin Hình , chỉ hiển thị với admin
13 calendar Table Lịch biểu hiển thị các cột
mốc và các sự kiện (milestone) có liên quan tới người dùng.
14 txtSearch Textbox Nhập từ khóa tìm kiếm.
15 btnGo Button Chạy chức năng tìm kiếm.
16 miniCalendar Table Đây cũng là một lịch biểu
nhưng chỉ có chức năng là xem thời gian và xuất hiện trong toàn ứng dụng.
17 Online users Hiển thị danh sách các
người dùng đang đăng nhập vào hệ thống EPM.
Desktop: giúp truy cập vào trang Desktop (trang chủ)
My Account: truy cập vào trang thông tin cá nhân.
Administration: truy cập vào trang quản trị toàn bộ hệ thống, bao gồm : Projest, Users và System. Mục này chỉ xuất hiện với admin.
4.8.2 Màn hình “Project”
4.8.2.1 Chức năng
Đây là trang quản trị các dự án và cũng là trang quan trọng nhất, tập trung các chức năng chính của ứng dụng, bao gồm:
• Chỉnh sửa và đóng một project.
• Lưu vết và ghi chú lại các sự kiện (chức năng time tracker) cho một project.
(1) (2) (3) (4) (5) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (6)
4.8.3.1 Chức năng
Hiển thị tất cả các milestone của user đó.
4.8.4 Màn hình “Milestone Add/Edit”
4.8.4.1 Chức năng
4.8.5 Màn hình “Task List”
4.8.5.1 Chức năng
Bao gồm 2 thành phần : danh sách task list chưa hoàn thành và danh sách task list đã hoàn thành.
4.8.7 Liệt kê và thêm user vào project. Màn hình “My Project” Project”
4.8.7.1 Chức năng
Liệt kê tất cả các project mà user đã tham gia , kèm theo các thông tin tiến độ , số ngày còn lại của project . Cho phép add / edit / delete project nếu user là
administrator.
4.8.8.1 Chức năng
Thêm project mới.
4.8.9.1 Chức năng
4.8.10 Màn hình “Edit user”
4.8.10.1 Chức năng
Chỉnh sửa thông tin của User
Hiển thị tất cả các Task list của user trong project đó Hiển thị tất cả các Task có trong Task list
4.8.12 Màn hình “Add Task List”
4.8.12.1 Chức năng
4.8.13 Màn hình “Add Task”
4.8.13.1 Chức năng
4.8.14.1 Chức năng
Quản lý thành viên: thêm, xoá, sửa thành viên
4.8.15 Màn hình “Add User”
4.8.15.1 Chức năng
Tạo user mới.
4.9. EPM Web Service
Để các thành viên có thể cập nhật được các công việc được giao hệ thống EPM cung cấp một Web Service để các ứng dụng client có thể truy xuất dữ liệu. Ở đây chúng ta sẽ sử dụng công cụ có sẵn của Visual Studio để tạo một Web Service đơn giản chạy trên nền .NET. Web service trong .NET cũng tuân thủ mô hình chung của Web Service.
Hình 4.9 – Mô hình của web service.
Việc tạo Web service trong Visual Studio rất dễ dàng, các tầng cấp thấp bên dưới đã được hỗ trợ sẵn, chúng ta chỉ việc cài đặt các hàm xử lý business. Sau khi cài đặt xong chúng ta vào trình duyệt và mở tập tin .asmx thì sẽ xuất hiện nội dung như sau:
Như vậy chúng ta đã cài đặt thành công một web service, các ứng dụng khác (ứng dụng client, ứng dụng web khác,…) có thể gọi và sử dụng các phương thức của EPMservice một cách dễ dàng. Bước tiếp theo, chúng ta sẽ xây dựng một ứng dụng dạng Windows Form để sử dụng các dịch vụ của EPMservice cung cấp.
4.10.Xây dựng ứng dụng Client – EPM Agent
EPM Agent là một ứng dụng dạng Windows Forms hoàn toàn tách biệt với phần server là một ứng dụng web. Để có thể gọi được các phương thức từ web service, chúng ta cần có đường dẫn đến web service của nhà cung cấp, cụ thể ở đây hệ thống EPM server sẽ cung cấp dịch vụ EPMservice.
4.10.1Gọi EPMService từ client
Tương tự như khi tạo một web service, để gọi được một web service, trong Visual Studio chúng ta chỉ cần nhấp phải và chọn “Add Service Reference…” và làm theo hướng dẫn:
Hình 4.10 - Tạo một tham chiếu đến web service
Sau tạo tham chiếu đến Web service, Visual Studio sẽ tự động đọc đặc tả WSDL (Web Service Description Language) cùa web service và chuyển đổi thành các lớp tương ứng ở phía client. Nhờ vậy chúng ta có thể gọi các phương thức của
//…
private bool _login() {
if (_epmClient == null) {
_epmClient = new EPMserviceSoapClient(); }
_user = _epmClient.login(txtUserName.Text.Trim(), txtPassWord.Text.Trim());
return _user != null; }
4.10.2Thiết kế giao diện
4.10.2.1 Màn hình Login
SOA sẽ giúp cho công việc phát triển phần mềm trở nên dễ dàng và nhanh chóng hơn bằng việc sử dụng các dịch vụ có sẵn. Chúng ta gần như không phải thực hiện gì hoặc chỉ cần thực hiện rất ít các bổ sung cần thiết để 'lắp ráp' ứng dụng. Với ưu điểm đó, SOA giúp các nhà phát triển tiết kiệm được rất nhiều chi phí trong việc bảo trì và phát triển các ứng dụng, còn người sử dụng thì được hưởng lợi từ đa dạng các dịch vụ với chi phí hợp lý và có độ tin cậy cao.
Tuy vậy SOA vẫn còn trong giai đoạn phát triển và tiềm ẩn rất nhiều vấn đề như bảo mật, tính toàn vẹn của dữ liệu và vấn đề tích hợp các hệ thống với nhau. Điều đó đòi hỏi các nhà phát triển phải tiếp tục cái tiến và tìm ra những giải pháp mới cho SOA.
Nhìn chung đề tài nghiên cứu đã cho thấy được một cái nhìn tổng quan về SOA, tuy nhiên rõ ràng bài báo cáo vẫn còn rất nhiều hạn chế khi chưa đi sâu vào nghiên cứu quy trình tạo một ứng dụng SOA cụ thể nào, cũng như chưa cho thấy sự khác biệt giữa các quy trình đó như thế nào. Tuy nhiên đề tài cũng mở ra rất nhiều điều thú vị có thể nghiên cứu và phát triển tiếp như vấn đề bảo mật và tích hợp các hệ thống lại với nhau.
Tài liệu tham khảo
• Tiếng Anh:
[1]http://en.wikipedia.org/wiki/Service-Oriented_Architecture
[2]What is service-oriented architecture ? –
http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html
[3]Understanding Service-Oriented Architecture –
http://msdn.microsoft.com/en-us/library/aa480021.aspx
[4]Build your SOA –
http://www.ibm.com/developerworks/webservices/library/ws-soa-method1.html
[5]BPEL –
http://en.wikipedia.org/wiki/Business_Process_Execution_Language
[6]Service-Oriented Architecture: Concepts, Technology, and Design , By Thomas Erl, Publisher: Prentice Hall PTR, Pub Date: August 04, 2005, ISBN: 0-13-185858-0
[7]Expert Service-Oriented Architecture in C#: Using the Web Services,
Copyright © 2004 by Jeffrey Hasan, Apress.
• Tiếng Việt:
[8]SOA: Ngôi sao mới trong lĩnh vực phần mềm -
http://www.htmedsoft.com/kythuat/congngheweb/congngheweb011.htm
[9]Xu hướng ứng dụng SOA ở châu Á –
http://www.thesaigontimes.vn/Home/kinhteso/thitruong/18146/
[10] Tìm hiểu SOA – http://eac.vn/tim-hieu-soa/
[11] SOA – http://eac.vn/category/cong-nghe-moi/soa-cong-nghe-moi/
[12] Mô hình lập trình SOA để triển khai thực hiện các dịch vụ Web –