JSON, REST, SOAP, WSDL, dan SOA: Bagaimana mereka semua terhubung

155

Saat ini sedang melakukan beberapa ujian dan saya berjuang melalui beberapa konsep. Ini semua telah 'disebutkan' dalam catatan saya benar-benar tetapi saya tidak benar-benar mengerti bagaimana mereka semua terhubung bersama. Sejauh pemahaman saya adalah:

SOA - solusi untuk membuat konsumen layanan / penyedia berkomunikasi. (Sejauh yang saya mengerti ini adalah istilah umum untuk yang lainnya)

WSDL - Bahasa yang menggambarkan layanan penyedia.

SOAP - 'wrapper' protokol XML yang digunakan oleh layanan untuk mengirim pesan. Bekerja bersamaan dengan WSDL untuk memberikan parameter?

REST - Pola desain yang mirip dengan fungsi SOAP tetapi menghindari XML? (benar-benar tidak yakin tentang yang ini)

JSON - Alternatif untuk XML yang menggunakan javascript? (tidak yakin tentang yang ini juga)

Melihat-lihat di internet sepertinya tidak ada definisi yang jelas tentang apa semua ini dan bagaimana mereka saling berhubungan.

Jay
sumber

Jawaban:

252

Bayangkan Anda sedang mengembangkan aplikasi web dan Anda memutuskan untuk memisahkan fungsi dari penyajian aplikasi, karena itu memberikan kebebasan yang lebih besar.

Anda membuat API dan membiarkan orang lain menerapkan front-end mereka sendiri di atasnya. Apa yang baru saja Anda lakukan di sini adalah menerapkan metodologi SOA , yaitu menggunakan layanan web.

Layanan Web membuat blok bangunan fungsional dapat diakses melalui protokol Internet standar yang tidak tergantung pada platform dan bahasa pemrograman.

Jadi, Anda merancang mekanisme pertukaran antara back-end (layanan web) yang melakukan pemrosesan dan pembuatan sesuatu yang bermanfaat, dan front-end (yang mengkonsumsi data), yang bisa berupa apa saja. (Aplikasi web, seluler, atau desktop, atau layanan web lainnya). Satu-satunya batasan di sini adalah bahwa front-end dan back-end harus "berbicara" bahasa yang sama.


Di situlah SOAP dan REST masuk. Itu adalah cara standar yang Anda pilih untuk berkomunikasi dengan layanan web.

SABUN MANDI:

SOAP secara internal menggunakan XML untuk mengirim data bolak-balik. Pesan SOAP memiliki struktur yang kaku dan respons XML kemudian perlu diuraikan. WSDL adalah spesifikasi permintaan apa yang dapat dibuat, dengan parameter apa, dan apa yang akan mereka kembalikan. Ini adalah spesifikasi lengkap API Anda.

BERISTIRAHAT:

REST adalah konsep desain.

World Wide Web merupakan implementasi terbesar dari sistem yang sesuai dengan gaya arsitektur REST.

Tidak sekaku sabun. Layanan web yang tenang menggunakan URI dan metode standar untuk melakukan panggilan ke layanan web. Saat Anda meminta URI, ia mengembalikan representasi objek, yang kemudian dapat Anda lakukan operasi (mis. GET, PUT, POST, DELETE). Anda tidak terbatas pada memilih XML untuk mewakili data, Anda dapat memilih apa saja (termasuk JSON)

API REST Flickr melangkah lebih jauh dan memungkinkan Anda mengembalikan gambar juga.


JSON dan XML , secara fungsional setara, dan pilihan umum. Ada juga kerangka kerja berbasis RPC seperti GRPC berdasarkan Protobufs, dan Apache Thrift yang dapat digunakan untuk komunikasi antara produsen dan konsumen API. Format yang paling umum digunakan oleh API web adalah JSON karena mudah digunakan dan diurai dalam setiap bahasa.

Anirudh Ramanathan
sumber
36
Jawaban luar biasa hingga cop-out di JSON vs XML. Versi yang lebih seimbang adalah: XML dan JSON adalah cara membuat serialisasi data. XML lebih fleksibel dan memiliki banyak standar yang dirancang di sekitarnya, tetapi beberapa merasa itu terlalu rumit dan bertele-tele. JSON adalah format yang lebih sederhana yang mendefinisikan beberapa struktur dasar dengan cara ringkas, yang mudah digunakan untuk struktur data informal; beberapa orang sedang mengerjakan standar di atasnya untuk meniru yang ada di atas XML.
IMSoP
30

WSDL : Singkatan dari Layanan Web Deskripsi Bahasa

Dalam SOAP (protokol akses objek sederhana), ketika Anda menggunakan layanan web dan menambahkan layanan web ke proyek Anda, aplikasi klien Anda tidak tahu tentang Fungsi layanan web. Sekarang ini sudah ketinggalan zaman dan untuk setiap jenis klien yang berbeda Anda harus mengimplementasikan WSDLfile yang berbeda . Misalnya Anda tidak dapat menggunakan file .Netdan phpklien yang sama. The WSDLberkas memiliki beberapa deskripsi tentang fungsi layanan web. Jenis file ini adalah XML. SOAPadalah alternatif untuk REST.

REST : Singkatan dari Transfer Negara Representasi

Ini adalah jenis layanan API lainnya, sangat mudah digunakan untuk klien. Mereka tidak perlu memiliki ekstensi file khusus seperti WSDLfile. Operasi CRUD dapat diimplementasikan oleh berbeda HTTP Verbs(GET untuk Membaca, POST untuk Pembuatan, PUT atau PATCH untuk Memperbarui dan HAPUS untuk Menghapus dokumen yang diinginkan), Mereka didasarkan pada HTTPprotokol dan sebagian besar waktu respon dalam JSONatau XMLformat. Di sisi lain aplikasi klien harus secara tepat memanggil terkait HTTP Verbmelalui nama dan tipe parameter yang tepat. Karena tidak memiliki file khusus untuk definisi, seperti WSDL, itu adalah pekerjaan manual menggunakan titik akhir. Tetapi ini bukan masalah besar karena sekarang kami memiliki banyak plugin untuk berbagai IDE untuk menghasilkan implementasi sisi klien.

SOA : Singkatan dari Arsitektur Berorientasi Layanan

Termasuk semua pemrograman dengan konsep dan arsitektur layanan web. Bayangkan Anda ingin menerapkan aplikasi skala besar. Satu praktik dapat memiliki beberapa layanan yang berbeda, disebut layanan mikro dan seluruh mekanisme aplikasi akan memanggil layanan web yang diperlukan pada waktu yang tepat. Baik RESTdan SOAPlayanan web adalah jenis SOA.

JSON : Singkatan darijavascript Object Notation

ketika Anda membuat serial objek untuk javascript, jenis format objek adalah JSON. bayangkan Anda memiliki kelas manusia:

class Human{
 string Name;
 string Family;
 int Age;
}

dan Anda memiliki beberapa contoh dari kelas ini:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

ketika Anda membuat serial objek h1 ke JSON hasilnya adalah:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptdapat mengevaluasi format ini dengan eval()fungsi dan membuat array asosiatif dari JSONstring ini . Konsep ini berbeda dengan konsep lain yang saya jelaskan sebelumnya.

Saman Gholami
sumber
Jawaban ini mengandung beberapa kesalahan (mis. HTML <> HTTP)
Yassin Hajaj
1
@YassinHajaj diperbaiki
Saman Gholami