API ve Web Hizmeti [kapalı]


205

Bir web hizmeti ve bir API arasındaki fark nedir? Fark, veri aktarmak için kullanılan protokolden daha mı fazla? Teşekkürler.


3
API ile, HTTP tarafından erişilen bir API mı demek istediniz? Yoksa sadece normal bir API mı?
Pablo Santa Cruz


1
Ayrıca bkz. Programcılar.SE: Web API ve Web Hizmeti arasındaki fark?
Hippietrail

Benimle dalga geçiyor olmalısın. 122 upvotes ve soru karıştırma seviyeleri nedeniyle kırık.
Joshua

Beni anladın, bu sorunun neden kapandığından emin değilim
cips

Yanıtlar:


173

Bir API (Uygulama Programlama Arayüzü), üçüncü tarafların diğer kodlarla arayüz oluşturan kod yazabilmeleri anlamına gelir. Web Hizmeti, hemen hemen her zaman HTTP üzerinden çalışan bir API türüdür (SOAP gibi bazıları SMTP gibi alternatif aktarımları kullanabilir). Resmi W3C tanımı Web Hizmetleri mutlaka HTTP kullanmayın bahseder, ancak bu hemen hemen her zaman böyledir ve aksi belirtilmediği sürece genellikle kabul edilir.

Özellikle web hizmetlerine örnekler için bkz. SOAP , REST ve XML-RPC . Yerel bir makinede kullanılmak üzere C ile yazılmış başka bir API türü örneği için bkz. Linux Çekirdek API'sı .

Protokol ile ilgili olarak, bir Web hizmeti API'si hemen hemen her zaman HTTP kullanır (bu nedenle Web bölümü) ve kesinlikle bir ağ üzerinden iletişimi içerir. API'lar genel olarak istedikleri iletişim araçlarını kullanabilirler. Örneğin Linux çekirdek API'sı, kullanıcı alanından gelen aramalar için API'sını oluşturan sistem çağrılarını çağırmak için Kesmeler'i kullanır .


