API so với dịch vụ web [đã đóng]


204

Sự khác biệt giữa dịch vụ web và API là gì? Là sự khác biệt nhiều hơn giao thức được sử dụng để truyền dữ liệu? cảm ơn.


3
Theo API, bạn có nghĩa là một API được truy cập bởi HTTP? Hay chỉ là một API đơn giản thông thường?
Pablo Santa Cruz



Bạn phải đùa tôi. 122 upvote và câu hỏi bị hỏng do mức độ trộn.
Joshua

bạn hiểu ý tôi, tôi không chắc tại sao câu hỏi này lại bị đóng
chip

Câu trả lời:


172

API (Giao diện lập trình ứng dụng) là phương tiện để bên thứ ba có thể viết mã có giao diện với mã khác. Dịch vụ web là một loại API, một loại hầu như luôn hoạt động trên HTTP (mặc dù một số, như SOAP, có thể sử dụng các phương tiện vận chuyển thay thế, như SMTP). Các định nghĩa của W3C chính thức đề cập rằng Web Services không nhất thiết sử dụng HTTP, nhưng điều này là hầu như luôn luôn như vậy và thường được giả định trừ nêu khác.

Để biết ví dụ về các dịch vụ web cụ thể, hãy xem SOAP , RESTXML-RPC . Để biết ví dụ về một loại API khác, một loại được viết bằng C để sử dụng trên máy cục bộ, hãy xem API hạt nhân Linux .

Theo như giao thức, API dịch vụ web hầu như luôn sử dụng HTTP (do đó là phần Web) và chắc chắn liên quan đến giao tiếp qua mạng. API nói chung có thể sử dụng bất kỳ phương tiện giao tiếp nào họ muốn. Ví dụ, API kernel của Linux sử dụng Interrupts để gọi các cuộc gọi hệ thống bao gồm API của nó cho các cuộc gọi từ không gian người dùng.


8
Bạn có xem mọi dịch vụ web là API không? Làm thế nào về việc sử dụng AJAX để tải lại một vùng của trang web trái ngược với tải lại toàn bộ trang? Tôi không nhất thiết phải xem đây là API mặc dù có liên quan đến dịch vụ web. Mặt khác, chúng ta có thể tạo ra một trường hợp cho mọi bit chức năng từng được tạo, trong DLL, hoặc JAR, dịch vụ web hoặc mã đơn giản là tất cả các API. Để API trở thành API, phải có các nhà phát triển bên thứ 3 và API không nên phụ thuộc vào sản phẩm cuối cùng (ứng dụng đang sử dụng API).
Ronald

18
Có, mỗi Dịch vụ web là một API. Có, Dịch vụ web AJAX là một API, nó chỉ không có giấy tờ và do đó không thực sự có ý nghĩa cho tiêu dùng công cộng. Không phải mọi API đều là API được thiết kế cho tiêu dùng của bên thứ 3. Bạn cũng có thể có API nội bộ.
Ryan Shillington

54

Về cơ bản, dịch vụ web là một phương thức giao tiếp giữa hai máy trong khi API là lớp tiếp xúc cho phép bạn lập trình chống lại thứ gì đó.

Bạn rất có thể có một API và phương thức tương tác chính với API đó là thông qua một dịch vụ web.

Các định nghĩa kỹ thuật (lịch sự của Wikipedia) là:

API

Giao diện lập trình ứng dụng (API) là một tập hợp các thường trình, cấu trúc dữ liệu, lớp đối tượng và / hoặc giao thức được cung cấp bởi các thư viện và / hoặc các dịch vụ hệ điều hành để hỗ trợ xây dựng các ứng dụng.

Dịch vụ web

Một dịch vụ Web (cũng là Dịch vụ Web) được W3C định nghĩa là "một hệ thống phần mềm được thiết kế để hỗ trợ tương tác giữa máy với máy có thể tương tác qua mạng"


4
Tôi ổn với ai đó phản đối câu trả lời của tôi nhưng tôi tò mò muốn biết tại sao.
Mark Biek

41
Phản hồi của bạn ngụ ý rằng API và Dịch vụ web là khác biệt, trong thực tế, dịch vụ web là một loại API. Vì mấu chốt của câu hỏi này là sự khác biệt giữa hai câu hỏi, điều quan trọng đối với câu trả lời là làm rõ rằng dịch vụ web là một loại API.
Andrew Cholakian

3
Hấp dẫn. Tôi sẽ phải (trân trọng :)) không đồng ý. Nhưng tôi đánh giá cao thông tin phản hồi.
Mark Biek

43

Trong một cảm giác chung một webservice một API qua HTTP. Họ thường sử dụng JSON hoặc XML, nhưng cũng có một số cách tiếp cận khác.


