Ƣu và nhƣợc điểm của Webservice

Một phần của tài liệu Xây dựng ứng dụng tổng hợp tin tức từ các trang tin và chương trình đọc tin trên thiết bị di động Android (Trang 32)

4.1.1. Khái ni m

Nói một cách đơn giản, Web service là một ứng dụng, một tiện ích mà các nhà phát triển muốn cung cấp rộng rãi cho nhiều người, nhiều tổ chức có thể sử dụng, tương tự như khi chúng ta xây dựng một trang web để cả thế giới có thể vào xem. Web service 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 khác là người dùng (client) của các Web service không chỉ là trình duyệt web (web browser) mà còn có thể là những ứng dụng chạy trên máy tính cá nhân (desktop) hay trên các thiết bị di động (mobile device).

4.1.2. ặc điểm của Web service

Theo đặc tả của W3C (World Wide Web Consortium), Web service có khả năng tương tác với các hệ thống khác thông qua một giao diện chung được mô tả bằng XML.

Web service 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.

Một Web service bao gồm nhiều module và được công bố trên mạng Internet để người dùng có thể sử dụng.

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, Java, Oracle Application server hay Microsoft.NET…

4.1.3. Ƣu và nhƣợc điểm của Web service 4.1.4. Ƣu điểm 4.1.4. Ƣu điểm

 Web service cung cấp khả năng hoạt động rộng lớn và linh hoạt với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau.

 Nền tảng của Web service là công nghệ XML. Hầu hết các hệ thống đều có thể đọc và hiểu được file XML.

23

 Thúc đẩy phát triển 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 Web service và công bố rộng rãi trên mạng Internet.

 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 dịch vụ, 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.

 Ở góc độ doanh nghiệp, Web service là một công nghệ phục vụ rất tốt trong việc quảng bá dịch vụ của mình cho đa dạng khách hàng.

4.1.5. Nhƣợc điểm

 Có quá nhiều chuẩn cho Web service khiến cho người dùng khó nắm bắt cũng như gây khó khăn cho các nhà phát triển.

 An toàn và bảo mật thông tin là một vấn đề nan giải của Web service.

 Có nhiều vấn đề về các tác vụ đòi hỏi transaction (ví dụ như chuyển tiền qua lại giữa các ngân hàng) chưa được giải quyết hoàn chỉnh.

 Tốc độ thực thi (performance) của Web service phụ thuộc rất nhiều vào tốc độ đường truyền Internet và nhìn chung các Web service thực thi chậm hơn các ứng dụng bình thường khác.

 Vấn đề chất lượng dịch vụ (Quality of Service - QoS) còn chưa được đảm bảo, nhất là khi Web service bị rơi vào tình trạng quá tải và có thể gây ra những thiệt hại lớn cho phía máy khách.

Tổng quan về REST 4.2.

4.2.1. Giới thi u REST

REST là một kiểu kiến trúc dựa trên chuẩn web và giao thức HTTP. REST lần đầu tiên được mô tả bởi Roy Fielding vào năm 2000.

Trong một kiến trúc dựa trên REST, mọi thứ đều là tài nguyên. Một tài nguyên được truy cập thông qua một giao diện thông thường dựa trên các phương thức theo chuẩn HTTP.

24

Trong một kiến trúc dựa trên REST, thông thường sẽ có một REST server để cung cấp sự truy cập tới tài nguyên và một REST client để truy cập và chỉnh sửa các tài nguyên REST.

Mỗi tài nguyên nên được hỗ trợ bởi các phương thức HTTP phổ biến. Các tài nguyên được xác định bởi các ID, điển hình là các URI.

REST cho phép các tài nguyên có các kiểu trình bày khác nhau, ví dụ text, xml, json, … REST client có thể yêu cầu một kiểu trình bày cụ thể thể thông qua giao thức HTTP (yêu cầu nội dung).

4.2.2. c phƣơng thức HTTP

Các thao tác PUT, GET, POST và DELETE thường được sử dụng trong các kiến trúc dựa trên REST. (adsbygoogle = window.adsbygoogle || []).push({});

