2012-05-11 29 views
89

Gần đây, tôi quyết định bắt đầu tìm hiểu về các dịch vụ web java và khi tôi bắt đầu tìm kiếm hướng dẫn cho các dịch vụ web java trong google, tôi phát hiện ra rằng có rất nhiều loại dịch vụ web dựa trên XML, SOAP, cũng như các dịch vụ web RESTful.Tôi cần tìm hiểu các Dịch vụ Web bằng Java. Các loại khác nhau trong đó là gì?

Ngoài ra, tôi thấy rằng có một đặc tả JAX-WS cho các dịch vụ web dựa trên xml và đặc tả JAX-RS để tạo các dịch vụ web RESTful.

Q1) Tôi đã nhầm lẫn, sẽ rất tuyệt nếu ai cũng có thể giúp tôi hiểu sự khác biệt giữa các loại dịch vụ web khác nhau, để tôi có thể quyết định cái nào cần học đầu tiên.

Q2) Ngoài ra, tôi muốn tìm hiểu chuyên sâu về việc tạo các loại dịch vụ web khác nhau trong java. Có bất kỳ hướng dẫn hoặc tài nguyên nào có thể cung cấp thông tin chi tiết về từng loại dịch vụ web và so sánh giữa chúng hay không.

Q3) dựa trên những tình huống và điều kiện nào tôi nên quyết định rằng tôi muốn tạo một dịch vụ web dựa trên XML thay vì dịch vụ SOAP hoặc tôi nên sử dụng dịch vụ RESTful.

+0

[Hướng dẫn Java EE 6] (http://docs.oracle.com/javaee/6/tutorial/doc/) –

+1

Câu hỏi hay.thanks – Krishna

Trả lời

138
  1. SOAP Web Services dựa trên tiêu chuẩn và được hỗ trợ bởi hầu hết mọi nền tảng phần mềm: Chúng dựa chủ yếu vào XML và hỗ trợ giao dịch, bảo mật, thư không đồng bộ và nhiều vấn đề khác. Đó là một tiêu chuẩn khá lớn và phức tạp, nhưng bao gồm gần như mọi tình huống nhắn tin. Ở phía bên kia, RESTful services dựa vào giao thức HTTP và động từ (GET, POST, PUT, DELETE) để trao đổi thông điệp ở bất kỳ định dạng nào, JSON và XML thích hợp hơn. Đó là một cách tiếp cận kiến ​​trúc khá đơn giản và thanh lịch.
  2. Như trong mọi chủ đề trong thế giới Java, có một số thư viện để xây dựng/sử dụng Dịch vụ Web. Ở bên SOAP, bạn có JAX-WS standardApache Axis và trong REST, bạn có thể sử dụng Restlets hoặc Spring REST Facilities trong số các thư viện khác.

Với câu hỏi 3, this article khẳng định rằng dịch vụ RESTful là thích hợp trong tình huống này:

  • Nếu bạn đã giới hạn băng thông
  • Nếu hoạt động của bạn là quốc tịch: Không có thông tin được bảo tồn từ một gọi đến kế tiếp, và mỗi yêu cầu được xử lý độc lập.
  • Nếu khách hàng của bạn yêu cầu bộ nhớ đệm.

Trong khi SOAP là con đường để đi khi:

  • Nếu bạn yêu cầu không đồng bộ xử lý
  • Nếu bạn cần chính thức hợp đồng/giao diện
  • Trong hoạt động dịch vụ của bạn là stateful: Ví dụ, bạn lưu trữ thông tin/dữ liệu theo yêu cầu và sử dụng dữ liệu được lưu trữ đó trên dữ liệu tiếp theo.
+11

+1 để rõ ràng và nêu rõ các tình huống :) –

+0

Câu trả lời rõ ràng và rõ ràng. – Krishna

+0

+1 để có câu trả lời hay ... !!! –

13

Q1) Dưới đây là những cặp vợ chồng để đọc hoặc google hơn:

Main differences between SOAP and RESTful web services in java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Đó là tùy thuộc vào bạn những gì bạn muốn tìm hiểu đầu tiên. Tôi khuyên bạn nên xem qua khuôn khổ CXF. Bạn có thể xây dựng cả dịch vụ phần còn lại/xà phòng.

Q2) Dưới đây là vài hướng dẫn tốt cho xà phòng (tôi đã cho họ đánh dấu trang):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

Cách tốt nhất để tìm hiểu là không chỉ đọc hướng dẫn. Nhưng trước tiên bạn sẽ đi hướng dẫn máng để có được một ý tưởng cơ bản để bạn có thể thấy rằng bạn có thể sản xuất một cái gì đó (hoặc không) và điều đó sẽ giúp bạn có động lực.

SO là cách tuyệt vời để tìm hiểu công nghệ cụ thể (hoặc nhiều hơn), mọi người hỏi rất nhiều câu hỏi kỳ lạ và có những câu trả lời kỳ lạ hơn. Nhưng nhìn chung, bạn sẽ tìm hiểu về các cách giải quyết vấn đề theo cách khác. Có lẽ bạn không biết theo cách đó, có thể bạn không thể nghĩ về nó một mình.

