2012-06-20 43 views
9

Dịch vụ web là một chức năng có thể được truy cập bởi các chương trình khác trên web (Http). Để làm rõ một chút, khi bạn tạo một trang web bằng PHP, đầu ra HTML mục tiêu của nó là trình duyệt và phần mở rộng là con người đang đọc trang trong trình duyệt. Một dịch vụ web không nhắm vào con người mà là ở các chương trình khác.Ứng dụng web RESTful có nghĩa là gì?

  1. SOAP và REST là hai cách tạo WebServices. Sửa tôi nếu tôi sai?
  2. Có những cách nào khác để tôi có thể tạo WebService?
  3. Ứng dụng web RESTful hoàn toàn có nghĩa là gì?
+3

Điều này có thể thuộc về http://programmers.stackexchange.com hoặc thậm chí trên [Google] (http://google.com). – lanzz

+0

Quảng cáo. 1 Không nhất thiết. Hai cách là Big Web Services và RESTful Web Services. Nó phức tạp hơn một chút so với việc sử dụng hoặc không sử dụng SOAP. SOAP có thể được sử dụng theo REST. Quảng cáo. 3 Đọc luận văn của Roy Fielding để tìm hiểu. Tôi cũng khuyên bạn nên đọc trên ROA (Kiến trúc định hướng tài nguyên), phần nào cụ thể hơn khái niệm của chính REST. Nó cũng là áp dụng phổ biến nhất của thiết kế RESTful. Nó thường bị nhầm lẫn với chính REST. – toniedzwiedz

+0

Trang web được cung cấp HTTP cũng không được nhắm mục tiêu vào con người, nhưng trước hết là ở trình duyệt HTTP;) Vì vậy, WWW phục vụ tài liệu siêu văn bản * là * một dịch vụ web. – hakre

Trả lời

4
  1. Đúng
  2. W3C định nghĩa một "Web service" là "một hệ thống phần mềm được thiết kế để hỗ trợ tương thích máy-to-máy tương tác qua mạng".
  3. Dịch vụ hoàn toàn RESTful là dịch vụ tuân thủ tất cả hoặc các ràng buộc kiến ​​trúc như được nêu trong luận án của Roy Fielding, Architectural Styles and the Design of Network-based Software Architectures. Nó được đọc lâu và có nhiều cách giải thích. Một khởi đầu tốt sẽ là tự làm quen với Richardson Maturity Model. LƯU Ý: Hầu hết các dịch vụ web yêu cầu RESTful chỉ ở level 2 trong mô hình đó.
0

Tôi nghĩ rằng để hiểu dịch vụ hoàn toàn RESTful bạn phải hiểu sự khác biệt giữa các dịch vụ RESTful và Dịch vụ Web tiêu chuẩn là gì. Nó khá tốt exaplained trong JEE6 Tutorial bởi Oracle:

WebServices

NonRESTful (Trong Java như JAX-WS): Dịch vụ web Big sử dụng tin nhắn XML theo Nghị định thư Simple Object Access chuẩn (SOAP), một Xác định ngôn ngữ XML a kiến ​​trúc tin nhắn và định dạng tin nhắn. Các hệ thống như vậy thường chứa mô tả có thể đọc được bằng máy về các hoạt động do dịch vụ cung cấp, được viết bằng Ngôn ngữ mô tả dịch vụ Web Ngôn ngữ (WSDL), một ngôn ngữ XML để xác định giao diện theo cú pháp. Định dạng thông báo SOAP và ngôn ngữ định nghĩa giao diện WSDL đã nhận được sự chấp nhận rộng rãi . Nhiều công cụ phát triển, chẳng hạn như NetBeans IDE, có thể làm giảm sự phức tạp của phát triển các ứng dụng dịch vụ web. Thiết kế dựa trên SOAP phải bao gồm các yếu tố sau.

■ Hợp đồng chính thức phải được thiết lập để mô tả giao diện mà dịch vụ web cung cấp. WSDL có thể được sử dụng để mô tả chi tiết của hợp đồng, có thể bao gồm thông báo, các hoạt động, các ràng buộc và vị trí của dịch vụ web . Bạn cũng có thể xử lý các thông điệp SOAP trong một dịch vụ JAX-WS mà không xuất bản WSDL.

■ Kiến trúc phải giải quyết các yêu cầu phi chức năng phức tạp. Nhiều dịch vụ web chỉ định các yêu cầu như vậy và thiết lập một từ vựng chung cho chúng. Ví dụ bao gồm giao dịch, bảo mật, giải quyết, tin cậy, phối hợp, v.v.

■ Kiến trúc cần xử lý việc xử lý và yêu cầu không đồng bộ.Trong các trường hợp như vậy, cơ sở hạ tầng được cung cấp theo tiêu chuẩn, chẳng hạn như Dịch vụ Web Tin nhắn đáng tin cậy (WSRM) và API, chẳng hạn như JAX-WS, với yêu cầu không đồng bộ phía máy khách của họ hỗ trợ, có thể được tận dụng.