Mô tả các phương thức HTTP:

 GET là một thao tác "chỉ đọc", mang hai tính chất: không thay đổi và an toàn. Không thay đổi nghĩa là dù có thực hiện thao tác bao nhiêu lần thì kết quả là luôn như nhau. An toàn thể hiện ở chỗ thao tác ngoài việc lấy về dữ liệu thì không gây nên một thay đổi nào đối với server (thay đổi về dữ liệu).

 PUT thường được sử dụng trong thao tác insert hoặc update tài nguyên. Nó cũng là một thao tác không thay đổi. Khi sử dụng PUT, client biết trước định danh của tài nguyên đó. Không đổi ở chỗ thao tác PUT nếu được thực hiện lại thì sẽ không gây ra thêm thay đổi nào cho server. Một ví dụ tương tự là một tài liệu Word mà bạn đang chỉnh sửa, bạn nhấp vào nút "lưu" bao nhiêu lần thì tài liệu vẫn không thay đổi.

 DELETE là thao tác thường được dùng để xóa tài nguyên.

 POST là thao tác duy nhất không có tính không đổi và không an toàn của HTTP. Nó được hạn chế tính không đổi để tạo cảm giác linh hoạt cho người sử dụng. Trong một hệ thống RESTFul, POST thường được sử dụng để tạo tài nguyên mà bạn không biết rõ định danh. Với PUT bạn biết chính xác đối tượng bạn đang tạo.

4.2.3. Các nguyên tắc của kiến trúc RESTful

REST không phải là giao thức cụ thể, nhưng khi người ta nói về REST họ thường nghĩ REST qua HTTP. Các công nghệ như SOAP sử dụng HTTP nghiêm

25

ngặt như một giao thức truyền tải và do đó sử dụng một tập hợp con rất nhỏ các khả năng của HTTP. Nhiều người sẽ nói rằng Web Service sử dụng HTTP chỉ để tạo đường hầm thông qua tường lửa. HTTP thực sự là một giao thức ứng dụng rất phong phú mang đến cho chúng ta những thứ như đàm phán nội dung và bộ nhớ đệm phân tán. Các RESTful Web service cố gắng tận dụng HTTP bằng cách sử dụng nguyên tắc kiến trúc cụ thể của nó. Các nguyên tắc của RESTful Web service:

 Địa chỉ hóa các tài nguyên. Mỗi thứ trên mạng của bạn sẽ có một ID. Với REST qua HTTP, mỗi đối tượng sẽ có URI cụ thể của riêng mình.

 Một giao diện hạn chế, không thay đổi. Khi áp dụng REST qua HTTP, phải bám vào các phương thức được cung cấp bởi HTTP. Điều này có ý nghĩa phải sử dụng đúng ý nghĩa các phương thức GET, POST, PUT và DELETE.

 Hướng trình diễn. Một đối tượng được tham chiếu bởi một URI có thể có các kiểu trình bày nội dung khác nhau. Các nền tảng khác nhau cần các định dạng khác nhau. AJAX có thể cần JSON. Một ứng dụng Java có thể cần XML.

 Giao tiếp phi trạng thái. Các ứng dụng phi trạng thái dễ dàng hơn khi mở rộng.

4.2.4. RESTful Web service

Một RESTful Web service dựa trên các phương thức HTTP và khái niệm của REST. Một RESTful Web service thường xác định URI cơ sở cho các dịch vụ, hỗ trợ các loại MIME (XML, Text, JSON, người dùng định nghĩa, …) và một tập các thao tác (POST, GET, PUT, DELETE) được hỗ trợ.

JAX-RS và Jersey 4.3.

4.3.1. Giới thi u JAX-RS

Java hỗ trợ REST thông qua đặc tả Java Specification Request 311 (JSR). Đặc tả này được gọi là JAX-RS (Java API for RESTful Web Service). JAX-RS sử dụng các annotation để định nghĩa tính liên quan với REST của các lớp Java.

Jersey là một cài đặt cụ thể của đặc tả này. Jersey cơ bản bao gồm một REST server và một REST client. Client được cung cấp một thư viện để giao tiếp với server.

26

Ở phía server, Jersey sử dụng một servlet có thể quét các lớp được xác định trước để xác định tài nguyên RESTful. Các lớp được quét được định nghĩa thông qua các tập tin cấu hình web.xml.

URL cơ sở của servlet là:

http://your_domain:port/display-name/url-pattern/path_from_rest_class

Servlet này phân tích các yêu cầu HTTP đến và lựa chọn chính xác lớp và phương thức để đáp ứng yêu cầu này. Lựa chọn này dựa trên các annotation của lớp và các phương thức.