Đăng ký vài thẻ thú vị với bạn và kiên trì, đặt câu hỏi hay và cố gắng đưa ra câu trả lời hay và tôi đảm bảo với bạn rằng bạn sẽ học được thời gian này (nếu bạn kiên trì).

Q3) Bạn sẽ phải tự trả lời câu hỏi này. Đầu tiên bằng cách quyết định những gì bạn sẽ xây dựng, sau khi tất cả các bạn sẽ cần phải suy nghĩ của một số dự án mini hoặc một cái gì đó và mang nó từ đó.

Nếu bạn quyết định sử dụng CXF làm khuôn khổ của bạn để xây dựng dịch vụ REST/SOAP, tôi khuyên bạn nên tra cứu cuốn sách này Apache CXF Web Service Development. Thật tuyệt vời, không khó đọc và cũng không quá lớn (giành chiến thắng).

+1

+1 cho sách :) – Saju

7

SOAP WS hỗ trợ cả hai cuộc gọi thủ tục từ xa (tức là RPC) và phong cách tích hợp thông báo giữa (MOM). Dịch vụ Web Restful chỉ hỗ trợ kiểu tích hợp RPC.

SOAP WS là giao thức truyền tải trung lập. Hỗ trợ nhiều giao thức như HTTP (S), Nhắn tin, TCP, UDP SMTP, vv REST là giao thức vận tải cụ thể. Chỉ hỗ trợ giao thức HTTP hoặc HTTPS.

SOAP WS chỉ cho phép định dạng dữ liệu XML. Bạn xác định các hoạt động, đường hầm nào qua POST. Trọng tâm là truy cập các hoạt động được đặt tên và hiển thị logic ứng dụng dưới dạng dịch vụ. REST cho phép nhiều định dạng dữ liệu như XML, dữ liệu JSON, văn bản, HTML, vv Bất kỳ trình duyệt nào cũng có thể được sử dụng vì phương pháp REST sử dụng các hoạt động GET, PUT, POST và DELETE chuẩn. Trọng tâm là truy cập các tài nguyên được đặt tên và hiển thị dữ liệu dưới dạng dịch vụ. REST có hỗ trợ AJAX. Nó có thể sử dụng đối tượng XMLHttpRequest. Tốt cho các hoạt động CRUD (Tạo, Đọc, Cập nhật và Xóa) không trạng thái. GET - đại diện() POST - acceptRepresention() PUT - storeRepresention() DELETE - removeRepresention()

SOAP dựa đọc không thể được lưu trữ. Đọc dựa trên REST có thể được lưu trong bộ nhớ cache. Thực hiện và cân tốt hơn. SOAP WS hỗ trợ cả bảo mật SSL và bảo mật WS, bổ sung một số tính năng bảo mật doanh nghiệp như duy trì quyền bảo mật cho đến khi cần, duy trì danh tính thông qua trung gian và không chỉ trỏ tới điểm SSL, đảm bảo các phần khác nhau của thông điệp với các thuật toán bảo mật khác nhau, vv REST chỉ hỗ trợ bảo mật SSL điểm-điểm.SSL mã hóa toàn bộ thông điệp, cho dù tất cả có nhạy cảm hay không. SOAP có hỗ trợ toàn diện cho cả quản lý giao dịch dựa trên ACID cho các giao dịch ngắn hạn và quản lý giao dịch dựa trên bồi thường cho các giao dịch dài hạn. Nó cũng hỗ trợ hai pha cam kết trên các tài nguyên phân tán. REST hỗ trợ các giao dịch, nhưng nó không tuân thủ ACID cũng như không thể cung cấp hai pha cam kết trên các tài nguyên giao dịch phân tán vì nó bị giới hạn bởi giao thức HTTP của nó.

SOAP có thành công hoặc thử lại logic được tích hợp và cung cấp độ tin cậy đầu cuối ngay cả thông qua trung gian SOAP. REST không có một hệ thống nhắn tin chuẩn, và hy vọng các máy khách sẽ gọi dịch vụ để xử lý các lỗi truyền thông bằng cách thử lại.

nguồnhttp://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

+0

> Dịch vụ web an toàn chỉ hỗ trợ kiểu tích hợp RPC. REST không phải là RPC, RPC nói, "định nghĩa một số phương thức làm điều gì đó" trong khi REST nói, "định nghĩa một số tài nguyên và chúng sẽ có các phương thức này". http://www.peej.co.uk/articles/rest.html – pmu

0

Nếu ứng dụng của bạn thường xuyên sử dụng giao thức http thì Văn là tốt nhất vì trọng lượng nhẹ của nó, và biết rằng ứng dụng của bạn chỉ sử dụng giao thức http chọn SOAP không phải là quá tốt vì nó nặng hơn, tốt hơn quyết định lựa chọn dịch vụ web dựa trên các giao thức chúng tôi sử dụng trong các ứng dụng của mình.

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