2012-09-26 49 views
18

Xin chào, tôi đã làm việc với JAX-WS cho các dịch vụ web dựa trên SOAP. Bây giờ tôi muốn sử dụng REST vì REST có lợi thế hơn SOAP khi tôi nghiên cứu về từ here.JAX-WS và JAX-RS Đối với Dịch vụ Web RESTful

Nhưng từ các bài viết khác nhau, tôi biết rằng chúng tôi cũng có thể tạo các dịch vụ web RESTful từ JAX-WS. Nhưng hầu hết mọi người nói rằng chúng ta nên sử dụng JAX-RS thay vì JAX-WS.

Câu hỏi của tôi là sự khác biệt giữa JAX-WS RESTful webservice và JAX-RS (áo). Những lợi thế của JAX-RS trên JAX-WS là gì? Và tại sao chúng ta nên sử dụng JAX-RS cho RESTful webservices?

Cảm ơn trước.

Trả lời

26

TL; DR

JAX-WS dành cho các dịch vụ web dựa trên XML như SOAP. JAX-RS không có cùng hạn chế.

JAX-WS thường hướng đến tương tác giữa máy chủ và máy chủ với các hợp đồng được xác định rõ ràng (WSDL) và thường khi dịch vụ và phía khách hàng là từ các nhóm riêng biệt. Nó rất chuyên sâu về tài nguyên vì vậy nó không khả thi cho các tương tác từ máy khách đến máy chủ, nơi khả năng của thiết bị mạng hoặc máy khách nhỏ hơn tối ưu.

JAX-RS được hướng đến tương tác từ máy khách đến máy chủ, mặc dù máy chủ đến máy chủ vẫn ổn. Vì nó có rất ít nghĩa vụ dịch vụ, nó có thể được điều chỉnh theo bất cứ nhu cầu nào của khách hàng.

Thông tin thêm

API JAX-RS chỉ cung cấp cách tiếp cận mã đầu tiên, trong khi JAX-WS cho phép cả hai mã đầu tiên (thường không khuyến khích) và hợp đồng đầu tiên sử dụng các file WSDL (thường được đề nghị).

JAX-RS 2.0 giới thiệu API khách hàng là trình bao bọc thông minh cho HttpUrlConnection có khả năng lập bản đồ nhiều hơn, JAX-WS cũng là trình bao bọc, nhưng dữ liệu mà nó đề cập trong triển khai tham chiếu chỉ là XML.

JAX-RS có lợi thế là tạo các API đơn giản hơn để tạo và tiêu hóa thư trong các trình duyệt và thiết bị di động khác nhau, cụ thể là cấu trúc JSON. Nó không giới thiệu khái niệm về một phong bì và sử dụng HTTP cho nó. Nó không giới thiệu mật mã hoặc bảo mật, nó sử dụng HTTPS cho nó.

JAX-WS mặc dù nó chạy trên HTTPS để mã hóa cung cấp bổ sung cho bảo mật bằng cách sử dụng WS-SecurityPolicy vv Ngoài ra, hợp đồng được thiết lập vững chắc bằng WSDL và có thể được xác minh bên ngoài ứng dụng bằng cách sử dụng ESB chẳng hạn như DataPower.

Vì vậy, những gì để lựa chọn

JAX-WS nói chung là hướng tới máy chủ để tương tác với máy chủ hợp đồng được xác định rõ (WSDLs) và thường khi dịch vụ và phía khách hàng là từ các nhóm riêng biệt. Nó rất chuyên sâu về tài nguyên vì vậy nó không khả thi cho các tương tác từ máy khách đến máy chủ, nơi khả năng của thiết bị mạng hoặc máy khách nhỏ hơn tối ưu.

JAX-RS được hướng đến tương tác từ máy khách đến máy chủ, mặc dù máy chủ đến máy chủ vẫn ổn. Nghĩa vụ hợp đồng duy nhất giữa máy khách và máy chủ là thông điệp và các tiêu đề yêu cầu. Vì nó có rất ít nghĩa vụ dịch vụ, nó có thể được điều chỉnh theo bất cứ nhu cầu nào của khách hàng.Tuy nhiên, việc sử dụng các API dịch vụ RESTful cũng giống như việc lập trình meta như Ruby và Python làm chậm trễ các vấn đề về thời gian chạy vì không có lược đồ được xác định nào được hai bên chấp thuận và thực thi về mặt kỹ thuật. Vì vậy, tôi không khuyên bạn nên sử dụng các dịch vụ RESTful ở khắp mọi nơi, nhưng tôi khuyên bạn nên sử dụng nó nếu tôi có quyền kiểm soát hai mặt thường xảy ra khi bạn xây dựng một ứng dụng web sử dụng HTML/CSS/JS tĩnh và nói chuyện với một máy chủ RESTful cho dữ liệu.

Các vấn đề liên quan