Một ứng dụng web REST bao gồm các lớp tài nguyên và các dịch vụ. Hai loại này được duy trì trong các gói khác nhau trong servlet Jersey, và được chỉ dẫn thông qua web.xml để biết gói nào chứa các lớp dữ liệu.

4.3.2. Các annotation của JAX-RS

Các annotation quan trọng nhất trong JAX-RS được liệt kê trong bảng 4.1.

Annotation Mô tả

@PATH(your_path) Thiết lập đường dẫn cơ sở URL + /your_path.

@POST Chỉ ra rằng phương thức dưới đây sẽ trả lời cho một yêu (adsbygoogle = window.adsbygoogle || []).push({});

cầu HTTP POST.

@GET Chỉ ra rằng phương thức dưới đây sẽ trả lời cho một yêu

cầu HTTP GET.

@PUT Chỉ ra rằng phương thức dưới đây sẽ trả lời cho một yêu

cầu HTTP PUT.

@DELETE Chỉ ra rằng phương thức dưới đây sẽ trả lời cho một yêu

cầu HTTP DELETE.

@Produces(type [, type]) @Produces xác định loại MIME nào sẽ được đáp ứng khi đi với phương thức có annotation với @GET.

27

@Consumes(type[,type]) @Consumes xác định loại MIME được nhận từ client bởi phương thức có annotation này.

@PathParam Được sử dụng để đưa các giá trị từ URL vào một tham

số của phương thức.

@QueryParam Đưa giá trị của một tham số truy vấn HTTP tham số vào

giá trị của một biến trong phương thức.

Bảng 4.1. Các annotation của JAX-RS

4.3.3. Giới thi u Jersey

Jersey là thư viện mã nguồn mở cài đặt chi tiết đặc tả JAX-RS (JSR 311). Là cài đặt tham chiếu để xây dựng các RESTful Web service. Ngoài việc là bản cài đặt tham chiếu, Jersey cung cấp một API để các nhà phát triển có thể mở rộng Jersey cho phù hợp với nhu cầu của họ.

Xây dựng một RESTful Web Service đơn giản với JAX-RS Jersey 4.4.

4.4.1. Yêu cầu ban đầu

Trước khi tiến hành xây dựng một RESTful Web Service đơn giản, máy tính cần được chuẩn bị sẵn một số thành phần sau:

 JDK hoặc JRE 7. Tải về và cài đặt JDK hoặc JRE tại địa chỉ sau: http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-

1880261.html

 Một server Java như Jboss, Apache Tomcat,… Tải về và cài đặt server Apache Tomcat 7 tại địa chỉ sau: http://tomcat.apache.org/download-70.cgi

 Thư viện JAX-RS Jersey. Tải về thư viện Jersey tại địa chỉ sau: https://jersey.java.net/download.html

4.4.2. Xây dựng Web service đơn giản

28

Hình 4.1. Tạo một Dynamic Web Project

Copy tất cả các tập tin trong thư viện Jersey vào trong thư mục WEB-INF/lib. Tạo một lớp tài nguyên như sau.

package com.example; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello")

public class Hello { (adsbygoogle = window.adsbygoogle || []).push({});

// Phương thức được gọi nếu yêu cầu kiểu TEXT

@GET

29 public String sayPlainTextHello() { return "Hello Jersey";

}

// Phương thức được gọi nếu yêu cầu XML

@GET

@Produces(MediaType.TEXT_XML)

public String sayXMLHello() {

return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" +

"</hello>"; }

// Phương thức được gọi nếu yêu cầu HTML

@GET

@Produces(MediaType.TEXT_HTML)

public String sayHtmlHello() {

return "<html> " + "<title>" + "Hello Jersey" + "</title>"

+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; }

}

Lớp này đăng ký chính nó như là một nguồn tài nguyên thông qua annotation

@GET. Thông qua annotation @Produces nó xác định kiểu MIME lần lượt là TEXT, XML và HTML. Annotation @Path xác định tài nguyên được gọi trên URL

thông qua đường dẫn /hello. Nếu yêu cầu được gửi từ trình duyệt web thì kết quả trả về là HTML.

Cần phải đăng ký Jersey là điều phối servlet cho các yêu cầu REST. Mở tập tin web.xml và chỉnh sửa như sau:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"

version="2.5">

30 <servlet>

<servlet-name>Jersey REST Service</servlet-name> <servlet- class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet- class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.example</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> (adsbygoogle = window.adsbygoogle || []).push({});

<servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern>

</servlet-mapping> </web-app>

