it-swarm-tr.com

API ve SDK arasındaki fark nedir?

Gerçekten bir [~ # ~] api [~ # ~] denilen bir şey arasındaki farkı anlayamadığımı fark ettiğimde, çeşitli API'ları ve SDK'ları inceliyordum. denir [~ # ~] sdk [~ # ~] .

Her ikisi de, kavramsal olarak, başka bir yazılımın bir web hizmeti, bir son kullanıcı uygulaması, bir işletim sistemi hizmeti veya arka plan programı veya bir çekirdek olsun, programınızın başka bir yazılım tarafından sağlanan kaynaklarla arabirim oluşturması ve kontrol etmesi için bir yoldur aygıt sürücüsü.

SDK ile API arasındaki anlamsal fark nedir?

184
KeithS

Bunun yerine "Tüm SDK'ler/API'ler içerir, ancak tüm API'ler SDK'lar değildir" satırları boyunca düşüyor düşünüyorum.

Bir SDK, uygulama oluşturmak için ihtiyaç duyduğunuz tüm eylemleri gerçekleştirmenize izin veren eksiksiz bir API seti gibi görünüyor. Buna ek olarak bir SDK, platform/ürün için geliştirilmeye yönelik başka araçlar da içerebilir.

Öte yandan bir API sadece belirli bir amaç için iyi olabilecek bir dizi ilgili yöntemdir.

Örneğin, JDK (Java Geliştirme Kiti) API'nin yanı sıra derleyicileri, çalışma zamanlarını ve diğer çeşitli araçları içerir. Java API, kutunun dışında çalışabileceğiniz temel dili oluşturan tüm kütüphanelerdir.

180
user7007
  • API = Uygulama Programlama Arayüzü
  • SDK = Yazılım Geliştirme Kiti

Yani gerçek fark, bir API'nin "bazı hizmet" arayüzünden daha fazla veya daha az olmaması, SDK ise belirli bir amaç için bir takım araçlar/bileşenler/sınıflar olmasıdır. Bir SDK aslında size arayüz oluşturacak bir API sunar. Ancak, temel bileşenlere sahip olmadan bir API kullanabilirsiniz, örneğin API bir web hizmeti aracılığıyla sağlandığında.

API örnekleri:

SDK örnekleri:

88
back2dos

API → dokümante edilmiş arayüz (belirli bir zamanda ve belirli bir kitle için. Dokümantasyon kamuoyunda eksik ve/veya kullanılamıyor olabilir ve bu amaç doğrultusunda olabilir, ancak bu dokümante edilmesi gerektiği gerçeğini azaltmaz üçüncü tarafların kullanması için.)

SDK → arayüz belgeleri (+ örnekler ve araçlar)

24
ZJR

"SDK", "API" den daha geniş anlamda kolektiftir.

Bir platformun tamamını kapsayacak şekilde genellikle yalnızca bir SDK bulunur. Örneğin bir MacOS X SDK ve bir iOS SDK var ve bunların her biri birçok farklı işlevsellik alanı için API'ler içeriyor.

"API" başlangıçta kolektif bir terim olarak da kullanılmış ve hala bu şekilde (MAPI, WSAPI, vb.) Kullanılmaktadır, ancak genellikle belirli bir teknoloji ile sınırlıdır. “API” nin ima ettiği kapsam yıllar içinde azalmış görünmektedir; insanlar "Mac Toolbox API" ya da "Windows API" hakkında konuşurlardı, ikisi de lot işlevselliği içeriyordu. Bu günlerde, tek bir sistem işlevi anlamına gelen "API" yi duymak nadir değildir; bir işletim sisteminin yeni sürümünün yüzlerce yeni API içerdiği söylenebilir ve bunun anlamı yüzlerce yeni sistem çağrısıdır.

Her iki terim de bir bağlam olmadan çok kesin değildir.

17
Caleb

API nedir?

API, yazılım programlarının birbirleriyle etkileşime girmesini sağlayan bir arabirimdir. Birbirleriyle iletişim kurmak için programların izlemesi gereken bir dizi kural tanımlar. API'ler genellikle iki uygulamanın iletişim kurabilmesi için rutinlerin, veri yapılarının vb. Nasıl tanımlanması gerektiğini belirtir. API'lar, sağladığı işlevsellik bakımından farklılık gösterir. Java API gibi bir programlama dilinin kütüphane işlevlerini sağlayan genel API'ler vardır. Google Haritalar API'sı gibi belirli işlevler sağlayan API'ler de vardır, ayrıca dile bağlı API'lar da vardır. Dahası, çeşitli programlama dilleriyle kullanılabilen dilden bağımsız API'ler vardır API'lerin, yalnızca gerekli işlevsellik veya verileri dışarıya maruz bırakarak, diğer parçaları koruyarak çok dikkatli bir şekilde uygulanması gerekir. API'lerin kullanımı internette çok popüler hale geldi.Web üzerinde bir API aracılığıyla bazı fonksiyonellik ve verilere izin vermek çok yaygın hale geldi.Bu fonksiyon, daha iyi bir fonksiyonellik sunmak için birleştirilebilir. kullanıcılar.

SDK nedir?

SDK, belirli bir platformu hedefleyen yazılım uygulamaları geliştirmek için kullanılabilecek bir dizi araçtır. SDK'lar, bir programcının uygulama geliştirmesine yardımcı olacak araçlar, kütüphaneler, belgeler ve örnek kod içerir. SDK'ların çoğu internetten indirilebilir ve SDK'ların birçoğu, programcıları SDK'nın programlama dilini kullanmaya teşvik etmek için ücretsiz olarak sağlanır. Yaygın olarak kullanılan bazı SDK'lar, Java'da yazma programlarını daha kolay hale getirecek tüm kütüphaneleri, hata ayıklama yardımcı programlarını vb. İçeren Java SDK (JDK) 'dır. SDK'lar yazılım geliştiricisinin hayatını kolaylaştırır , birbirleriyle uyumlu bileşenleri/araçları aramaya gerek olmadığından ve hepsi de kurulumu kolay tek bir pakete entegre edilmiştir.

API ve SDK arasındaki fark nedir?

API, yazılım programlarının birbirleriyle etkileşime girmesine olanak tanıyan bir arabirimken, SDK belirli bir platformu hedefleyen yazılım uygulamalarını geliştirmek için kullanılabilecek bir dizi araçtır. Bir SDK'nın en basit sürümü, belirli bir programlama diliyle etkileşim kurmak için gereken bazı dosyaları içeren bir API olabilir. Böylece bir API, tüm hata ayıklama desteği vb. Olmadan basit bir SDK olarak görülebilir.

12
chiranjib

Bir SDK, bir API'dan (başka bir uygulamayla arayüz yardımcı olacak dosyalar) başka bir şey olmayabilir, ancak genellikle hata ayıklamaya ve IDE'niz için diğer parçalara yardımcı olacak başka kodlar içerir.

Kısaltmaların dışındayım.

7
JeffO

Daha önce bahsedilen her şey doğrudur, ancak SDK hakkında, bir yazılım geliştirme kitinin geliştirme süreci için gerekli tüm araçlarla (neredeyse) gerçekten eksiksiz bir paket olduğunu (veya olması gerektiğini) eklemek isterim, API "sadece" bir arayüzdür ile etkileşim.

5
Scorchio

Diğer cevapların çoğu, bir SDK'nın araç olduğunu açıklar, ancak hiçbiri doğrudan çıkmaz ve bir API'nın şartname olduğunu söylemez.

Bileşen X için API, X ile etkileşime girecek başka bir bileşen yazmak için ihtiyacınız olan tüm bilgilerdir. X bileşeni için bir SDK, bunu yazmanızı kolaylaştıran kütüphane rutinleri içerebilir. ancak kütüphaneler API değildir: API'nin yalnızca somut örneği değeridir.

1
Solomon Slow

İki sentim: API teriminin sıklıkla yanlış kullanıldığına inanıyorum.

API, bir Uygulama Programlama Arayüzüdür.

Her ne kadar garip bir isim olsa da, bu bir arayüz anlamına gelir. Dolayısıyla, bir uygulamanın diğer uygulamaların kendisiyle iletişim kurmasına izin verecek bir API'si olabilir . Ve bir yazılım parçası (örneğin, OO sistemindeki bir sınıf) sistemdeki diğer modüllerin onunla iletişim kurmasına izin vermek için bir API sunabilir.

Ancak sıklıkla API terimi "kütüphane" nin eş anlamlısı olarak kullanılır. Bunun Word'ün doğru kullanımı olduğunu sanmıyorum. Kütüphanenin bir kısmı , kodu kullanmasına izin veren bir API'dir, ancak kütüphane bir API.

Ve bir SDK bir tür kütüphane, bu yüzden kafa karışıklığı olabilir.

1
Aviv Cohn