2009-07-20 35 views
7

Câu hỏi của tôi là cần thiết đối với một số hiểu biết tắt webservices cơ bản và specificly hơn kết hợp với phpCó cần thiết phải có một tệp wsdl để tạo một webservice trong php không?

Tôi muốn biết, nếu nó là neccasary để có một tập tin WSDL để tạo ra một webservice hoặc là chỉ một cái gì đó điều đó hữu ích cho bên thứ ba muốn truy cập webservice? Ngoài ra, nó được tạo tự động trong các môi trường .net, nhưng đối với php thì khó hơn một chút.

Tùy chọn của tôi là gì?

Điều tôi đang làm sau là tạo ứng dụng jm2ee trên điện thoại di động của tôi, dữ liệu này sẽ gửi dữ liệu đến webservice theo thời gian. Tôi đọc ở đâu đó mà bạn phải cung cấp các đối số khi không có tệp wsdl. Điều đó có nghĩa là gì? và/hoặc những tác động đó là gì?

Cảm ơn ADV, Richard

Trả lời

1

văn bản tập tin WSDL trong một có thể đọc được định dạng máy (XML) những gì các phương pháp (và args cho các phương pháp) được cung cấp bởi một dịch vụ web. Bạn không cần một tệp WSDL nếu bạn biết những gì các phương thức và arg là - mặc dù WSDL rất tốt để có như một phương tiện làm cho giao diện công cộng dịch vụ web nhiều hơn 'hợp đồng', nếu bạn muốn.

Theo sự hiểu biết của tôi, thư viện PHP không có chức năng tự động tạo tệp WSDL cho bạn.

+0

nhưng nếu bạn không sử dụng, nó sẽ không bị chậm trễ hoặc kém hiệu quả hơn? – Richard

+0

Dường như bạn đúng về wsdl, nhưng có những lựa chọn thay thế. xem http://www.brainbell.com/tutorials/php/Creating_A_Web_Service_With_PHP_5%27s_SOAP_Extension.htm –

+0

@Richard sử dụng wsdl có xu hướng * ít hiệu quả hơn. Các tệp này có thể trở nên lớn một cách nhanh chóng, vì vậy thời gian truy xuất và phân tích cú pháp trở nên không nhỏ. –

0

Hỗ trợ dịch vụ web được tích hợp vào php5, nơi bắt đầu tốt nhất của bạn là documentation.

5

Tôi muốn biết, nếu nó là neccasary để có một tập tin WSDL để tạo ra một webservice

Không, nó không phải là cần thiết (ít nhất, không phải trong PHP): nó giúp mọi người biết làm thế nào để truy cập vào webservice của bạn (mà phương pháp, đối tượng, ... nên được sử dụng), nhưng một WS có thể được gọi là thậm chí nếu nó không xuất khẩu một WSDL