8
Her web hizmetini API olarak değerlendirir misiniz? Bir web sayfasının bir bölümünü tüm sayfayı yeniden yüklemek yerine yeniden yüklemek için AJAX'ı kullanmaya ne dersiniz? Bir web hizmeti dahil olsa bile mutlaka bu API olarak görmüyorum. Aksi takdirde, bir DLL veya JAR, web hizmeti veya düz kodda oluşturulan tüm işlev bitleri için tüm API'lar olabilir. Bir API'nin API olması için üçüncü taraf geliştiricileri akılda tutması gerekir ve API'nın nihai ürüne (API'yi kullanan uygulama) herhangi bir bağımlılığı olmamalıdır.
Ronald

18
Evet, her Web Hizmeti bir API'dir. Evet, bir AJAX Web Hizmeti bir API'dir, sadece belgelenmemiştir ve bu nedenle kamu tüketimi için gerçekte değildir. Her API üçüncü taraf tüketimi için tasarlanmış bir API değildir. Dahili API'larınız da olabilir.
Ryan Shillington

54

Temel olarak, bir web hizmeti iki makine arasındaki iletişim yöntemidir, API ise bir şeye karşı programlamanıza izin veren açık bir katmandır.

Bir API'niz çok iyi olabilir ve bu API ile etkileşime girmenin ana yöntemi bir web servisidir.

Teknik tanımlar (Wikipedia'nın izniyle):

API

Bir uygulama programlama arayüzü (API), uygulamaların oluşturulmasını desteklemek için kütüphaneler ve / veya işletim sistemi hizmetleri tarafından sağlanan bir dizi rutin, veri yapısı, nesne sınıfı ve / veya protokoldür.

İnternet servisi

Bir Web hizmeti (ayrıca Web Hizmeti) W3C tarafından "bir ağ üzerinde birlikte çalışabilir makine-makine etkileşimini desteklemek için tasarlanmış bir yazılım sistemi" olarak tanımlanır.


4
Cevabım için itiraz eden biriyle sorun yok ama nedenini merak ediyorum.
Mark Biek

41
Yanıtınız, aslında bir web hizmeti bir tür API olduğunda API'lerin ve Web Hizmetlerinin farklı olduğunu gösterir. Bu sorunun özü, ikisi arasındaki farkın ne olduğundan, yanıtın web hizmetlerinin bir tür API olduğunu açıklığa kavuşturması önemlidir.
Andrew Cholakian

3
İlginç. (Saygılarımla :)) aynı fikirde olmam gerekecek. Ama geri bildirimi takdir ediyorum.
Mark Biek

44

Genel anlamda bir webservice IS HTTP üzerinden bir API. Genellikle JSON veya XML kullanırlar, ancak başka yaklaşımlar da vardır.


20
Yani tüm web hizmetleri API'dır, ancak tüm API'ler bir web hizmeti değildir?
cips

13
Doğru, API'ler DLL, JAR veya OCX gibi kütüphaneler olabilir .. Ayrıca Facebook'un PHP api gibi bir kaynak kodu dağıtım olabilir ...
cgp

10

API'ler, A bileşeninin B bileşeniyle nasıl iletişim kurduğunu tanımlayan yayınlanmış bir arabirimdir.

Örneğin, Doubleclick, kullanıcıların çevrimiçi reklam kampanyaları hakkında bilgi almak için veritabanı tablolarını sorgulamasına olanak tanıyan yayınlanmış bir Java API'sine sahiptir.

örneğin GetNumberClicks'i arayın (kullanıcı adı)

API'yi uygulamak için Doubleclick .jar dosyasını sınıf yolunuza eklemeniz gerekir. Çağrı yerel.

Web hizmeti, arayüzün bir WSDL aracılığıyla tanımlandığı bir API biçimidir. Bu, HTTP üzerinden bir arayüzün uzaktan çağrılmasını sağlar.

Doubleclick arayüzlerini bir web servisi olarak uygularsa, Tomcat'in içinde çalışan Axis2 gibi bir şey kullanırlardı.

Uzak kullanıcı web hizmetini arayacaktı

örneğin GetNumberClicksWebService'i (kullanıcı adı) arayın

GetNumberClicksWebService hizmeti GetNumberClicks'i yerel olarak çağırır.


Bu soru gerçekten eski, ancak bu cevabın API'ları ve arayüzleri karıştırdığını not edeceğim. Bir API, yayınlanmış bir arayüzden (SOAP gibi şeyleri içerir) daha fazlasıdır, belirli bir uygulama veya hizmetin genel arayüzüdür. "API'ler, üçüncü taraf bileşenlerin kendileriyle etkileşime girebileceği yayınlanmış bir arayüze sahip bileşenlerdir" demek daha doğru olur.
JDB hala Monica

7

API (Uygulama Programlama Arayüzü), tam formun kendisi, uygulamanız için yararlı olan bir tür işlevselliği ortaya çıkaran başka bir Uygulama Arayüzünün yardımı veya desteği ile uygulamanız için programlamanıza izin veren bir Arayüz olduğunu önerir.

Örneğin, döviz kurları ve düzenli güncellemeler ile kendi veritabanına sahip olmayı planlamıyorsanız, web sitenizde güncellenmiş döviz kurlarını göstermek için bazı üçüncü taraf Arayüzüne ihtiyaç duyarsınız. Bu işlevsellik seti, başka biriyle zaten mevcut olduğunda ve bunu başkalarıyla paylaşmak istediklerinde, bu tür etkileşimlerle ilgilenen diğer insanlarla iletişim kurmak için bir uç noktaya sahip olmaları gerekir, böylece web üzerinden web üzerinden dağıtırlar. Hizmetler. Bu son nokta, API'sine karşı programlayabileceğiniz uygulamalarının arayüzünden başka bir şey değildir.


4

API kod tabanlı entegrasyon, web hizmeti ise WSDL gibi bir sözleşmeye sahip birlikte çalışabilir standartlarla mesaj tabanlı entegrasyon.


Cevabınızın mevcut cevaplara bir şey eklediğinden emin değilim.
andrewsi

3

Web hizmetini bir web API'si olarak düşünün. API şimdi böyle genel bir terimdir, bu nedenle bir web hizmeti, işle ilgili, genellikle işle ilgili bir arayüzdür ve çeşitli protokoller üzerinden ağdan ulaşabilirsiniz.


1

Şuna göz at http://en.wikipedia.org/wiki/Web_service adresini

Bahsedilen bağlantıda Web API, Web hizmetlerinde büyük olasılıkla Web 2.0 ile ilgili bir gelişmedir, SOAP tabanlı hizmetlerin yerini REST tabanlı iletişim alır. REST hizmetlerinin XML, SOAP veya WSDL hizmet-API tanımları gerektirmediğini ve bu durumun geleneksel web hizmetinden çok farklı olduğunu unutmayın.


0

başka bir örnek: google map api vs google yön api web hizmeti, eski site siteye javascript dosyası sunarken (daha sonra yeni işlevler yapmak için api olarak kullanılabilir), daha sonra veri gönderen bir Rest web hizmetidir ( json veya xml biçiminde) (işlenemez ancak api anlamda kullanılmaz).


1
Uhm ... javascript veri olarak döndürülebilir ve daha sonra kod olarak kullanılabilir, bu geçerli bir kontrast değildir
David C
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.