Tham số "com.sun.jersey.config.property.packages" định nghĩa packet nào Jersey sẽ tìm kiếm các lớp web service. Thuộc tính này phải trỏ đến các lớp tài nguyên của bạn. Mẫu URL xác định một phần của URL cơ sở ứng dụng của bạn.

4.4.3. Chạy thử Web service

Chạy ứng dụng web của bạn trong Eclipse. Xem WTP Eclipse để biết chi tiết làm thế nào để chạy các ứng dụng web động.

Có thể kiểm tra dịch vụ REST bằng cách truy cập vào địa chỉ sau từ trình duyệt:

http://localhost:8080/SampleWebservice/rest/hello. Với:

 /SampleWebService là tên project.

 /rest là mẫu URL được khai báo trong tập tin web.xml.  /hello được định nghĩ bằng annotation @Path trong lớp java.

31

Khi truy cập địa chỉ trên từ trình duyệt, kết quả hiển thị trên trình duyệt sẽ là "Hello Jersey". Hình 4.2 thể hiện kết quả truy vấn Web service từ trình duyệt.

32

CHƢƠNG 5: CÔNG NGH RSS, ATOM RSS

5.1.

5.1.1. RSS là gì ?

RSS (Really Simple Syndication - Dịch vụ cung cấp thông tin cực kì đơn giản). Đây là dịch vụ cho phép bạn tìm kiếm những thông tin mà mình quan tâm và đăng ký để nhận được các thông tin đó thông qua các phần mềm đọc tin (được gọi là News Reader hay RSS Reader). RSS giúp bạn lựa chọn cập nhật và cung cấp các thông tin tóm lược mới nhất. Trên cơ sở các thông tin tóm lược của RSS, bạn sẽ có thể xem xét và quyết định truy xuất nguồn tài nguyên nào trên mạng.

Về khía cạnh kỹ thuật, RSS thực chất là một tài liệu XML. Đây là một ngôn ngữ đánh dấu mở rộng, là chuẩn dùng để mô tả dữ liệu, với các thẻ (tag) được quy định để có thể trao đổi được thông tin với nhau. Trong tài liệu này, thẻ gốc (root tag) bắt buộc phải có tên là rss, thẻ gốc này sẽ chứa một thẻ có tên là channel để định nghĩa kênh tin, mỗi kênh tin có nhiều thẻ item để chứa nội dung thông tin. Để cung cấp thông tin tóm lược, trong mỗi thẻ item sẽ có các thẻ con để quy định nội dung tiêu đề, nội dung tóm tắt của tin và địa chỉ URL để liên kết đến nội dung chi tiết của tin đó.

5.1.2. Những điểm mạnh của RSS

Ưu điểm nổi trội của RSS là thông tin được cập nhật liên tục từ website tới độc giả. Do chỉ cung cấp các thông tin tóm lược nên tiêu đề của RSS sẽ được liên kết đến website cung cấp thông tin. Vì vậy các nhà cung cấp thông tin sẽ không lo lắng về việc mất bản quyền thông tin cũng như việc giảm số lượt truy cập vào website của mình. Ngược lại, RSS cho phép tăng cường sự tiếp cận với người dùng mà không cần phải có một chiến dịch quảng bá rầm rộ thông quan việc giới thiệu và truyền tải những thông tin hấp dẫn trên website đến độc giả.

Về phía độc giả, công nghệ này sẽ giúp họ tìm kiếm được các thông tin quan trọng qua các nguồn RSS và tiết kiệm được rất nhiều thời gian do RSS chỉ lưu trữ những đầu mục thông tin ngắn gọn, liên tục được cập nhật. Đồng thời, họ có thể tiếp cận thông tin theo sở thích của mình dựa trên nhiều tiêu chí khác nhau mà không cần phải cung cấp email của mình cho nhà cung cấp thông tin như khi đăng

33

ký một bản tin thư (newsletter). Ở một góc độ khác, bạn cũng có thể tái sử dụng những thông tin của RSS để phục vụ cho các mục đích của mình.

5.1.3. Cấu trúc của file RSS

Cấu trúc của một file RSS chuẩn 2.0: <?xml version="1.0"?>

<rss version="2.0">

<!== Tất cả nội dung nằm trong thẻ channel ==> <channel>

Một phần của tài liệu Xây dựng ứng dụng tổng hợp tin tức từ các trang tin và chương trình đọc tin trên thiết bị di động Android (Trang 32)