Đối với PHP, vâng , hơi khó để g và một WSDL (nhiều lớp không tạo ra chúng :-(); vẫn còn, bạn có thể generatd nó với một công cụ khác (có những công cụ trong Eclipse để viết các tập tin WSDL, ví dụ).

PEAR::Soap đã có thể tạo WSDL từ mã PHP (nhưng bạn phải viết nhiều dòng mã để làm đúng) - xem xét có một lớp có trong PHP 5 để làm việc với SOAP, tôi sẽ 't khuyên bạn nên sử dụng này, anyway.

Để biết thêm thông tin, bạn có thể có một cái nhìn tại địa chỉ:

+0

Vâng, hãy để tôi thêm điều gì đó vào những gì tôi đã nói: có thể với Zend_Soap, bạn có thể tạo WSDL sau tất cả; xem http://framework.zend.com/manual/en/zend.soap.wsdl.html về điều đó: nó nói "Gói Zend_Soap_Wsdl chứa cả trình phân tích cú pháp và trình tạo tài liệu WSDL." (Tôi chưa thử, mặc dù, và không biết nó hoạt động tốt như thế nào) –

+0

Điều đó dường như là một trong những lựa chọn giới hạn. Zend studio là một phần mềm trả phí. Đó là một trong những lý do nêu rõ câu hỏi của tôi. – Richard

+0

Tôi không nói về Zend Studio: Tôi đã nói về Eclipse (miễn phí, cũng như Eclipse PDT) và về Zend Framework (miễn phí). Zend Studio là một IDE có chi phí tiền bạc, có; nhưng Zend Framework là một khung công tác PHP miễn phí (không tốn tiền và giấy phép BSD) –

3

Nếu bạn đang tạo cả khách hàng và các dịch vụ web, sau đó là không có nhu cầu đặc biệt để futz với SOAP, WSDL, hoặc bất kỳ nhạc jazz nào.

Chỉ cần sử dụng thông tin cơ bản về web: khách hàng có thể sử dụng GET để tìm nạp thông tin và POST để gửi thông tin. Bạn có thể định dạng dữ liệu theo bất kỳ cách nào bạn muốn, nhưng JSONXML là các cách tiếp cận phổ biến, được xác định rõ.

Nếu bạn muốn cảm hứng cho thiết kế API của bạn, hãy kiểm tra một số ví dụ phổ biến:

Đó là đủ để giúp bạn bắt đầu, nhưng nếu bạn là cu rious về triết lý thiết kế, bạn có thể đọc lên trên Representational State Transfer hoặc REST.

+0

Ok, bây giờ tôi đang bối rối một lần nữa tôi bắt đầu đọc hướng dẫn netbeans, bởi vì tôi muốn gửi dữ liệu gps đến trang web để hiển thị. Một webservice dường như là cách đúng đắn để làm điều đó. Dù sao, tôi muốn mở rộng kiến ​​thức của tôi về các dịch vụ web để nó sẽ hữu ích. Nếu không cho điều này thì cho cái gì khác. Cảm ơn bạn đã liên kết. – Richard

+0

Bạn có nghĩa là, rằng tất cả các api ví dụ được dựa trên kiến ​​trúc REST ?? – Richard

+0

Xin chào, Richard. Có rất nhiều cách khác nhau để thực hiện các dịch vụ web. Sử dụng WSDL và SOAP là một cách. Nhưng đặc biệt nếu bạn đã quen với việc xây dựng mọi thứ cho trang web, hãy thực hiện một cách tiếp cận RESTful đơn giản có thể dễ dàng hơn nhiều. Tôi không biết RESTful tất cả các API đó như thế nào; Google và Yahoo nhận được rất nhiều. Một số người trong số họ chắc chắn có cả hai phiên bản REST và SOAP. Nhưng Twitter và Flickr là các ví dụ REST khá tốt. Tôi cũng quên đề cập đến Amazon; nhiều API của chúng là các ví dụ REST tốt. –

0

Một số nguồn sẽ sử dụng thuật ngữ "webservice" đồng nghĩa với SOAP. Đó là một sự nhầm lẫn. SOAP là một giao thức cụ thể - Đó là một cách để tạo dịch vụ web. Có những công nghệ khác có sẵn. Nói chung SOAP là tiêu chuẩn ưa thích với trong Java và .net, nhưng nó là một sự phù hợp xấu bên ngoài lĩnh vực này. Nếu bạn có tùy chọn, tôi khuyên bạn nên xem xét xml-rpc (cái nào đơn giản hơn và có hỗ trợ trực tiếp tốt hơn trên php) hoặc dịch vụ dựa trên http (Còn được gọi là REST based).

+0

Ý của bạn là gì, nó được hỗ trợ tốt hơn bởi php. Bởi vì tôi nghĩ rằng đó là một predeccessor tắt các chức năng xà phòng bản địa như tắt php5.xxx? và tất cả họ đều đang gửi dữ liệu qua giao thức cắt lớp http? – Richard

+0

Giao thức SOAP vô cùng phức tạp. Phần mở rộng xà phòng hiện tại chỉ thực hiện một tập hợp con của nó (Đặc biệt là phía máy chủ khá thay đổi). xml-rpc là một giao thức đơn giản hơn nhiều, vì vậy phần mở rộng bao gồm nó khá tốt. Đúng là xà phòng phát triển từ xml-rpc, nhưng điều đó không có nghĩa là xml-rpc đã lỗi thời. – troelskn

+0

Giao thức SOAP không phức tạp. "Phức tạp" liên quan đến cái gì? So với TCP/IP? Và sự phức tạp thường bị ẩn bởi các công cụ. Nếu không có công cụ miễn phí nào để ẩn biểu mẫu "phức tạp" PHP, thì tôi hiểu tại sao nó được coi là "phức tạp". –

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