Tôi đang triển khai dịch vụ web cho ứng dụng PHP và đang cố gắng hiểu cả dịch vụ web chuẩn và dịch vụ web RESTful nào phải cung cấp. Mục đích của tôi là viết mã bao bọc để trừu tượng hóa các chi tiết dịch vụ web để các nhà phát triển chỉ có thể "khởi tạo các đối tượng từ xa" và sử dụng chúng. Dưới đây là suy nghĩ của tôi, có lẽ một số bạn có thể thêm kinh nghiệm của bạn và mở rộng này:Dịch vụ web RESTful và SOAP khác nhau như thế nào trong thực tế?
RESTful Web servcies
về cơ bản chỉ là "XML feeds theo yêu cầu", vì vậy ví dụ bạn có thể viết mã wrapper cho một ứng dụng client để nó có thể truy vấn các ứng dụng máy chủ theo cách này:
$users = Users::getUsers("state = 'CO'");
- này sẽ lần lượt nhận được một nguồn cấp dữ liệu XML thành một URL từ xa
- $ người dùng có thể được thực hiện vào một bộ sưu tập đầy đủ đối tượng người dùng, hoặc
- trái như XML, hoặc
- biến thành một mảng vv
- kịch bản truy vấn ("state = 'CO'") sẽ được dịch sang SQL trên phía máy chủ
Dịch vụ web RESTful nói chung chỉ đọc từ chế độ xem của ứng dụng khách, mặc dù bạn có thể viết mã có thể sử dụng POST hoặc GET để thực hiện thay đổi trên máy chủ, ví dụ: chuyển mã thông báo được mã hóa để bảo mật, ví dụ:
$ users = Người dùng :: addUser ($ encryptedTrustToken, 'jim', $ encryptedPassword, 'James', 'Taylor');
và điều này sẽ tạo người dùng mới trên ứng dụng máy chủ.
Chuẩn Web Services
Chuẩn Web servcies cuối cùng về cơ bản làm điều tương tự. Một lợi thế mà họ có là khách hàng có thể khám phá chi tiết của họ thông qua WSDL. Nhưng ngoài ra, nếu tôi muốn viết mã trình bao bọc cho phép nhà phát triển khởi tạo, chỉnh sửa và lưu các đối tượng từ xa, tôi vẫn cần triển khai mã trình bao bọc. SOAP không làm được điều đó đối với tôi, nó có thể làm điều này:
$soap = new nusoap_client('http://localhost/test/webservice_user.php?wsdl', true);
$user = $soap->getProxy();
$lastName = $user->lastName();
nhưng nếu tôi muốn chỉnh sửa và tiết kiệm:
$user->setLastName('Jones');
$user->save();
sau đó tôi cần phải ví dụ xử lý tất cả các trạng thái ở phía máy chủ, SOAP dường như không giữ đối tượng đó ở phía máy chủ cho mỗi máy khách.
Có lẽ có những hạn chế trong triển khai SOAP PHP tôi đang sử dụng (nusoap). Có lẽ triển khai Java và .NET làm được nhiều hơn thế.
Sẽ thích nghe phản hồi của bạn để làm sáng tỏ một số trong những đám mây này.
Tôi không nhận được câu hỏi. Bạn không thể làm gì? Bạn gặp vấn đề gì? –