Dịch vụ web RESTful (trong Java dưới dạng JAX-RS) Trong Java EE 6, JAX-RS cung cấp chức năng cho dịch vụ web Representational State Transfer (RESTful) . REST rất thích hợp cho các kịch bản tích hợp cơ bản, đặc biệt. Các dịch vụ web RESTful, thường được tích hợp tốt hơn với HTTP hơn các dịch vụ dựa trên SOAP, không yêu cầu các thông báo XML hoặc các định nghĩa API dịch vụ-WSDL. Dự án Jersey là triển khai tham chiếu sản xuất sẵn sàng cho đặc tả JAX-RS. Jersey thực hiện hỗ trợ cho các chú thích được xác định trong đặc tả JAX-RS, làm cho các nhà phát triển dễ dàng xây dựng các dịch vụ web RESTful với Java và Máy ảo Java (JVM).

Các loại Web Services Bởi vì các dịch vụ web RESTful sử dụng hiện W3C nổi tiếng và Internet Engineering Task Force (IETF) tiêu chuẩn (HTTP, XML, URI, MIME) và có một cơ sở hạ tầng nhẹ cho phép các dịch vụ được xây dựng với công cụ tối thiểu, việc phát triển các dịch vụ web RESTful là không tốn kém và do đó có một rào cản rất thấp để áp dụng. Bạn có thể sử dụng một công cụ phát triển như NetBeans IDE để giảm thêm sự phức tạp của việc phát triển các dịch vụ web RESTful. Thiết kế RESTful có thể phù hợp khi đáp ứng các điều kiện sau.

■ Dịch vụ web hoàn toàn vô quốc tịch. Một thử nghiệm tốt là xem xét liệu sự tương tác có thể tồn tại khi khởi động lại máy chủ hay không.

■ Cơ sở hạ tầng bộ nhớ đệm có thể được tận dụng để thực hiện. Nếu dữ liệu mà dịch vụ web trả về không được tạo động và có thể được lưu vào bộ nhớ cache, thì cơ sở hạ tầng lưu trữ trên web mà máy chủ và các trung gian khác cung cấp có thể được tận dụng để cải thiện hiệu suất . Tuy nhiên, nhà phát triển phải cẩn thận vì các bộ đệm như vậy được giới hạn ở phương thức HTTP GET cho hầu hết các máy chủ.

■ Nhà sản xuất dịch vụ và người tiêu dùng dịch vụ có sự hiểu biết lẫn nhau về ngữ cảnh và nội dung được truyền đi. Bởi vì không có cách chính thức để mô tả các dịch vụ web giao diện , cả hai bên phải đồng ý ra khỏi ban nhạc trên các lược đồ mô tả dữ liệu được trao đổi và về cách xử lý nó một cách có ý nghĩa. Trong thế giới thực, hầu hết các ứng dụng thương mại trưng ra các dịch vụ như triển khai RESTful cũng phân phối cái gọi là bộ công cụ giá trị gia tăng mô tả giao diện cho các nhà phát triển trong các ngôn ngữ lập trình phổ biến .

■ Băng thông đặc biệt quan trọng và cần phải giới hạn. REST đặc biệt hữu ích cho các thiết bị giới hạn , chẳng hạn như PDA và điện thoại di động, trong đó chi phí của các tiêu đề và các lớp bổ sung của các phần tử SOAP trên tải trọng XML phải bị hạn chế.

■ Phân phối hoặc tổng hợp dịch vụ web vào các trang web hiện tại có thể được bật dễ dàng với kiểu dáng RESTful. Các nhà phát triển có thể sử dụng các công nghệ như JAX-RS và JavaScript không đồng bộ với XML (AJAX) và các bộ công cụ như Direct Web Remoting (DWR) để tiêu thụ các dịch vụ trong ứng dụng web của họ.Thay vì bắt đầu từ đầu, các dịch vụ có thể được hiển thị với XML và được tiêu thụ bởi các trang HTML mà không cần phải tái cấu trúc đáng kể cấu trúc trang web hiện có . Các nhà phát triển hiện tại sẽ có năng suất cao hơn vì họ đang thêm vào thứ họ đã quen thuộc thay vì phải bắt đầu từ đầu bằng công nghệ mới.

Quyết định Loại nào Web Service để sử dụng

Về cơ bản, bạn sẽ muốn sử dụng dịch vụ web RESTful cho hội nhập trên các trang web và sử dụng dịch vụ web lớn trong kịch bản tích hợp ứng dụng doanh nghiệp đã tiến chất lượng dịch vụ (QoS) yêu cầu.

■ WebServices: giải quyết các yêu cầu QoS nâng cao thường xảy ra trong doanh nghiệp tính toán. [..]

■ RESTfull: giúp dễ dàng viết ứng dụng web áp dụng một số hoặc tất cả các ràng buộc của kiểu REST để tạo ra các thuộc tính mong muốn trong ứng dụng, chẳng hạn như khớp nối lỏng lẻo (phát triển máy chủ dễ dàng hơn) phá vỡ các máy khách hiện tại), khả năng mở rộng (bắt đầu nhỏ và phát triển) và đơn giản về kiến ​​trúc (sử dụng các thành phần không có sẵn, chẳng hạn như proxy hoặc HTTP bộ định tuyến). Bạn sẽ chọn sử dụng JAX-RS cho ứng dụng web của bạn bởi vì nó dễ dàng hơn cho nhiều loại khách hàng để sử dụng các dịch vụ web RESTful trong khi cho phép phía máy chủ để phát triển và mở rộng quy mô. Khách hàng có thể chọn để tiêu thụ một số hoặc tất cả các khía cạnh của dịch vụ và kết hợp với các dịch vụ dựa trên web khác.