API vs Library

Başlatan yamak, 30 Mayıs 2014, 15:25:42

Burak B

Yani Libraryler API' lerin bir parçasıdır diyebiliriz. Doğru mu ?
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Tesla.25

Boost kütüphanesini benim yazdığımı düşünelim. İçinde çeşitli işlemleri yapan sınıflarım var.  Bunların toplamı bir Library oluyor.
API ler ise bu kütüphanenin nasıl kullanılacağını  belirler.

SDK ise, sonundaki "Kit" kelimesinden de anlaşılacağı gibi, yazılım geliştirmek için çok çeşitli araçları bünyesinde barındıran araçlar topluluğudur. SDK ler içinde, genelde, kaynak kodlar, örnek programlar, dökümanlar, ve SDK in amacına uygun olarak çeşitli işlemleri yapan programalr olur.


barisertekin

Şimdi oldu. Zaten 10 mesaj önce aynı şeyi yazmıştım :)

Tesla.25

Wiki de şöyle denmiş ki benim de anlatmak istediğim şey,
" API, yazılım parçalarının birbiri ile nasıl etkileşeceğini belirler."

In computer programming, an application programming interface (API) specifies how some software components should interact with each other.

barisertekin

Yazılım parçalarından kasıt bir örnekle açıklayayım;

Sizin web siteniz bir parça. X bankanın web sitesi bir diğer parça. Banka kendi kütüphanesini siz kulanabilin diye bir API yazmış.

Sizin web siteniz ile kendi kütüphanesinin nasıl etkileşeceğini belirliyor.

Örnek : Refund API(Geri İade)

Tesla.25

Alıntı yapılan: Elektroemre - 30 Mayıs 2014, 20:10:32
Peki 'Framework' bunlar arasında nerede konumlandırılabilir?

Framework ise çeşitli işlemleri yapan sınıfların birleşmesi diyebilirim. Mesela .NET framework içinde network işlemlerini yapan SYstem.Net sınıfı, çizim işlemlerini yapan System.Drawing sınıfı, form kontollerini oluşturan System.Windows.Forms, vb.... gibi kütüphanelerin bir araya gelmesi ile framework oluşuyor.

Yanlışım varsa düzeltin lütfen...

barisertekin

#21
Aynen öyle.
Ayrıca deminki verdiğim örnek için konuşuyorum. Bankalar genelde api değil servis diye adlandırır. Web servistir. Dolayısıyla web servis'te bir apidir.
Buradan Api kavramının soyut bir kavram olduğu anlaşılabilir. Arayüz sağlayan herşeyi kapsar.

Tesla.25

@barisertekin;
Bu arada siz benim yazdıklarımı zaten yazmışsınız. İnanın hiç dikkat etmedim.

barisertekin

Saat geç oldu. Dalgınlık olabiliyor.

yamak

O zaman şöyle diyebilir miyiz?
Windows API nin MessageBox(....) fonksiyonun API'nin bir parçası olmasının sebebi;
Grafik kütüphaneleri vs ile bizi hiç uğraştırmadan kolayca messagebox oluşturabilmemiz.

Bir de MCU seviyesinde konuşacak olursak;
Mesela Stm32 Peripheral Library'i kullanarak nasıl bir API yazabiliriz.Yani bu yazdığımız API'de ne tarz fonksiyonlar olabilir?

barisertekin

@yamak, Stm32 Peripheral Library zaten senin elinde. Neden böyle bir ihtiyaç duyalım. Direk kullan gitsin. Hiç mantıklı değil.

Eğer sen Stm32 Peripheral Library içerisindeki fonksiyonları birleştirerek işine yarayacak başka bir fonksiyon yazacaksan bunun ismi kütüphaneye fonksiyon eklemek olur. Kütüphaneyi genişletmek olur. API çok başka bir şey.

berat23

Alıntı yapılan: yamak - 31 Mayıs 2014, 12:06:46
O zaman şöyle diyebilir miyiz?
Windows API nin MessageBox(....) fonksiyonun API'nin bir parçası olmasının sebebi;
Grafik kütüphaneleri vs ile bizi hiç uğraştırmadan kolayca messagebox oluşturabilmemiz.

Bir de MCU seviyesinde konuşacak olursak;
Mesela Stm32 Peripheral Library'i kullanarak nasıl bir API yazabiliriz.Yani bu yazdığımız API'de ne tarz fonksiyonlar olabilir?

mesla uart, spi,adc gibi peripheral'lardan gelen veri olur vs. high level bir applicaton için gereken fonksiyonları düşün. uart tan veri alırken int. olmazda int içinden birşeyler çağırırsın, veri gelince api'de event olur, bu veriyi uygulaman kullanır. api üzerinden bakarsan bana verinin nasıl geldiği benim için önemli değil. sen sadece ihtiyacın olanı biliyorsun, api zaten bu oluyor.

anlatım biraz karışık oldu galiba.

yamak

Alıntı yapılan: barisertekin - 31 Mayıs 2014, 13:10:45
@yamak, Stm32 Peripheral Library zaten senin elinde. Neden böyle bir ihtiyaç duyalım. Direk kullan gitsin. Hiç mantıklı değil.

Eğer sen Stm32 Peripheral Library içerisindeki fonksiyonları birleştirerek işine yarayacak başka bir fonksiyon yazacaksan bunun ismi kütüphaneye fonksiyon eklemek olur. Kütüphaneyi genişletmek olur. API çok başka bir şey.
Tamam işte ben de bunda bahsediyorum.API'ye ne gibi durumlarda ihtiyaç oluyo onu anlamaya çalışıyom.Ben de zaten stm std perip lib i olduğu gibi kullanıyom.Hadi web servis olayında API'ye ihtiyaç oluyo fakat bu tarz durumlarda ne zaman ihtiyaç duyarız.

z

Acaba burada tartisilandan sunu mu anlamaliyim?

Mesela seri porttan gelen verileri alip bufura atan low level kodlarimla kutuphane yaptim.

Daha sonra bu kutuphane fonksiyonlarini kullanarak seri porttan gelen yani bufferdaki verileri okuyarak LCD de goruntuleyen bir kod daha yazdim. Bu diger kutuphanelerdeki LCD vs rutinlerini falan  kullaniyor olsun. Buna da API dedim.

En son olarak bir uygulama programi yazdim. Bu API den yuksek seviyeli proje odakli fonksiyonlarimi cagiriyor.

Uygulama programi API den cok yuksek seviyede fonksiyonlar cagiriyor. API de degisik kutuphanelerden low level fonksyionlar cagiriyor.

Olay bu mudur?


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

barisertekin

#29
Alıntı Yap@barisertekin , API library'i kullanmak için bir arayüzdür. Library'nin istenilen class'larına erişim sunar.
@z aynen sizin dediğiniz gibi.  İki uygulama arasındaki arayüzdür.

Zaten windows api aynen söylediğiniz işi yapıyor.
Alıntı YapUygulama programi API den cok yuksek seviyede fonksiyonlar cagiriyor. API de degisik kutuphanelerden low level fonksyionlar cagiriyor.