20
Vì vậy, tất cả các dịch vụ web là API nhưng không phải tất cả API là dịch vụ web?
chip

13
Đúng vậy, API có thể là các thư viện như DLL, JAR hoặc OCX, v.v. Chúng cũng có thể là một bản phân phối mã nguồn như api PHP của Facebook ...
cgp

10

API là một giao diện được xuất bản xác định cách thành phần A giao tiếp với thành phần B.

Ví dụ: Doubleclick có API Java được xuất bản cho phép người dùng thẩm vấn các bảng cơ sở dữ liệu để lấy thông tin về chiến dịch quảng cáo trực tuyến của họ.

ví dụ: gọi GetNumberClicks (tên người dùng)

Để triển khai API, bạn phải thêm tệp Doubleclick .jar vào đường dẫn lớp. Cuộc gọi là địa phương.

Dịch vụ web là một dạng API trong đó giao diện được xác định bằng phương tiện của WSDL. Điều này cho phép gọi từ xa một giao diện qua HTTP.

Nếu Doubleclick triển khai giao diện của họ dưới dạng dịch vụ web, họ sẽ sử dụng thứ gì đó giống như Axis2 chạy bên trong Tomcat.

Người dùng từ xa sẽ gọi dịch vụ web

ví dụ: gọi GetNumberClicksWebService (tên người dùng)

và dịch vụ GetNumberClicksWebService sẽ gọi GetNumberClicks tại địa phương.


Câu hỏi này thực sự cũ, nhưng tôi sẽ lưu ý rằng câu trả lời này gây nhầm lẫn các API và giao diện. API không chỉ là một giao diện được xuất bản (bao gồm những thứ như SOAP), đó là giao diện chung cho một ứng dụng hoặc dịch vụ cụ thể. Sẽ chính xác hơn khi nói điều gì đó như "API là các thành phần có giao diện được xuất bản theo đó các thành phần bên thứ ba có thể tương tác với chúng."
JDB vẫn còn nhớ Monica

7

API (Giao diện lập trình ứng dụng), bản thân biểu mẫu đầy đủ gợi ý rằng Giao diện cho phép bạn lập trình cho ứng dụng của mình với sự trợ giúp hoặc hỗ trợ của một số Giao diện ứng dụng khác hiển thị một số chức năng hữu ích cho ứng dụng của bạn.

Ví dụ: hiển thị tỷ giá hối đoái được cập nhật trên trang web của bạn sẽ cần một số Giao diện của bên thứ ba để lập trình trừ khi bạn có kế hoạch để có cơ sở dữ liệu của riêng mình với tỷ giá tiền tệ và cập nhật thường xuyên giống nhau. Nhóm chức năng này là khi đã có sẵn với một số người khác và khi họ muốn chia sẻ nó với những người khác, họ phải có một điểm cuối để liên lạc với những người khác quan tâm đến các tương tác đó để họ triển khai nó trên web bằng phương tiện web- dịch vụ. Điểm cuối này không có gì ngoài giao diện của ứng dụng của họ mà bạn có thể lập trình dựa trên API.


4

API là tích hợp dựa trên mã trong khi dịch vụ web là tích hợp dựa trên thông báo với các tiêu chuẩn có thể tương tác có hợp đồng như WSDL.


Tôi không chắc chắn rằng câu trả lời của bạn thêm bất cứ điều gì vào câu trả lời hiện có.
andrewsi

3

Hãy nghĩ về dịch vụ web như một api web. API là một thuật ngữ chung hiện nay vì vậy một dịch vụ web là một giao diện cho chức năng, thường liên quan đến kinh doanh, mà bạn có thể nhận được từ mạng qua nhiều giao thức khác nhau.


1

Kiểm tra http://en.wikipedia.org/wiki/Web_service này

Vì liên kết được đề cập sau đó API Web là một sự phát triển trong các dịch vụ Web rất có thể liên quan đến Web 2.0, trong khi các dịch vụ dựa trên SOAP được thay thế bằng truyền thông dựa trên REST. Lưu ý rằng các dịch vụ REST không yêu cầu các định nghĩa API dịch vụ XML, SOAP hoặc WSDL nên điều này khác với dịch vụ web truyền thống.


0

một ví dụ khác: dịch vụ web google map api vs google direction api, trong khi trước đây phục vụ (cung cấp) tệp javascript cho trang web (sau đó có thể được sử dụng làm api để tạo chức năng mới), sau này là dịch vụ web Rest cung cấp dữ liệu ( ở định dạng json hoặc xml), có thể được xử lý (nhưng không được sử dụng theo nghĩa api).


1
Uhm ... javascript có thể được trả về dưới dạng dữ liệu và sau đó được sử dụng làm mã, đây không phải là một sự tương phản hợp lệ
David C
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.