Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách gia
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 3MỤC LỤC
LỜI CẢM ƠN 5
CHƯƠNG I TỔNG QUAN VỀ ĐỀ TÀI 6
1.1 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH VÀ CÁC THƯ VIỆN DÙNG TRONG ĐỒ ÁN 6
1.1.1 Môi trường lập trình và trình soạn thảo NetBeans IDE 8.1 6
1.1.2 Ngôn ngữ lập trình Java 6
1.2 Đặt vấn đề 7
1.3 Lý do chọn đề tài 8
1.4 Đối tượng, mục tiêu nghiên cứu đề tài 8
1.5 Phương pháp nghiên cứu 9
1.6 Ý nghĩa lý luận và thực tiễn 9
CHƯƠNG II: WEB SERVICE 10
1 Tổng quan về Web Service 10
1.1 khái niệm 10
1.2 đặc điểm 10
1.3 Ưu điểm và nhược điểm của web service 12
1.3.1 Ưu điểm 12
1.3.2 Nhược điểm 13
1.4 Kiến trúc của Dịch vụ Web (Web Service) 13
1.4.1 Dịch vụ vận chuyển (Service Transport): 13
1.4.2 Thông điệp XML: 14
1.4.3 Mô tả dịch vụ: 14
1.4.4 Khám phá dịch vụ: 14
1.5 Các giao thức trong Web Service 15
1.5.1 XML – eXtensible Markup Language 15
1.5.2 WSDL – Web Service Description Language 16 1.5.3 Universal Description, Discovery, and Integration
Trang 41.5.4 Cấu trúc UDDI : 16
1.5.5 SOAP – Simple Object Access Protocol 17
1.5.6 An toàn cho dịch vụ Web 19
1.6 Xây dựng một dịch vụ Web với các công nghệ của java 21
1.6.1 Giai đoạn xây dựng bao gồm phát triển: 21
1.6.2 Giai đoạn triển khai: 21
1.6.3 Giai đoạn tiến hành: 21
1.6.4Quản lý: 22
1.6.5 Qui trình xây dựng một dịch vụ Web bao gồm các bước sau: 22
1.6.6 Tích hợp dịch vụ Web theo chuẩn 22
1.6.7 xây dựng một Web Service với jax-ws và jax-rs trong java 24
1.7 giới thiệu về REST: 31
1.8 RESTful Service 32
1.8.1 Resources 33
1.8.2 Representation of a Resource 33
1.8.3 URI 34
1.8.4 HTTP 34
1.9 JAX-RS API 35
1.9.1 JAX-RS API Annotation 35
1.9.1.1 @Path Annotation 36
1.9.1.2 HTTP Method annotaion 38
1.9.1.3 Injecting Data from Request URI Annotations 38
1.9.2 Sử dụng URIs cho xác thực tài nguyên 40
1.9.3 Data Representation Type Annotation 40
1.9.3.1 @Consumes Annotation 41
2 Tổng kết về RESTful 41
2.1 RESTful sử dụng phương thức HTTP cho việc thao tác với tài
Trang 52.2 tự mô tả các thông điệp (self descriptive message) 42
2.3 tạo một lớp tài nguyên gốc RESTful 42
2.4 Tổng quan về Client API để truy cập tài nguyên RESTful với JAX-WS API 45
2.5 Sơ lược về Maven trong phát triển các ứng dụng java 45
CHƯƠNG III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG THI TRẮC NGHIỆM 47
1.Mô tả bài toán: 47
1.1 Ưu điểm: 47
1.2 Hạn chế: 47
2 Phân tích và thiết kế hệ thống: 47
2.1 Chức năng đăng ký: 48
2.2 Chức năng đăng nhập: 49
2.3 Chức năng thi: 50
2.4 Chức năng tạo đề thi: 51
2.5 Bảng xếp hạng : 51
2.6 chắc năng quản lý câu hỏi: 51
2.7 chức năng quản lý môn học: 52
2.8 Chức Năng Quản Lý Account: 52
2.9 Chức Năng Quản Lý Đề Thi: 53
3 User case writing: 54
3.1 đăng nhập: 54
3.2 hoạt động thi: 55
3.3 Quản Lý Câu Hỏi: 56
3.3.1 thêm câu hỏi 56
3.3.2 xóa câu hỏi: 57
3.3.3 cập nhật câu hỏi: 58
3.3.4 xem câu hỏi: 59
4: Mô Hình Luồng DL Đăng Nhập: 60
Trang 66 Luồng DL Quản Lý Câu Hỏi: 62
7 luồng dl quản lý môn học: 63
8 Sơ đồ User case diagram: 63
9 sơ đồ hoạt động của ứng dụng: 65
10 thiết kế cơ sở dữ liệu 65
10.1 Bảng tbl_account : chứa thông tin tài khoản đăng nhập trong hệ thống 65
10.2 Bảng tbl_information: Chứa thông tin chi tiết của các tài khoản 66
10.3Bảng tbl_course : Chứa thông tin về các môn học có trong hệ thống 66
10.4 Bảng tbl_question: Chứa thông tin về câu hỏi trong môn học 67
10.5 Bảng tbl_practice: chứa danh sách các đề thi 68
10.6 Bảng tbl_practice_test: quy trình thi của người dùng 68
10.7 mô hình thực thể liên kết 69
CHƯƠNG IV: THIẾT KẾ GIAO DIỆN CỦA HỆ THỐNG 70
4.1 Giao Diện Đăng Nhập Hệ Thống: 70
4.2 Giao Diện Sau Khi Đăng Nhập Thành Công: 71
4.3 Giao Diện Chức Năng tạo đề thi: 72
4.4 Giao Diện Chức Năng Thi: 73
4.5 giao diện kết quả thi: 74
4.6 chức năng thêm câu hỏi: 75
4.7 chức năng thêm môn mới: 76
KẾT LUẬN 77
TÀI LIỆU THAM KHẢO 78
Trang 7LỜI CẢM ƠN
Để hoàn thành đồ án này ngoài sự cố gắng của bản thân em xin gửi lời cảm ơn chân thành đến Khoa Công nghệ Thông tin trong những năm qua đã tạo cơ hội giúp em đƣợc tham gia học tập, rèn luyện các kỹ năng cần thiết cho đợt làm báo
cáo đồ án tốt nghiệp Đặc biệt em xin gửi lời cảm ơn đến giảng viên TS Hoàng Hữu Việt đã quan tâm giúp đỡ, góp ý cho bài báo cáo đồ án tốt nghiệp và sẵn
sàng trả lời những thắc mắc khi cần thiết giúp em hoàn thành tốt bài làm của
mình
Mặc dù đã có nhiều cố gắng nhƣng do kiến thức còn hạn chế cùng với kinh nghiệm chƣa có nên không tránh khỏi thiếu sót.Vì vậy em rất mong nhận đƣợc những ý kiến đóng góp bổ sung của thầy cô giáo và các bạn để bài làm báo cáo
đồ án tốt nghiệp của em đƣợc hoàn thiện hơn
Ngày 12 tháng 5 năm 2016
Sinhviên: Lê Văn Hậu
Trang 8CHƯƠNG I TỔNG QUAN VỀ ĐỀ TÀI
Tên đề tài: Tìm Hiểu RESTful Web Service Ứng Dụng Thiết Kế PhầnMềm Thi
Trắc Nghiệm
1.1 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH VÀ CÁC THƯ VIỆN DÙNG TRONG ĐỒ ÁN
1.1.1 Môi trường lập trình và trình soạn thảo NetBeans IDE 8.1
Java Development Kit (JDK - Bộ công cụ cho người phát triển ứng dụng bằng ngôn ngữ lập trình Java) là một tập hợp những công cụ phần mềm được phát triển bởi Sun Microsystems dành cho các nhà phát triển phần mềm, dùng để viết những applet Java hay những ứng dụng Java
NetBeans là phần mềm miễn phí, được các nhà phát triển sử dụng để xây dựng những ứng dụng J2EE, sử dụng NetBeans thuận tiện vì hầu như mọi ứng dụng
và các công nghệ của java đều đã được tích hợp sẵn NetBeans IDE 8.1 cung cấp out-of-the-box, phân tích và biên tập để làm việc với các công nghệ mới nhất của java như Java SE 8Java SE Embedded 8, và Java ME Embedded 8, IDE cũng có một loạt các công cụ mới cho HTML5 / Javascript, đặc biệt đối với Node.js, KnockoutJS, và AngularJS cải tiến mà nâng cao hơn nữa sự dụng cho Maven và Java EE với PrimeFaces; và cải tiến cho PHP và C / C ++ hỗ trợ
1.1.2 Ngôn ngữ lập trình Java
Là một trong những ngôn ngữ lập trình mạnh và được sử dụng đông đảo trong phát triển phần mềm, các trang web, game hay ứng dụng trên các thiết bị di động, ngôn ngữ lập trình Java đã và đang trở nên lớn mạnh hơn bao giờ hết Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm 1991 Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và có tên là Oak
Đặc điểm nổi bật JAVA:
Trang 9 Tựa C++, hướng đối tượng hoàn toàn: Java phát triển dựa trên nền ngôn ngữ C++ nhưng được nâng cấp cũng như lược bỏ một số thành phần (VD: thao tác với con trỏ)
Độc lập phần cứng và hệ điều hành: Java dù chạy ở Windown hay Linux đều ổn định, giao diện chương trình không bị thay đổi
Ngôn ngữ thông dịch: Ngôn ngữ lập trình Java thuộc loại ngôn ngữ thông
dịch Chính xác hơn, Java là loại ngôn ngữ vừa biên dịch vừa thông dịch
Cơ chế gom rác tự động: Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng ở trên heap Với ngôn ngữ như C \ C++, bạn sẽ phải yêu cầu hủy vùng nhớ mà bạn đã cấp phát,
để tránh việc thất thoát vùng nhớ Tuy nhiên vì một lý do nào đó, bạn không hủy một vài vùng nhớ, dẫn đến việc thất thoát và làm giảm hiệu năng chương trình Ngôn ngữ lập trình Java hỗ trợ cho bạn điều đó, nghĩa
là bạn không phải tự gọi hủy các vùng nhớ Bộ thu dọn rác của Java sẽ theo vết các tài nguyên đã được cấp Khi không có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến hành thu hồi vùng nhớ đã được cấp phát
1.2 Đặt Vấn Đề
Ngày nay, công nghệ thông tin ngày càng phát triển và tỏ rõ tầm quan trọng trong tất cả các lĩnh vực, có thể nói công nghệ thông tin đã trở thành thước đo để đánh giá sự phát triển của xã hội hiện đại Nơi mà con người đang dần thoát khỏi cách làm việc thủ công, thô sơ và dần tiến đến tin học hóa trong tất cả các lĩnh vực Vơi những công nghệ đó con người đã dần hiện đại hóa các công cụ
Trang 10phát triển không không ngừng của các trang web, những trang web này nó không đơn thuần là những trang web bình thường bởi vì ngoài việc cung cấp thông tin hình ảnh cũng như là kiến thức hay giải trí cho con người thì nó con được trang bị các dịch vụ web nhằm giải quết triệt để nhu cầu của khách hàng
Ví dụ dịch vụ thanh toán online, hay dịch vụ thi trắc nghiệm online và rất rất nhiều các dịch vụ khác Các trang web này lại được tùy biến để hoàn toàn có thể chạy trên nhiều nền tảng khác nhau Vì vậy với nhu cầu ngày càng cao rất nhiều ngôn ngữ lập trình đã hỗ trợ phát triển các dịch vụ web như C#, php hay là java
vv Java là một ngôn ngữ lập trình tuyệt vời hỗ trợ mạnh mẽ web service và đặc biệt là công nghệ web service mới nhất hiện nay RESTful web service, với những nền tảng web sẵn có hiện nay của java như Spring web mvc, JavaServer Faces, Struts, Hibernate tất cả đều hỗ trợ web service một cách tốt nhất có thể nói web service và đặc biệt RESTful web service là một trong những bước đột phá thay đổi hoàn toàn việc trao đổi dữ liệu trên internet, với rất nhiều ưu điểm nội bật hơn các công nghệ trước đó Với bài báo cáo đồ án này sẽ giúp chúng ta hiểu hơm về web service cũng như RESTful web service
1.3 Lý Do Chọn Đề Tài
Rèn luyện kỹ năng lập trình
Phù hợp với nhu cầu việc làm của thị trường hiện nay
Nghiên cứu các dịch vụ web chuẩn bị hành trang cho việc phỏng vấn và xin việc sau khi ra trường
1.4 Đối Tượng, Mục Tiêu Nghiên Cứu Đề Tài
Đối tượng nghiên cứu là lý thuyết về web service và RESTful web service trên java
Mục tiêu là sau khi tìm hiểu xong web service và RESTful web service là xây dựng Website chứa một dịch vụ web, đó là dịch vụ thi trắc nghiêm online trên server, tại client tạo một application desktop gửi các yêu cầu đến web service và nhân về các đề thi để tiến hành thi thử
Trang 111.5 Phương Pháp Nghiên Cứu
Đọc tài liệu trên mạng, phân tích, tổng hợp tài liệu sau đó áp dụng vào thực tiễn là xây dựng ứng dụng
1.6 Ý Nghĩa Lý Luận Và Thực Tiễn
Ứng dụng là nơi để mọi người với mọi lứa tuổi có thể vào đề kiểm tra trình độ kiến thức của bản thân, nhằm học hỏi tăng cường kiến thức và đánh giá năng lực của bản thân
Người dùng chỉ cần đăng nhập và tiến hành thi và tiến hành thi
Hỗ trợ giao diện mọi loại thiết bị với nhiều nềm tảng khác nhau
Trang 12CHƯƠNG II: WEB SERVICE
1 Tổng Quan Về Web Service
1.1 Khái Niệm
Web service là một ứng dụng, một tiện ích được các nhà phát triển cung cấp rỗng rãi cho người dùng, nhiều doanh nghiệp nó là những ứng dụng chạy trên nền web, điều khác biệt so với các ứng dụng web bình thường là client của web service không chỉ là web browser mà còn là các ứng dụng chạy trên máy tính cá nhân (deskop) hay trên các thiết bị di động (mobile device)
1.2 Đặc Điểm
Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business to Business) và B2C (Business to Customer) Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ
đã có như XML, SOAP, WSDL, UDDI… Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ đáng được quan tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống Chúng ta sẽ xem xét các dịch vụ Web từ mức khái niệm đến cách thức xây dựng
Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và
sự gắn kết của nó được mô tả bằng XML Dịch vụ Web là tài nguyên phần mềm
có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một dịch vụ Web được tạo nên bằng cách lấy các chức
Trang 13năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin
từ dịch vụ Web khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi
Trên server Trước hết, có thể nói rằng ứng dụng cơ bản của Dịch vụ Web là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL)
và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp).- Dịch vụ Web cho phép client và server tương tác được với nhau ngay
cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
- Phần lớn kĩ thuật của Dịch vụ Web được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML
- Một Dịch vụ Web bao gồm có nhiều mô-đun và có thể công bố lên mạng Internet
- Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet
- Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó
có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net…
Trang 14- Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp dịch vụ Web là khá rộng lớn như dịch vụ chọn lọc và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm các thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin
về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả,
tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho cả B2B và B2C) như đặt vé máy bay, thông tin thuê xe…
- Các ứng dụng có tích hợp dịch vụ Web đã không còn là xa lạ, đặc biệt trong điều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng cùng với
sự lớn mạnh của Internet Bất kì một lĩnh vực nào trong cuộc sống cũng có thể tích hợp với dịch vụ Web, đây là cách thức kinh doanh và làm việc có hiệu quả bởi thời đại ngày nay là thời đại của truyền thông và trao đổi thông tin qua mạng Do vậy, việc phát triển và tích hợp các ứng dụng với dịch vụ Web đang được quan tâm phát triển là điều hoàn toàn dễ hiểu
1.3 Ưu Điểm Và Nhược Điểm Của Web Service
- Nâng cao khả năng tái sử dụng
- Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web
- Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
Trang 151.3.2 Nhược Điểm
- Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụ Web, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành
- Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt
- Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
1.4 Kiến Trúc Của Dịch Vụ Web (Web Service)
Hình 1:chồng giao thức của web service
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration) Hình 1 mô tả chồng giao thức của dịch vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL Giao tác UDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP
Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sử dụng để định nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác Chồng giao thức này có 4 thành phần chính:
1.4.1 Dịch Vụ Vận Chuyển (Service Transport):
Trang 16Có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi
mở rộng (Blocks Extensible Exchange Protocol- BEEP)
1.4.2 Thông Điệp XML:
Có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST
1.4.3 Mô Tả Dịch Vụ:
Được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web cụ thể WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML Dịch vụ Web sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp
1.4.4 Khám Phá Dịch Vụ:
Tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web
có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập và giao tiếp Hiện tại, UDDI API thường được sử dụng để thực hiện công việc này
Kiến trúc sâu hơn được mô tả trong Hình dưới:
Trang 17
Trong đó, tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, cho phép người dùng triệu gọi một dịch vụ từ xa thông qua một thông điệp XML Ngoài ra, để các dịch vụ có tính an toàn, toàn vẹn và bảo mật thông tin, trong kiến trúc dịch vụ Web, chúng ta có thêm các tầng Policy, Security, Transaction, Management
1.5 Các Giao Thức Trong Web Service
1.5.1 XML – eXtensible Markup Language
Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng
để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B
Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML là công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML Khi đó,
Trang 18các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thống nhất
1.5.2 WSDL – Web Service Description Language
WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML, bao gồm các thông tin:
- Tên dịch vụ
- Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ Web
- Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của dịch vụ Web cộng với tên cho giao diện này)
Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và phương thức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL Cả hai phần này
sẽ được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ Giao diện của một dịch vụ Web được miêu tả trong phần này đưa ra cách thức làm thế nào để giao tiếp qua dịch vụ Web Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ Web được đưa vào thư mục của WSDL
WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp dịch vụ Web qua Internet Một client khi kết nối tới dịch vụ Web có thể đọc WSDL để xác định những chức năng sẵn có trên server Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL
1.5.3 Universal Description, Discovery, and Integration (UDDI)
Để có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web
1.5.4 Cấu Trúc UDDI :
Trang 19- Trang trắng – White pages: chứa thông tin liên hệ và các định dạng chính yếu của dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin nhận dạng… Những thông tin này cho phép các đối tượng khác xác định được dịch vụ
- Trang vàng – Yellow pages: chứa thông tin mô tả dịch vụ Web theo những loại khác nhau Những thông tin này cho phép các đối tượng thấy được dịch vụ Web theo từng loại với nó
- Trang xanh – Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của dịch vụ Web
- Loại dịch vụ – tModel: chứa các thông tin về loại dịch vụ được sử dụng
Những thông tin về dịch vụ Web được sử dụng và công bố lên mạng sử dụng giao thức này Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của dịch vụ Web khác nhằm xác định xem dịch vụ nào sẽ cần đến nó
1.5.5 SOAP – Simple Object Access Protocol
Chúng ta đã hiểu cơ bản dịch vụ Web như thế nào nhưng vẫn còn một vấn
đề khá quan trọng Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu trả lời là các dịch vụ Web có thể truy xuất bằng một giao thức là Simple Object Access Protocol – SOAP Nói cách khác chúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP
SOAP là một giao thức giao tiếp có cấu trúc như XML Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ
và các hệ điều hành khác nhau SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP
Trang 20Một respone sử dụng giao thức soap
Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client Cả SMTP và HTTP đều là những giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet
Cấu trúc một thông điệp theo dạng SOAP
Thông điệp theo định dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau:
- Phần tử gốc – envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP
- Phần tử đầu trang – header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản Header còn có thể mang những dữ liệu chứng thực, những chứ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác
- Phần tử khai báo nội dung chính trong thông điệp – body, chứa các thông tin yêu cầu và thông tin được phản hồi
- Phần tử đưa ra các thông tin về lỗi -fault, cung cấp thông tin lỗi xảy ra trong qúa trình xử lý thông điệp
Một SOAP đơn giản trong body sẽ lưu các thông tin về tên thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số Có 3 kiểu thông báo
sẽ được đưa ra khi truyền thông tin: request message(tham số gọi thực thi một thông điệp), respond message (các tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi)
Kiểu truyền thông: Có 2 kiểu truyền thông
Trang 21- Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng Kiểu này được khai thác bởi nhiều dịch vụ Web
- Document: được biết đến như kiểu hướng thông điệp, nó cung cấp giao tiếp ở mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn
Hai kiểu truyền thông này cung cấp các định dạng thông điệp, tham số, lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với dịch vụ Web cần xây dựng
Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống
như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date…) hay những kiều phức tạp hơn như struct, array, vector… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAP-ENC
Mã hóa: Giả sử service rquester và service provider được phát triển trong
Java, khi đó mã hóa SOAP là làm thế nào chuyển đổi từ cấu trúc dữ liệu Java sang SOAP XML và ngược lại, bởi vì định dạng cho Web Service chính là XML Bất kỳ một môi trường thực thi SOAP nào cũng phải có một bảng chứa thông tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java – bảng đó được gọi là SOAPMappingRegistry Nếu một kiểu dữ liệu được
sử dụng dưới một dạng mã hóa thì sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó
1.5.6 An Toàn Cho Dịch Vụ Web
Dịch vụ Web liên kết và tương tác với các ứng dụng qua Internet, chính vì vậy bảo mật là một vấn đề được quan tâm khi các công ty tiến tới kết hợp ứng dụng với một dịch vụ Web Việc đảm bảo an toàn cho dịch vụ Web là một vấn
đề quan trọng, đặc biệt đối với những dịch vụ liên quan đến trao đổi tiền tệ, thông tin từ thị trường chứng khoán hay dịch vụ bán hàng qua mạng (liên quan đến trả tiền bằng tài khoản và có yêu cầu thông tin cá nhân của người dùng)
Trang 22Trước khi có WS-Security (bảo mật cho dịch vụ Web) thì ý nghĩa thông thường của an toàn dịch vụ Web là bảo mật kênh truyền dữ liệu Hiện nay, nó được thực hiện cho những SOAP/HTTP dựa trên cơ chế truyền thông điệp bằng cách sử dụng giao thức HTTPS Không chỉ là an toàn ở mức truyền thông điệp, HTTPS còn cung cấp sự an toàn tới toàn bộ gói dữ liệu HTTP
Mặc dù HTTPS không bao gồm tất cả các khía cạnh trong chuẩn an toàn chung cho dịch vụ Web nhưng nó đã cung cấp một lớp bảo mật khá đầy đủ với định danh, chứng thực, tính toàn vẹn thông điệp hay độ tin cậy
- Đảm bảo an toàn cho dịch vụ Web:
Khái niệm về WS-Security: đây là một chuẩn an toàn bao trùm cho SOAP, nó được dùng khi muốn xây dựng những dịch vụ Web toàn vẹn và tin cậy Toàn vẹn có nghĩa là khi có một giao dịch hay khi truyền thông tin, hệ thống và thông tin sẽ không bị chặn, giao dịch sẽ không bị mất cũng như không thể có người lấy cắp được dữ liệu trên đường truyền WS-security được thiết kế mang tính mở nhằm hướng tới những mô hình an toàn khác bao gồm PKI, Kerberos và SSL
Nó cũng đưa ra nhiều hỗ trợ cho các cơ chế an toàn khác, nhiều khuôn dạng chữ
ký và công nghệ mã hóa, đảm bảo sự an toàn, toàn vẹn thông điệp và tính tin cậy của thông điệp Tuy nhiên, WS-security cũng chưa thể đảm bảo được tất cả yêu cầu về bảo mật và an toàn thông tin, nó chỉ là một trong những lớp của giải pháp
an toàn cho dịch vụ Web
Tính toàn vẹn tạo ra một chữ ký số hóa XML dựa trên nội dung của thông điệp Nếu dữ liệu bị thay đổi bất hợp pháp, nó sẽ không còn thích hợp với chữ ký số hóa XML đó Chữ ký này được tạo ra dựa trên khóa mà người gửi thông điệp tạo ra, do đó người nhận chỉ nhận thông điệp khi có chữ ký sử dụng và nội dung phù hợp Ngược lại sẽ có một thông báo lỗi Việc chứng thực được thực hiện giữa client và server là cách chứng thực rất cơ bản (sử dụng định danh người dùng và mật khẩu)
WS-security chỉ là một trong những lớp an toàn và bảo mật cho dịch vụ Web, vì vậy cần một mô hình an toàn chung lớn hơn để có thể bao quát được các khía
Trang 23cạnh khác Các thành phần được thêm có thể là WS-Secure Conversation Describes,WS-Authentication Describes,WS-Policy Describes hay WS-Trust Describes Chúng sẽ thực hiện việc đảm bảo an toàn hơn cho hệ thống khi trao đổi dữ liệu, mở và đóng các phiên làm việc cũng như quản lý dữ liệu cần chứng thực và chính sách chứng thực
1.6 Xây Dựng Một Dịch Vụ Web Với Các Công Nghệ Của Java
Có 4 giai đoạn chính để xây dựng một dịch vụ Web là xây dựng, triển khai, tiến hành và quản lý, trong đó:
1.6.1 Giai Đoạn Xây Dựng Bao Gồm Phát Triển:
Và chạy thử ứng dụng dịch vụ Web, xây dựng các chức năng và định nghĩa dịch
vụ Có hai cách khác nhau để tiến hành trong giai đoạn này, đó là Red-path- solod và Blue-path-dashed Với Red- path-solod, chúng ta sẽ xây dựng một dịch
vụ Web mới từ trạng thái ban đầu hoặc với một dịch vụ đã có sẵn Từ đó, xây dựng định nghĩa service (WSDL) với các đối tượng, hàm chức năng mà chúng ta mong muốn Nếu theo cách Blue-path-dashed, dịch vụ Web sẽ được xây dựng từ đầu hoặc từ một định nghĩa dịch vụ WSDL Sử dụng WSDL này, xây dựng hoặc sửa đổi lại mã để thực hiện các yêu cầu mong muốn trong dịch vụ Web
1.6.2 Giai Đoạn Triển Khai:
Công bố định nghĩa dịch vụ, xây dựng WSDL và triển khai mã thực thi của dịch
vụ Web Triển khai dịch vụ Web tới một ứng dụng phía server, sau đó sẽ công
bố dịch vụ Web trên mạng Internet để các client có thể nhìn thấy Sử dụng UDDI registry để công bố lên mạng
1.6.3 Giai Đoạn Tiến Hành:
Tìm kiếm và gọi thực thi dịch vụ Web bởi những người dùng muốn sử dụng
dịch vụ
Trang 24mở rộng thêm chức năng Những hướng tiếp cận này dựa trên những gì mà chúng ta đã có, tùy thuộc vào yêu cầu của hệ thống, trong đó tối đa việc sử dụng lại các chức năng, các thành phần, môđun đã được xây dựng
1.6.5 Qui Trình Xây Dựng Một Dịch Vụ Web Bao Gồm Các Bước Sau:
1 Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp (sử dụng ngôn ngữ java chẳng hạn)
2 Tạo WSDL cho dịch vụ
3 Xây dựng SOAP server
4 Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất
5 Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với SOAP server
6 Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java) và sau đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server
7 Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một dịch vụ Web như ý muốn Sau đó là cung cấp dịch vụ Web này trên Internet
1.6.6 Tích Hợp Dịch Vụ Web Theo Chuẩn
Trang 25Để có thể thành công với dịch vụ Web chúng ta phải quan tâm đến khá nhiều vấn đề, bao gồm việc triển khai, giám sát và tích hợp hệ thống Doanh nghiệp không những phải phát triển một ứng dụng dịch vụ Web mới mà còn phải tích hợp các ứng dụng nghiệp vụ phụ trợ của họ trong kiến trúc Dịch vụ Web Cùng với việc triển khai và tích hợp, những nhà kinh doanh và những người sử dụng kỹ thuật cũng cần có khả năng giám sát, triển khai toàn diện để đảm bảo hoạt động kinh doanh hiệu quả và tin cậy
- Giám sát (monitoring): Cần hỗ trợ ở cả mức công cụ và cơ sở hạ tầng để giám sát các dịch vụ Web chạy như thế nào qua toàn bộ mạng, từ một chi nhánh con của một công ty trên mạng tới các chi nhánh khác trong công ty hay giao tiếp với doanh nghiệp khác Kết hợp thông báo theo sự kiện với các lỗi trong luồng nghiệp vụ cho những người dùng không có kinh nghiệm giám sát dịch vụ Web
và các dịch vụ kế thừa khác
- Xác định đường đi dữ liệu (Data routing): Việc thiết lập đường đi của dữ liệu giữa những thành phần của dịch vụ Web hướng tới tối đa hóa khả năng sử dụng lại Nếu coi một thành phần (component) là một đối tượng thì mỗi thể hiện (instance) của nó sẽ không quan tâm đến các thể hiện khác của cùng thành phần
đó Những thể hiện của cùng một thành phần có thể dễ dàng được sử dụng lại trong các ứng dụng phân tán khác bởi vì chúng hoàn toàn độc lập và không phụ thuộc lẫn nhau
- Triển khai (Deployment): Triển khai các dịch vụ Web có khả năng nâng cấp, điều khiển và cấu hình các thành phần từ xa thông qua mạng phân tán
- Quản lý (Management): Có thể xây dựng theo kiến trúc P2P (Peer-to-Peer) Các hoạt động chính như thực thi các thành phần, định tuyến dữ liệu, xử lý luồng công việc và chuyển đổi dữ liệu được thực hiện tại các điểm cuối của
Trang 26mạng Server sẽ tập trung giải quyết các hoạt động khác như quản lý, điều khiển
sự kiện, chứng thực bảo mật và quản trị
- Cấu Hình Và Quản Lý Phiên Bản(Configuration and version management):
Sử dụng các công cụ linh hoạt để quản lý các phiên bản khác nhau của dịch vụ Web, cho phép các phiên bản được nâng cấp và điều khiển từ một công cụ quản
lý tập trung Kết hợp giữa ứng dụng và mạng giúp các kỹ sư triển khai có thể điều khiển các thành phần chạy trên nền tảng hệ thống phần cứng cụ thể bên trong mạng
- Bảo mật (Security): các chuẩn mở như HTTP, XML, SOAP, WSDL và chuẩn
bảo mật JSM được sử dụng rộng rãi khiến chúng trở thành lý tưởng để xây dựng các ứng dụng web Đầu tiên, dịch vụ Web sử dụng những công nghệ này giống như firewall, SSL và các chứng nhận số Dịch vụ Web thế hệ sau này sẽ kết hợp với những công nghệ có khả năng bảo mật cao hơn, giống như mã hóa XML và chứng nhận số XML
Như vậy, với một dịch vụ Web, việc giao tiếp và truyền nhận dữ liệu trở nên dễ dàng và hiệu quả hơn, đồng thời đem lại chi phí thấp hơn và tăng cường những khả năng giao tiếp thời gian thực, kết nối với mọi người trên khắp thế giới Bản chất của nền tảng công nghệ này là kiến trúc hướng dịch vụ và sự phát triển của dịch vụ Web có tương lai rất khả quan
1.6.7 Xây Dựng Một Web Service Với Jax-ws Và Jax-rs Trong Java
Jax-ws (java api for XML Web service) là bộ thư viện được phát triển dưới
sự quản lý của sun microsytem
Jax-ws giúp tạo ra các dịch vụ web sự dụng thông điệp XML Với việc được tích hợp sẵn trong bộ java EE SDK và được đóng gói kèm theo trong các bộ cộng cụ tích hợp dành cho java EE Nên jax-ws là bộ công cụ rất phổ biến để tạo ra những dịch vụ web
Trang 27Một web service được gọi thông qua thông điệp XML dự trên giao thức SOAP Các giao thức xác định cấu trúc phong bi, quy tắc mã hóa, và quý ước phải tuân theo trong trao đổi tin nhắn các hoạt động của dịch vụ web trên máy chủ được định nghĩa thông qua phương thức trong một interface Những phương thức này được viết trong java Trên phía client, các client tạo ra các proxy và gọi các phương thức trên proxy Hệ thống jax-ws chạy chuyển đổi các phương thức này gọi vào thông điệp SOAP và truy cập các máy chủ Client không hay biết gì về quá trình này
hình trên hiển thị làm thế nào để web service client và server có thể giao tiếp với nhau
Dưới đây là các bước để xây dựng một web service trong java với NetBean IDE:
1 Web service được phát triển trong một container Container này có thể là các web container hoặc các ejb container Việc bắt đầu tạo web service bằng việc tạo các container
2 Định nghĩa các web service bằng cách thêm các hoạt động cho web service Mọi thông số của các hoạt động có thể đã được thêm vào trong các dịch vụ web
3 Sau khi hoàn thành việc thêm các hoạt động đóng gói các web service trong các container và kiểm tra nó
4 Tạo các dịch vụ điểm cuối cho web service Một web service điểm cuối là một class hoặc 1 interface chung xác định tất cả các phương thức của client sẽ được gọi trên service Một web service có thể có các loại dịch vụ cuối khác nhau như là các trang jsp, servlet, java application, vv
Trang 28Trong Netbean IDE, một web container có thể đƣợc tạo bằng cách create a File
-> New project > java web > web Application Tại đây ta có thể đặt tên cho ứng dụng web nhƣ la InterestCalculatorApplication
Create một web service mới trong web container, chuột phải vào project InterestCalculatorApplication và chọn New -> Other -> Web service nhƣ hình sau
Click next Một web service đã đƣợc hiện thị Nó cung cấp tên của web service
và các gói trong web service
Trang 29Chọn tạo các web service cho scratch option và thực thi web service như là stateless Session Bean như trong hộp thoại nó ngầm định trạng thái phiên (session state) là non-persistent Click finish
Mỗi web service có tên InterestCalculatorWs.java đã đươcj tạo, chon Design và thêm các hoạt động cho web service
Thêm các hoạt động cho bằng cách add operation trong của sổ
Trang 30Một số phương thức đã được thêm vào trong web service
Mỗi phương thức web đã được tạo ra, đóng gói tất cả các hoạt động của web service
- Tạo Web Client
Mỗi client có thể là một trang jsp, servlet, hoặc một ứng dụng java, vd cu thể tạo
ra một trang jsp như là client
Tạo web application với tên là InterestCalculator_Client Thêm các web service client cho project bằng cách click chuột phải và chon New -> Other -> Web service client như hình sau
Trang 32Chọn web service InterestCalculatorWS và click finish Một web service tham chiếu tới các thƣ mục đƣợc tạo trong thƣ mục ứng dụng client
Double-click InterestCalculatorWS và nó sẽ mở file InterestCalculatorWS.wsdl nhƣ hình sau
Trang 33- web service khả năng tương tác và jax-ws:
Khả năng tương tác của dịch vụ web có thể đạt được thông qua 1 giao thức, phương thức giao tiếp chuẩn, các tập đoàn công nghiệp dịch vụ web tương tác (ws-i) đã định nghĩa một hồ sơ cơ bản ws-I, chúng cung cấp các hướng dẫn và kiểm tra để chắc chắn rằng tương tác được với web service.nó định nghĩa một tập hợp con tương thích với lõi các đặc tả web service trong đó bao gồm XML schema, SOAP, WSDL, and UDDI
Một lập trình viên có thể hoàn thành khả năng tương tác của web service bởi những hướng dẫn sau
1.7 Giới Thiệu Về REST:
REST là một danh sách các hướng dẫn hoặc các nguyên tắc áp dụng cho kiến trúc chuẩn trong hệ thông mạng, REST không phải là một giao thức và không phải là một chuẩn; nó là một phong cách kiến trúc (architeture-style) trên đó hệ thông được thiết kế phù hợp với giao thức, thành phần dữ liệu, hyperlinks, hoặc client
Trên world wide web, một hệ thông tài liệu liên kết siêu văn bản (interlinked hypertext) là một ví dụ của của phong cách kiến trúc REST Kiến trúc web bao gồm giao thức kết nối HTTP stateless, tài liệu phía server (server-side document) như là HTTP và XML được biết như là các tài nguyên chưa các hyperlink để liên kết với URIs, và giao diện phia client hoặc các ứng dụng đọc tài nguyên như browser Kiến trúc REST hướng dẫn quy định cụ thể về cách mà
dữ liệu được chuyển giao giữa client và server
Một số hạn chế khi áp dụng kiến trúc REST như sau:
- Client-Server: kiến trúc phải dựa trên hệ thống client server Việc trao đổi
thông tin giữa client và server hoàn thành sử dụng giao diện, giao thức chuẩn
- Stateless: giao tiếp client-server phải là stateless, mỗi yêu cầu từ mọi client
Trang 34- Cache: trong các ứng dụng dựa trên phong các kiến trúc REST, yêu cầu được
nhận về có thể được lưu trữ tại phía client tới một yêu cầu cụ thể Dữ liệu trong các yêu cầu nhận về ám chỉ chính nó hoặc một các rõ ràng nhãn có khả năng lưu nhớ hoặc không Client có thể tái sử dụng dữ liệu phản hồi cho các yêu cầu mới trong trường hợp respone có khả năng lưu trữ, do đó cải thiện hiệu suất ứng dụng và khả năng mở rộng
- layer components: một client yêu cầu có thể được chuyển tiếp tới server hiện
tại hoặc một server trung gian được thêm giữa client và server cho việc truy cập
dl, các server trung gian như là server proxy hoặc cache server được thêm vào giữa client và server hỗ trở việc cân bằng tải cũng như giúp đỡ thì hành các chính sách bảo mật
- Uniform interface: mỗi tài nguyên được truy cập bởi một client phải có một địa
chỉ duy nhất và được truy cập sử dụng loại interface như là HTTP get, post, put, and delete
- Code on demand: tại lúc chạy, một client có thể download thành phần như là
java applet chúng chuyển giao bởi server như là một đối tượng repost
1.8 RESTful Service
RESTful web service là một web service dựa trên kiến trúc REST nó
được truy cập sử dụng giao thức HTTP trên web Các đặc điểm của RESTful web service và web service dự trên SOAP đó là hai nền tảng ngôn ngữ độc lập
Web service dựa trên SOAP sử dụng giao thức SOAP trên HTTP để gửi dữ liệu tới server Mặt khác RESTful web service sử dụng Uniform Resource Identifier (URI) để gửi trực tiếp tới server trên giao thức cơ bản HTTP Như vậy RESTful web service truy cập thông qua một URIs và nó được so sánh là nhẹ hơn so với web service dựa trên SOAP Sau đây là các yêu cầu để phát triển một RESTful web service dựa trên kiến trúc REST
Trang 35Chuyển giao trạng thái biểu hiện hoặc REST là phong cách kiến trúc thiết kế web dịch vụ Nó nhấn mạnh kiến trúc client-server là stateless nơi mà web service được coi là nguồn tài nguyên và được truy cập thông qua URIs (Universal Resource Identifiers)
Sau đây là các tính năng quan trọng của RESTful service:
1.8.2 Representation Of A Resource
Representation có thể được định nghĩa như là một định dạng trong đó tài nguyên được gửi và nhận trong khi client và server tương tác trên web Các định dạng của tài nguyên Representation, trả về như là phản rồi tới client nó đại diện cho một trạng thái tạm của tài nguyên
Một tài nguyên được thể hiện trong định dạng dữ liệu khác nhau như là text, HTML, XML image, hoặc một đối tượng javascript ký hiệu (json) Client khác nhau có thể truy cập Representation khác nhau cho các tài nguyên giống nhau
Trang 361.8.3 URI
Một tài nguyên được xác định bởi một URI trong RESTful web service Một URI là sự kết hợp tên và địa chỉ của một tài nguyên, chúng giúp cho client và server trao đổi dữ liệu trong khi tương tác
1.8.4 HTTP
HTTP là một giao thức vận chuyển stateless sử dụng để trao đổi dữ liệu trên web Trình duyệt web hỗ trợ phương thức HTTP để gửi và nhận dữ liệu cho server Phương thức HTTP sử dụng thông dụng nhất để chuyển giao dữ liệu tới server trong một đối tượng request là GET và POST RESTful web service hỗ trợ những phương thức HTTP cho việc gửi và nhận dữ liệu representation như là tài nguyên của web Ngoài hai phương thức GET và POST, RESTful web service cũng hỗ trợ phương thức http khác như là: PUT HEAD, and DELETE Phương thức HTTP cũng biết đến với các động từ, mọi phương thức HTTP được yều cầu bởi client tương ứng với một hành động thực hiện trên tài nguyên được lưu trữ trên server, các hành động có thể là create, read, update and delete và cũng được biết đến như là CRUD actions
trong request
trong request
Trang 371.9 JAX-RS API
RESTful web service được phát triển trên nền tảng java sử dụng java API cho RESTful web service (JAX-RS) JAX-RS chỉ ra một API chính thức trên nền tảng java cho việc tạo ra web service dựa trên kiến trúc REST
JAX-RS là một java programing API, được thiết kế để đơn giản hóa quá trình phát triển RESTful web service sử dụng annotation Quá trình phát triển RESTful web service bao gồm một chú thích lớp java web service, biết đến như
là lớp tài nguyên JAX-RS API cho phép tạo ra hai loại tài nguyên như sau:
- root resource class
Đây là lớp java đóng vai trò như là đầu vào cho tất cả các tài nguyên thể hiện trong lớp các class là các chú thích sử dụng @Path annotation làm việc như là lớp tài nguyên gốc @Path annotation xác định trong JAX-RS API và định nghĩa dựa vào URI trong đó tài nguyên gốc có khả năng truy cập bởi client
- sub resource
Những phương thức thể hiệ trong lớp tài nguyên gốc các phương thức được chú thích sử dụng @Path annotation @Path annotation được thêm vào trên các phương thức định nghĩa URI chúng quan hệ trệ URI được định nghĩa trên lớp tài nguyên gốc
1.9.1 JAX-RS API Annotation
JAX-RS API annotation đơn giản hóa quá trình phát triển RESTful web service Những annotation giúp xác định các tài nguyên và các hành động được thực hiện trên tài nguyên được xác định Thông thường JAX-RS annotation chạy các annotation Tại lúc chạy, annotation sẽ xử lý các công cụ (APT) theo quy trình những chú thích và tạo ra lớp người giúp đỡ và hiện vật cần thiết cho lớp tài nguyên Biến annotation trong gói java.ws.rs phân loại như sau:
- @Path annotation
Trang 38- HTTP method annotation
- Annotation for injecting data from request URI
- data representation type annotation
1.9.1.1 @Path Annotation
@path annotation xác định URI của lớp web service, tổ chức như là một tài nguyên trên server @path annotation có một thuộc tính đơn nó chấp nhận một giá trị String Giá trị String nó xác định URI truy cập tài nguyên được đóng gói trên server và cũng được gọi như là URI template @Path annotation có thể sử dụng trong lớp web service tại các cấp độ sau
Class level: @Path annotation được sử dụng trước lớp web service URI
template được chỉ ra với @Path annotation là cơ sở đại diện cho các URI để truy cập mọi phương thức trong lớp web service
Method level: @Path annotation được xác định trên phương thức hiện tại trong
lớp web service URI template được xác định trong @Path annotation nó liên kết với lớp tài nguyên gốc áp dụng trên class web service Đoạn code hiển thị việc sử dụng @Path annotation với URI template áp dụng tại class level truy cập web service đóng gói trên web server
Trong đoạn code trên ProductsResource được chú thích bởi @Path annotation URI template /products, xác định với @Path annotation đại diện cho một URI để
Trang 39URI template cũng có thể được nhúng với các biến phục vụ truy cập tài nguyên Biến được nhúng trong các URI template được sử dụng để xác định các sup resouces có thể được truy cập tới lớp web service
@Path(“resourcesPath/{param1}/…/{paramN}”)
Trong đó {param1}/…/{paramN} trong dấu ngoặc là các biến giá trị của biến được thay thế lúc chạy một request được gọi bởi client Đoạn code hiển thị một URI template với một biến nhúng cho việc truy cập sub resources từ lớp web service trên web server:
Trong đoạn code trên phương thức getProductDetail() là một sub resources được chú thích sử dụng @Path annotation URI template ,/prod/{id} được đưa ra với
@Path annotation là URI cho phép truy cập phương thức getProductDetail() URI này có quan hệ và dựa trên URI, /products của class ProductsResoure {id} đại diện cho một biến nhúng trong URI, giá trị của biến {id} được thay thế với giá trị được gửi bởi client thông qua một request URI, Như vậy URI gọi phương thức getProductDetail từ ứng dụng phía client là: http:
Trang 40//localhost:8088/producetResource/webresources/products/prod/1 giá trị 1 sẽ thay thế giá trị trong biền {id} khi mà request được nhân về bởi class web service
1.9.1.2 HTTP Method Annotaion
Những chú thích được áp dụng trên phương thức của lớp tài nguyên và tương ứng là tên của phương thức HTTP như là GET, POST, UPDATE và DELETE Những annotation này được biết đến như là yêu cầu định danh phương thức (request method designators) Request method designators giúp xác định các phương thức chụi trách nhiệm xử lý HTTP request được gửi bởi client
Các annotatin trong gói javax.ws.rs tương ứng với các phương thức HTTP như GET, POST, UPDATE và DELETE là:
- @GET annotation ánh xạ tới HTTP GET method
- @POST annotation ánh xạ tới HTTP POST method
- @PUT annotation ánh xạ tới HTTP PUT method
- @DELETE annotation ánh xạ tới HTTP DELETE method
1.9.1.3 Injecting Data From Request URI Annotations
Đây là những annotation được sử dụng để trích xuất dữ liệu bởi request URI trong lớp tài nguyên
- @PathParam annotation
Được áp dụng trên các tham số của phương thức trong class web service Nó trích xuất giá trị biến nhúng trong URI template cho đến khi yêu cầu được gửi