PENGERTIAN SESSION LAYER
Pengertian
Session Layer
Lapisan sesi atau Session layer adalah lapisan kelima
dari bawah dalam model referensi jaringan OSI, yang mengizinkan sesi koneksi
antara node dalam sebuah jaringan dibuat atau dihancurkan. Lapisan sesi tidak
tahu menahu mengenai efisiensi dan keandalan dalam transfer data antara
node-node tersebut, karena fungsi-fungsi tersebut disediakan oleh empat lapisan
di bawahnya dari dalam model OSI (lapisan fisik, lapisan data-link, lapisan
jaringan dan lapisan transport). Lapisan sesi bertanggung jawab untuk melakukan
sinkronisasi antara pertukaran data antar komputer, membuat struktur sesi
komunikasi, dan beberapa masalah yang berkaitan secara langsung dengan
percakapan antara node-node yang saling terhubung di dalam jaringan. Lapisan
ini juga bertanggung jawab untuk melakukan fungsi pengenalan nama pada tingkat
nama jaringan logis dan juga menetapkan [[[port TCP|port-port komunikasi]].
Sebagai contoh, protokol NetBIOS dapat dianggap sebagai sebuah protokol yang
berjalan pada lapisan ini.
Lapisan sesi dari model OSI tidak banyak
diimplementasikan di dalam beberapa protokol jaringan populer, seperti halnya
TCP/IP atau IPX/SPX . Akan tetapi, tiga lapisan tertinggi di dalam model
OSI (lapisan sesi, lapisan presentasi , dan lapisan aplikasi ) seringnya
disebut sebagai sebuah kumpulan yang homogen, sebagai sebuah lapisan aplikasi
saja.
Session layer mengijinkan para pengguna untuk
menetapkan session dengan pengguna lainnya. Sebuah session selain memungkinkan
transport data biasa, seperti yang dilakukan oleh transport layer, juga
menyediakan layanan yang istimewa untuk aplikasi-aplikasi tertentu. Sebuah
session digunakan untuk memungkinkan seseorang pengguna log ke remote timesharing
system atau untuk memindahkan file dari satu mesin kemesin lainnya.
Sebuah layanan session layer adalah untuk melaksanakan
pengendalian dialog. Session dapat memungkinkan lalu lintas bergerak dalam
bentuk dua arah pada suatu saat, atau hanya satu arah saja. Jika pada satu saat
lalu lintas hanya satu arah saja (analog dengan rel kereta api tunggal),
session layer membantu untuk menentukan giliran yang berhak menggunakan saluran
pada suatu saat.
Layanan session di atas disebut manajemen token. Untuk
sebagian protokol, adalah penting untuk memastikan bahwa kedua pihak yang
bersangkutan tidak melakukan operasi pada saat yang sama. Untuk mengatur
aktivitas ini, session layer menyediakan token-token yang dapat digilirkan.
Hanya pihak yang memegang token yang diijinkan melakukan operasi kritis.
Layanan session lainnya adalah sinkronisasi. Ambil
contoh yang dapat terjadi ketika mencoba transfer file yang berdurasi 2 jam
dari mesin yang satu ke mesin lainnya dengan kemungkinan mempunyai selang waktu
1 jam antara dua crash yang dapat terjadi. Setelah masing-masing transfer
dibatalkan, seluruh transfer mungkin perlu diulangi lagi dari awal, dan mungkin
saja mengalami kegagalan lain. Untuk mengurangi kemungkinan terjadinya masalah
ini, session layer dapat menyisipkan tanda tertentu ke aliran data. Karena itu
bila terjadi crash, hanya data yang berada sesudah tanda tersebut yang akan
ditransfer ulang.
Dalam pemrograman komputer , sebuah antarmuka
pemrograman aplikasi (API) adalah seperangkat rutinitas , protokol, dan alat untuk membangun perangkat lunak dan aplikasi.
Pengertian socket adalah interface pada jaringan yang
menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa
komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket
terdiri dari elemen-elemen utama sebagai berikut:
(1) Protokol.
(2) Local IP.
(3) Local Port.
(4) Remote IP.
(5) Remote Port.
Komunikasi socket jaringan memang tidak mengenal
lelah, pertukaran data terjadi terus-menerus dan memegang peranan vital.
Bayangkan sebuah server game online yang berkomunikasi
tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini
merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang
menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.
API mengungkapkan
komponen perangkat lunak dalam hal
operasi, input, output, dan jenis yang mendasarinya, mendefinisikan fungsi yang
independen dari implementasi masing-masing, yang memungkinkan definisi dan
implementasi bervariasi tanpa mengorbankan antarmuka. Sebuah API yang baik
membuatnya lebih mudah untuk mengembangkan program dengan menyediakan semua
blok bangunan, yang kemudian disatukan oleh programmer.
API mungkin
untuk sistem berbasis web, sistem operasi, atau sistem database, dan
menyediakan fasilitas untuk mengembangkan aplikasi untuk sistem yang
menggunakan bahasa pemrograman tertentu. Sebagai contoh, seorang programmer
yang mengembangkan aplikasi untuk Android dapat menggunakan API Android untuk
berinteraksi dengan hardware, seperti kamera depan perangkat berbasis Android.
Selain
mengakses database atau perangkat keras komputer seperti hard disk drive atau kartu video , API dapat meringankan pekerjaan
pemrograman GUI komponen. Sebagai contoh, sebuah API dapat memfasilitasi
integrasi fitur baru ke dalam aplikasi yang ada (yang disebut-"plug-in
API"). API juga dapat membantu aplikasi lain yang berbeda dengan data
sharing, yang dapat membantu untuk mengintegrasikan dan meningkatkan fungsi
dari aplikasi.
API sering
datang dalam bentuk sebuah perpustakaan yang mencakup spesifikasi
untuk rutinitas , struktur data , kelas objek , dan variabel. Dalam
kasus lain, terutama SOAP dan SISA layanan , API hanyalah sebuah spesifikasi panggilan jarak jauh terkena konsumen API. [1]
Sebuah
spesifikasi API dapat mengambil banyak bentuk, termasuk Standar Internasional,
seperti POSIX , penjual dokumentasi, seperti Microsoft Windows API , atau perpustakaan dari bahasa pemrograman , misalnya Perpustakaan Template Standar di C ++ atau Java API .
API berbeda
dari sebuah antarmuka aplikasi biner (ABI) di bahwa
API adalah kode sumber berbasis sementara ABI adalah antarmuka biner. Misalnya POSIX adalah sebuah API, sedangkan Linux Standard Base menyediakan ABI. [2]
[3]
API adalah
salah satu cara yang paling umum perusahaan teknologi mengintegrasikan dengan
satu sama lain. Mereka yang menyediakan dan menggunakan API dianggap sebagai
anggota dari ekosistem bisnis. [4]
Penggunaan
API dalam bahasa prosedural
Dalam
kebanyakan bahasa prosedural, API menentukan satu set fungsi atau rutinitas yang menyelesaikan tugas tertentu,
atau diperbolehkan untuk berinteraksi dengan komponen perangkat lunak tertentu.
Spesifikasi ini disajikan dalam format yang dapat dibaca manusia di buku kertas
atau dalam format elektronik seperti eBook atau sebagai man . Sebagai contoh, API matematika pada Unix sistem adalah spesifikasi tentang cara menggunakan fungsi
matematika termasuk dalam perpustakaan matematika. Di antara fungsi-fungsi ini
ada fungsi bernama sqrt() , yang dapat digunakan untuk
menghitung akar kuadrat dari angka yang diberikan.
RINGKASAN
# include <math.h>
sqrt
ganda (double X);
mengapung sqrtf (float X);
DESKRIPSI
sqrt menghitung akar kuadrat positif dari argumen.
...
RETURNS
Pada keberhasilan, akar kuadrat dikembalikan. Jika
X adalah nyata dan positif ...
Deskripsi
ini berarti bahwa sqrt() mengembalikan fungsi akar kuadrat
dari angka floating point positif ( single atau double presisi), sebagai nomor floating point lain. Halaman manual juga
menyatakan bahwa program menelepon harus menyertakan math.h file header untuk dapat referensi fungsi hadir di perpustakaan matematika.
Oleh karena
itu API dalam hal ini dapat diartikan sebagai koleksi termasuk file yang digunakan oleh program, yang
ditulis dalam bahasa C, untuk referensi bahwa fungsi perpustakaan, dan
deskripsi dibaca manusia disediakan oleh halaman manual .
Demikian
pula, bahasa lain memiliki perpustakaan prosedural; misalnya, Perl memiliki API yang didedikasikan untuk tugas matematika yang
sama dengan built-in dokumentasi yang tersedia, yang dapat diakses menggunakan perldoc utilitas:
$ Perldoc - f sqrt
sqrt EXPR
sqrt #Return akar kuadrat dari EXPR. Jika EXPR diabaikan, kembali
akar #square dari $ _. Hanya bekerja pada operan non-negatif, kecuali
# Anda telah dimuat dalam Math :: Complex
modul standar.
API dalam bahasa berorientasi objek
Dalam bentuk
yang paling sederhana, sebuah objek API adalah deskripsi tentang bagaimana benda
bekerja dalam bahasa berorientasi objek yang diberikan - biasanya
dinyatakan sebagai satu set kelas dengan daftar terkait metode kelas .
Misalnya,
dalam bahasa Jawa , jika kelas Scanner yang akan digunakan (kelas yang membaca masukan dari
pengguna di program berbasis teks), diperlukan untuk mengimpor java.util.Scanner perpustakaan, sehingga objek dari jenis Scanner dapat digunakan dengan menerapkan beberapa metode
kelas 'yang:
import java.util.Scanner;
public class Uji
{
public static void main (String [] args) {
Sistem out println ( "Masukkan nama Anda:")..;
Scanner inputScanner = new Scanner (Sistem di.);
Nama String = inputScanner nextLine ().;
.. Sistem keluar println ( "Nama Anda
adalah" + nama + ".");
inputScanner dekat ().;
}
}
Dalam contoh
di atas, metode nextLine() dan close() merupakan bagian dari API untuk Scanner kelas, dan karenanya dijelaskan dalam dokumentasi
untuk API itu, misalnya:
public String nextLine ()
Kemajuan scanner ini melewati garis saat ini dan
mengembalikan masukan dilewati ...
Pengembalian:
garis yang dilewati
melempar:
NoSuchElementException - jika tidak ada garis ditemukan
IllegalStateException - jika
scanner ini telah ditutup
Secara umum,
dalam berorientasi objek bahasa, API biasanya
mencakup deskripsi dari sekumpulan kelas definisi, dengan satu set perilaku yang
terkait dengan kelas-kelas. Konsep abstrak ini dikaitkan dengan fungsi nyata
terkena, atau disediakan, oleh kelas yang diimplementasikan dalam hal metode kelas (atau lebih umum oleh semua komponen
publik maka semua metode umum, tetapi juga mungkin termasuk setiap entitas
internal yang dipublikasikan seperti : bidang, konstanta, benda bersarang,
enum, dll).
API dalam
hal ini dapat dipahami sebagai totalitas semua metode publik terpapar oleh
kelas (biasanya disebut kelas antarmuka ). Ini
berarti bahwa API mengatur metode yang satu berinteraksi dengan / menangani
objek berasal dari definisi kelas.
Lebih umum,
orang dapat melihat API sebagai koleksi semua jenis benda yang bisa
diambil dari definisi kelas, dan perilaku yang terkait mungkin. Sekali lagi:
penggunaan dimediasi oleh metode umum, namun dalam penafsiran ini, metode
dipandang sebagai detail teknis tentang bagaimana perilaku
diimplementasikan.
Misalnya:
kelas yang mewakili Stack hanya dapat mengekspos publik dua metode push() (untuk menambahkan item baru ke stack), dan pop() (untuk mengekstrak item terakhir, idealnya ditempatkan di atas tumpukan).
Dalam hal
ini API dapat diartikan sebagai dua metode pop() dan push() , atau, lebih umum, sebagai ide yang dapat digunakan item jenis Stack yang mengimplementasikan perilaku setumpuk: tumpukan mengekspos
puncaknya untuk menambahkan / menghapus elemen. Penafsiran kedua muncul lebih
tepat dalam semangat orientasi objek .
Konsep ini
dapat dibawa ke titik di mana antarmuka kelas dalam API tidak memiliki metode
sama sekali, tetapi hanya perilaku yang terkait dengan itu. Misalnya, Java dan Lisp API bahasa termasuk antarmuka bernama Serializable , yang merupakan antarmuka penanda yang mengharuskan setiap
kelas mengimplementasikannya untuk berperilaku dengan serial fashion. Ini tidak memerlukan penerapan metode
umum, namun lebih membutuhkan setiap kelas yang mengimplementasikan interface
ini harus didasarkan pada representasi yang dapat disimpan (serial)
setiap saat. [A]
Demikian
pula perilaku obyek dalam bersamaan ( multi-berulir ) lingkungan tidak selalu
ditentukan oleh metode khusus, milik interface diimplementasikan, tetapi masih
milik API untuk itu Kelas obyek, dan harus dijelaskan dalam dokumentasi. [
5]
Dalam
pengertian ini, dalam bahasa berorientasi objek, API mendefinisikan satu set
perilaku objek, mungkin dimediasi oleh seperangkat metode kelas.
Dalam bahasa
seperti, API masih didistribusikan sebagai perpustakaan. Misalnya, perpustakaan
bahasa Jawa termasuk satu set API yang disediakan dalam bentuk JDK yang digunakan oleh pengembang untuk membangun program Java
baru. JDK termasuk dokumentasi API di javadoc notasi.
Kualitas
dokumentasi terkait dengan API sering merupakan faktor penentu keberhasilan
dalam hal kemudahan penggunaan.
Perpustakaan API dan kerangka kerja
API biasanya
terkait dengan perpustakaan software : API menjelaskan dan
mengatur perilaku yang diharapkan sedangkan perpustakaan
merupakan implementasi aktual dari set aturan. Sebuah API tunggal dapat
memiliki beberapa implementasi (atau tidak, menjadi abstrak) dalam bentuk
perpustakaan yang berbeda yang berbagi antarmuka pemrograman yang sama.
API juga
dapat terkait dengan kerangka kerja perangkat lunak : kerangka
dapat didasarkan pada beberapa perpustakaan menerapkan beberapa API, tapi tidak
seperti penggunaan normal dari API, akses ke perilaku dibangun ke
dalam kerangka kerja dimediasi dengan memperluas isinya dengan kelas baru
dicolokkan ke kerangka itu sendiri. Selain itu, aliran program keseluruhan
kontrol dapat keluar dari kontrol pemanggil, dan di tangan kerangka melalui inversi kontrol atau mekanisme yang serupa. [6]
[7]
API dan protokol
API juga
dapat merupakan implementasi dari protokol .
Ketika
sebuah API mengimplementasikan protokol itu dapat didasarkan pada proksi metode untuk pemanggilan jarak jauh yang di
bawahnya bergantung pada protokol komunikasi. Peran API dapat tepat untuk
menyembunyikan detail dari protokol transport. Misalnya: RMI adalah sebuah API yang
mengimplementasikan JRMP protokol atau IIOP sebagai RMI-IIOP .
Protokol
biasanya dibagi antara teknologi yang berbeda (sistem berdasarkan bahasa
pemrograman komputer yang diberikan dalam sistem operasi yang diberikan) dan
biasanya memungkinkan teknologi yang berbeda untuk saling bertukar informasi,
bertindak sebagai tingkat abstraksi / mediasi antara dua lingkungan yang
berbeda. Protokol maka dapat dianggap API terpencil, API lokal
bukannya biasanya khusus untuk teknologi tertentu: maka API untuk bahasa
tertentu tidak dapat digunakan dalam bahasa lain, kecuali fungsi panggilan
dibungkus dengan perpustakaan adaptasi tertentu.
Untuk
mengaktifkan pertukaran informasi antara sistem yang menggunakan teknologi yang
berbeda, ketika sebuah API mengimplementasikan protokol, itu dapat meresepkan
format pesan bahasa-netral: misalnya SOAP menggunakan XML sebagai wadah umum untuk pesan yang akan dipertukarkan, sama SISA API dapat menggunakan baik XML dan JSON .
Objek pertukaran API dan protokol
Sebuah objek
API dapat meresepkan format pertukaran objek tertentu bahwa program dapat
menggunakan lokal dalam aplikasi, sementara protokol pertukaran objek dapat
menentukan cara untuk mentransfer jenis informasi yang sama dalam pesan yang
dikirim ke sistem remote.
Ketika pesan
dipertukarkan melalui protokol antara dua platform yang berbeda menggunakan
benda-benda di kedua sisi, objek dalam bahasa pemrograman bisa diubah ( marshalled dan unmarshalled [8]
) dalam suatu objek dalam bahasa terpencil dan berbeda: sehingga, misalnya,
program yang ditulis dalam Java memanggil layanan melalui SOAP atau IIOP ditulis dalam C # kedua program menggunakan API
untuk remote doa (masing-masing secara lokal ke mesin mana mereka bekerja) ke
(jarak jauh) pertukaran informasi bahwa mereka berdua mengkonversi dari / ke
obyek dalam memori lokal .
Sebaliknya
jika benda mirip dipertukarkan melalui API lokal ke mesin tunggal objek
tersebut efektif dipertukarkan (atau referensi untuk itu) dalam memori:
misalnya melalui memori yang dialokasikan oleh proses tunggal, atau antara
beberapa proses menggunakan memori bersama , sebuah server aplikasi , atau teknologi berbagi lainnya
seperti ruang tupel .
Objek Remoting API dan protokol
API objek
Remoting didasarkan pada protokol Remoting, seperti CORBA , yang memungkinkan metode remote object doa. Panggilan
metode, dieksekusi secara lokal pada objek proxy, memanggil sesuai metode pada
objek remote, menggunakan protokol Remoting, dan memperoleh hasil yang akan
digunakan secara lokal sebagai nilai kembali. [9]
Ketika
Remoting di tempat, modifikasi pada objek proxy sesuai dengan modifikasi pada
objek jarak jauh. Ketika hanya transfer objek berlangsung, modifikasi untuk
salinan lokal dari objek tersebut tidak tercermin pada objek asli, kecuali
benda tersebut dikirim kembali ke sistem pengiriman.
Berbagi API dan menggunakan kembali melalui mesin
virtual
Beberapa
bahasa seperti yang berjalan dalam mesin virtual (misalnya NET bahasa CLI compliant dalam waktu Common Language Run
(CLR), dan JVM bahasa compliant di Java Virtual Machine ) dapat berbagi API. Dalam
hal ini, mesin virtual memungkinkan interoperabilitas bahasa , dengan abstrak
bahasa pemrograman menggunakan perantara kode byte dan yang binding bahasa . Dalam bahasa ini, compiler melakukan kompilasi just-in-time atau kompilasi depan-of-waktu mengubah kode
sumber, kemungkinan ditulis dalam beberapa bahasa, menjadi representasi kode
byte bahasa-independen.
Misalnya,
melalui representasi kode byte, program yang ditulis dalam Groovy atau Scala bahasa dapat menggunakan setiap
kelas standar Java dan karenanya setiap API Java. Hal ini dimungkinkan berkat
kenyataan baik Groovy dan Scala memiliki model objek yang satu set super yang dari bahasa Jawa; dengan
demikian, setiap API terkena melalui objek Java dapat diakses melalui Groovy
atau Scala oleh doa objek setara diterjemahkan dalam kode byte.
Di sisi
lain, Groovy dan Scala memperkenalkan entitas kelas yang tidak hadir di Jawa,
seperti penutupan . Entitas ini tidak
dapat native diwakili dalam bahasa Jawa ( Jawa 8 memperkenalkan konsep ekspresi lambda ); dengan demikian, untuk
memungkinkan operasi lain, penutupan dirumuskan dalam sebuah objek Java standar.
Dalam hal ini penutupan doa dimediasi oleh sebuah metode bernama call() , yang selalu hadir dalam suatu objek penutupan seperti yang terlihat oleh
Java, dan di Jawa penutupan tidak mewakili entitas kelas .
API web
Artikel
utama: Web API
API web
adalah antarmuka yang didefinisikan melalui interaksi yang terjadi antara
perusahaan dan aplikasi yang menggunakan asetnya. Pendekatan API adalah sebuah
pendekatan arsitektur yang berkisah menyediakan antarmuka diprogram untuk satu
set layanan untuk aplikasi yang berbeda melayani berbagai jenis konsumen. [10]
Ketika digunakan dalam konteks pengembangan web , API biasanya didefinisikan
sebagai satu set Hypertext Transfer Protocol (HTTP)
pesan permintaan, bersama dengan definisi struktur pesan respon, yang biasanya
dalam Extensible Markup Language ( XML ) atau JavaScript Object Notation ( JSON ) format. Sementara "Web API" secara historis
telah hampir identik untuk layanan web , tren terbaru (disebut Web 2.0 )
telah bergerak jauh dari Simple Object Access Protocol ( SOAP layanan berbasis web) dan arsitektur berorientasi layanan
(SOA) terhadap lebih langsung representasional Transfer negara
(REST) gaya sumber web dan sumber daya arsitektur berorientasi
(ROA). [11]
Bagian dari tren ini terkait dengan Semantic Web gerakan menuju resource Description Framework
(RDF), sebuah konsep untuk mempromosikan berbasis web engineering ontologi teknologi . API web
memungkinkan kombinasi dari beberapa API ke dalam aplikasi baru yang dikenal
sebagai mashup . [12]
Penggunaan web untuk berbagi konten
Praktek
penerbitan API telah memungkinkan komunitas web untuk membuat arsitektur
terbuka untuk berbagi konten dan data antara masyarakat dan aplikasi. Dengan
cara ini, konten yang dibuat di satu tempat dapat secara dinamis diposting dan
diperbarui di beberapa lokasi di web:
- Foto dapat dibagi dari situs seperti Flickr dan Photobucket untuk jaringan sosial situs-situs seperti Facebook dan MySpace .
- Konten dapat tertanam, misalnya menanamkan presentasi dari SlideShare pada LinkedIn profil.
- Konten dapat secara dinamis diposting. Berbagi komentar hidup dibuat di Twitter dengan akun Facebook, misalnya, diaktifkan oleh API mereka.
- Konten video dapat tertanam di situs dilayani oleh host lain.
- Informasi pengguna dapat dibagi dari komunitas web untuk aplikasi luar, memberikan fungsi baru untuk komunitas web dimana data pengguna yang melalui API terbuka. Salah satu contoh terbaik dari ini adalah platform yang Aplikasi Facebook . Lain adalah Sosial Terbuka Platform. [13]
- Jika konten adalah representasi langsung dari dunia fisik (misalnya, suhu di lokasi geospasial di bumi) maka API dapat dianggap sebagai "Programming Lingkungan Interface" (EPI). EPIs ditandai dengan kemampuan mereka untuk menyediakan sarana untuk acara sequencing universal yang cukup untuk memanfaatkan data dunia nyata untuk pengambilan keputusan.
Implementasi
The POSIX standar mendefinisikan API yang memungkinkan menulis
berbagai fungsi komputasi umum dalam sedemikian rupa sehingga mereka dapat
beroperasi pada banyak sistem yang berbeda ( Mac OS X , dan berbagai Berkeley Software Distribusi (BSD)
mengimplementasikan interface ini) .Namun, menggunakan ini membutuhkan re-kompilasi untuk setiap platform. Sebuah API
kompatibel, di sisi lain, memungkinkan dikompilasi kode objek untuk berfungsi tanpa perubahan pada sistem
yang mengimplementasikan API itu. Hal ini menguntungkan kedua
penyedia perangkat lunak (di mana mereka dapat mendistribusikan perangkat lunak
yang ada pada sistem baru tanpa memproduksi dan → mendistribusikan upgrade) dan
pengguna (di mana mereka dapat menginstal perangkat lunak yang lebih tua pada
sistem baru mereka tanpa membeli upgrade), meskipun ini biasanya membutuhkan
bahwa berbagai perpustakaan software mengimplementasikan API
yang diperlukan juga.
Microsoft telah menunjukkan komitmen yang kuat untuk API kompatibel mundur, terutama dalam mereka API Windows (Win32) perpustakaan, sehingga aplikasi yang lebih tua mungkin berjalan pada versi terbaru dari Windows menggunakan pengaturan dieksekusi khusus yang disebut "Compatibility Mode". [14]
Di antara Unix-seperti sistem operasi, ada banyak sistem operasi
terkait tetapi tidak kompatibel berjalan pada platform perangkat keras yang
umum (terutama Intel 80386 sistem yang kompatibel dengan). Ada
beberapa upaya untuk membakukan API sehingga vendor perangkat lunak dapat
mendistribusikan satu aplikasi biner untuk semua sistem ini; Namun, sampai saat
ini, tak satu pun dari telah bertemu dengan banyak keberhasilan. The Linux Standard Base mencoba untuk melakukan hal
ini untuk Linux platform yang, sementara banyak dari BSD Unix, seperti FreeBSD , NetBSD , dan OpenBSD , menerapkan berbagai tingkat kompatibilitas API
untuk kedua kompatibilitas (memungkinkan program yang ditulis untuk versi untuk
berjalan di distribusi yang lebih baru dari sistem) dan kompatibilitas
cross-platform (yang memungkinkan eksekusi kode asing tanpa mengkompilasi
ulang).
Desain API
Beberapa
prinsip yang umum digunakan untuk mengatur proses merancang API. Parnas
mengusulkan konsep menyembunyikan informasi pada tahun 1972.
Prinsip bersembunyi informasi adalah bahwa seseorang dapat membagi software
menjadi modul, yang masing-masing memiliki antarmuka yang ditentukan. Interface
menyembunyikan rincian implementasi dari modul sehingga pengguna modul tidak
perlu memahami kompleksitas dalam modul. Interface ini API, dan sebagai
hasilnya, API harus mengekspos hanya mereka Rincian modul yang klien harus tahu
untuk menggunakan modul secara efektif. Arsitektur Software didedikasikan untuk
menciptakan dan memelihara struktur-yang software tingkat tinggi biasanya
meliputi modul. API mencerminkan antarmuka antara modul. Dengan demikian,
arsitektur sistem terkait terkait dengan API yang mengekspresikan arsitektur
itu. Namun, banyak keputusan yang terlibat dalam menciptakan API tidak
arsitektur, seperti konvensi penamaan dan banyak rincian tentang bagaimana
interface yang terstruktur.
Rincian ini
tentang bagaimana interface yang terstruktur, serta arsitektur perangkat lunak,
memiliki dampak signifikan pada kualitas perangkat lunak. Misalnya, Cataldo et
al. menemukan bahwa bugginess berkorelasi dengan logis dan data dependensi
dalam perangkat lunak. [15]
Ini berarti bahwa untuk mengurangi tingkat bug, pengembang perangkat lunak
harus hati-hati mempertimbangkan API dependensi.
Hukum Conway menyatakan bahwa struktur sistem pasti
mencerminkan struktur organisasi yang menciptakannya. Hal ini menunjukkan bahwa
untuk memahami bagaimana API dirancang di dunia nyata, kita juga harus memahami
struktur organisasi rekayasa perangkat lunak. Demikian juga, sebuah kelompok
API harus struktur itu sendiri sesuai dengan apa yang dibutuhkan API. Dalam
sebuah studi dari 775 insinyur perangkat lunak Microsoft, Begel et al. ditemukan
bahwa selain mengkoordinasikan mengenai desain API, insinyur perangkat lunak
bahkan lebih sering berkoordinasi mengenai jadwal dan fitur. [16]
ini memperkuat pandangan bahwa organisasi perangkat lunak berkolaborasi secara
ekstensif dan bahwa struktur organisasi adalah penting.
Beberapa
penulis telah menciptakan rekomendasi untuk bagaimana merancang API, seperti Joshua Bloch [17]
dan Michi Henning. [18]
Namun, karena salah satu prinsip desain API adalah bahwa API harus konsisten
dengan API lainnya sudah digunakan di sistem, rincian desain API agak language-
dan sistem-dependent.
Kebijakan rilis
Kebijakan
utama untuk merilis API adalah:
- Melindungi informasi tentang API dari masyarakat umum. Misalnya, Sony digunakan untuk membuat resminya PlayStation 2 API tersedia hanya untuk lisensi pengembang PlayStation. Hal ini memungkinkan Sony untuk mengontrol yang menulis PlayStation 2 game. Hal ini memberikan hak kontrol kualitas perusahaan dan dapat menyediakan mereka dengan potensi aliran pendapatan lisensi.
- Membuat API tersedia secara bebas. Misalnya, Microsoft membuat Microsoft Windows API umum, dan Apel rilis nya API Karbon dan Kakao , sehingga perangkat lunak yang dapat ditulis untuk mereka platform .
Sebuah
campuran dari dua perilaku dapat digunakan juga.
Implikasi API publik
API dapat
dikembangkan untuk kelompok terbatas pengguna, atau dapat dirilis ke publik.
Merupakan
faktor penting ketika sebuah API menjadi publik adalah stabilitas antarmuka.
Perubahan oleh pengembang untuk bagian dari itu-misalnya menambahkan parameter
baru untuk fungsi panggilan-bisa istirahat kompatibilitas dengan klien yang
bergantung pada API itu.
Ketika
bagian dari API yang disajikan publik dapat berubah dan dengan demikian tidak
stabil, bagian tersebut dari API tertentu harus secara eksplisit
didokumentasikan sebagai tidak stabil. Misalnya, di Google jambu perpustakaan bagian yang dianggap tidak
stabil, dan yang mungkin berubah dalam waktu dekat, ditandai dengan penjelasan Java @Beta . [19]
API Penghentian
Sebuah API
publik kadang-kadang dapat menyatakan bagian dari dirinya sebagai usang . Hal ini biasanya berarti bahwa bagian tersebut
dari sebuah API harus dipertimbangkan candidated untuk dihapus, atau diubah
dengan cara yang tidak kompatibel ke belakang.
Ketika
mengadopsi pihak ketiga API publik, pengembang harus mempertimbangkan kebijakan
depresiasi yang digunakan oleh produsen API itu; jika pengembang publik
melepaskan solusi berdasarkan API yang menjadi usang, ia / dia mungkin tidak
dapat menjamin layanan yang disediakan.
Komentar
Posting Komentar