Saya telah membaca artikel tentang perbedaan antara SABUN dan SISANYA sebagai layanan web protokol komunikasi, tapi saya berpikir bahwa keuntungan terbesar untuk ISTIRAHAT lebih dari SABUN adalah:
SISANYA lebih dinamis, tidak perlu untuk membuat dan memperbarui UDDI(Universal Description, Discovery, and Integration).
SISANYA tidak dibatasi untuk hanya format XML. RESTful web services dapat mengirim teks/JSON/XML.
Tapi SABUN ini lebih standar (E. g.: keamanan).
Jadi, aku benar dalam poin ini?
Sayangnya, ada banyak informasi yang salah dan kesalahpahaman di sekitar SISANYA. Tidak hanya pertanyaan anda dan jawaban @cmd ini mencerminkan orang-orang, tapi sebagian besar pertanyaan dan jawaban yang berkaitan dengan subjek pada Stack Overflow. SABUN dan SISANYA bisa't dapat dibandingkan secara langsung, karena yang pertama adalah protokol (atau setidaknya mencoba untuk menjadi) dan yang kedua adalah sebuah gaya arsitektur. Ini mungkin adalah salah satu sumber kebingungan di sekitar itu, karena orang-orang cenderung untuk memanggil SISA HTTP API yang isn't SABUN. Mendorong hal-hal kecil dan berusaha untuk mendirikan sebuah perbandingan, perbedaan utama antara SABUN dan SISANYA adalah gelar dari kopling antara implementasi client dan server. SABUN klien bekerja seperti kustom aplikasi desktop, erat digabungkan ke server. Ada's kaku kontrak antara klien dan server, dan segala sesuatu yang diharapkan untuk istirahat jika kedua sisi perubahan apa-apa. Anda perlu update konstan mengikuti setiap perubahan, tapi itu's mudah untuk memastikan apakah kontrak yang sedang diikuti. ISTIRAHAT klien lebih suka browser. It's generik klien yang tahu bagaimana untuk menggunakan protokol dan standar metode, dan aplikasi telah masuk ke dalam itu. Anda don't melanggar protokol standar dengan menciptakan metode ekstra, anda memanfaatkan metode standar dan membuat tindakan dengan mereka pada jenis media. Jika dilakukan dengan benar, ada's kurang kopling, dan perubahan dapat ditangani dengan lebih anggun. Klien harus memasukkan SELURUH layanan dengan nol pengetahuan tentang API, kecuali untuk entry point dan tipe media. Di SABUN, klien membutuhkan pengetahuan sebelumnya pada segala sesuatu itu akan menggunakan, atau tidak't bahkan memulai interaksi. Selain itu, ISTIRAHAT klien dapat diperpanjang dengan kode-on-demand yang disediakan oleh server itu sendiri, klasik contoh kode JavaScript yang digunakan untuk mendorong interaksi dengan layanan lain pada sisi klien. Saya pikir ini adalah poin-poin penting untuk memahami apa yang SISA adalah tentang, dan bagaimana hal itu berbeda dari SABUN:
stackoverflow.com/questions/<id>
, ganti id dengan Pertanyaan.id dan paste pada browser anda. Yang's omong kosong, tapi itu's apa yang banyak orang berpikir SISANYA.
Point yang terakhir ini dapat't dapat ditekankan cukup. Jika klien anda adalah bangunan Uri dari template dalam dokumentasi dan tidak mendapatkan link pada sumber daya representasi, yang's tidak ISTIRAHAT. Roy Fielding, penulis jalan-jalan, sudah jelas di posting blog ini: REST Api harus hypertext-driven.
Dengan di atas dalam pikiran, anda'll menyadari bahwa sementara SISANYA tidak mungkin dibatasi untuk XML, untuk melakukannya dengan benar dengan format lain anda'll harus desain dan standarisasi beberapa format untuk link anda. Hyperlink adalah standar XML, tapi tidak dalam JSON. Ada rancangan standar untuk JSON, seperti HAL.
Akhirnya, SISA isn't untuk semua orang, dan bukti dari itu adalah bagaimana kebanyakan orang memecahkan masalah mereka dengan sangat baik dengan HTTP Api mereka keliru disebut jalan-jalan dan tidak pernah berani lebih dari itu. SISANYA adalah sulit untuk dilakukan kadang-kadang, terutama di awal, tetapi membayar dari waktu ke waktu dengan mudah evolusi pada sisi server, dan client's ketahanan untuk perubahan. Jika anda membutuhkan sesuatu untuk dilakukan dengan cepat dan mudah, don't repot-repot tentang mendapatkan ISTIRAHAT yang tepat. It's mungkin tidak apa yang anda're looking for. Jika anda perlu sesuatu yang akan perlu untuk tetap online selama bertahun-tahun atau bahkan puluhan tahun, kemudian SISANYA untuk anda. SISA
vs SABUN
adalah tidak pertanyaan yang tepat untuk bertanya.
SISA
, seperti SABUN
adalah tidak protokol.
SISA
adalah gaya arsitektur dan desain untuk jaringan perangkat lunak berbasis arsitektur.
SISA
konsep yang disebut sebagai sumber daya. Sebuah representasi dari resource harus bernegara. Hal ini diwakili melalui beberapa jenis media. Beberapa contoh dari media jenis ini termasuk XML
, JSON
, dan RDF
. Sumber daya yang dimanipulasi oleh komponen. Komponen permintaan dan memanipulasi sumber daya melalui standar interface yang seragam. Dalam kasus HTTP, interface ini terdiri dari standar HTTP ops misal MENDAPATKAN
, PUT
, POST
, DELETE
.
@Abdulaziz's pertanyaan tidak menerangi fakta bahwa ISTIRAHAT
dan HTTP
sering digunakan bersama-sama. Hal ini terutama karena kesederhanaan HTTP dan sangat alami pemetaan untuk Tenang prinsip-prinsip.
Komunikasi Client-Server
Client-server arsitektur yang sangat berbeda pemisahan kekhawatiran. Semua aplikasi yang dibangun dalam gaya Tenang juga harus menjadi client-server pada prinsipnya.
Kewarganegaraan
Setiap permintaan klien ke server membutuhkan bahwa negara sepenuhnya terwakili. Server harus dapat benar-benar memahami permintaan klien tanpa menggunakan server konteks atau server sesi negara. Ini mengikuti bahwa semua negara harus disimpan pada klien.
Cacheable
Cache kendala-kendala yang mungkin akan digunakan, sehingga memungkinkan respon data yang akan ditandai sebagai cacheable atau tidak-disimpan di cache. Setiap data yang ditandai sebagai telah disimpan di cache dapat digunakan kembali sebagai respon yang sama permintaan berikutnya.
Interface Yang Seragam
Semua komponen harus berinteraksi melalui satu interface yang seragam. Karena semua komponen interaksi terjadi melalui antarmuka ini, interaksi dengan layanan yang berbeda adalah sangat sederhana. Antarmuka yang sama! Ini juga berarti bahwa pelaksanaan perubahan dapat dilakukan dalam isolasi. Perubahan tersebut, tidak akan mempengaruhi komponen dasar interaksi karena seragam antarmuka yang selalu berubah. Salah satu kelemahan adalah bahwa anda terjebak dengan antarmuka. Jika optimasi dapat disediakan untuk layanan tertentu dengan mengubah antarmuka, anda beruntung karena SISA melarang hal ini. Di sisi terang, namun, SISA dioptimalkan untuk web, maka popularitas yang luar biasa dari SISA lebih dari HTTP!
Di atas konsep-konsep yang mewakili karakteristik SISA dan membedakan SISA arsitektur dari arsitektur lain seperti layanan web. Hal ini berguna untuk dicatat bahwa SELURUH layanan adalah layanan web, tapi layanan web tidak selalu SELURUH layanan.
Melihat blog ini posting pada ISTIRAHAT prinsip-Prinsip Desain untuk detail lebih lanjut tentang ISTIRAHAT dan di atas menyatakan peluru.
EDIT: update konten berdasarkan komentar
SABUN (Simple Object Access Protocol) dan SISANYA (Representasi Negara Transfer) investasi yang indah dengan cara mereka. Jadi saya tidak membandingkan mereka. Sebaliknya, saya mencoba untuk menggambarkan gambar, ketika saya memilih untuk menggunakan jalan-jalan dan ketika SABUN.
Apa muatan?
Ketika data yang dikirim melalui Internet, setiap unit yang dikirimkan meliputi informasi header dan data aktual yang dikirim. Header mengidentifikasi sumber dan tujuan paket, sementara data sebenarnya yang disebut sebagai muatan. Secara umum, muatan data yang dilakukan atas nama aplikasi dan data yang diterima oleh sistem tujuan.
Sekarang, misalnya, saya harus mengirim Telegram dan kita semua tahu bahwa biaya telegram akan tergantung pada beberapa kata.
Jadi, katakan padaku di antara yang disebutkan di bawah ini dua pesan, yang satu lebih murah untuk mengirim?
<name>Arin</name>
atau
"name": "Arin"
Saya tahu jawaban anda akan menjadi yang kedua meskipun keduanya mewakili pesan yang sama kedua adalah mengenai biaya yang lebih murah.
Jadi saya mencoba untuk mengatakan itu, pengiriman data melalui jaringan dalam format JSON lebih murah daripada mengirimkannya dalam format XML mengenai muatan.
Berikut adalah manfaat pertama atau keuntungan dari SISA SABUN. SABUN hanya mendukung XML, tapi SISANYA mendukung berbagai format seperti teks, JSON, XML, dll. Dan kita sudah tahu, jika kita menggunakan Json maka pasti kita akan berada di tempat yang lebih baik mengenai muatan.
Sekarang, SABUN mendukung satu-satunya XML, tetapi juga memiliki kelebihan.
Benar-benar! Bagaimana?
SABUN bergantung pada XML dalam tiga cara Amplop – yang mendefinisikan apa yang di pesan dan bagaimana proses itu.
Satu set aturan pengkodean untuk jenis data, dan akhirnya letak prosedur panggilan dan respon berkumpul.
Amplop ini dikirim melalui transportasi (HTTP/HTTPS), dan RPC (Remote Procedure Call) dijalankan, dan amplop dikembalikan dengan informasi dalam XML format dokumen.
Yang penting adalah bahwa salah satu kelebihan dari SABUN ini adalah penggunaan "generik" transportasi tapi SISANYA menggunakan HTTP/HTTPS. SABUN dapat menggunakan hampir semua transportasi untuk mengirim permintaan tapi SISANYA tidak. Jadi di sini kita mendapat sebuah keuntungan dari menggunakan SABUN.
Seperti yang saya telah disebutkan dalam ayat di atas "SISANYA menggunakan HTTP/HTTPS", jadi pergi sedikit lebih dalam pada kata-kata ini.
Ketika kita berbicara tentang SISANYA melalui HTTP, semua langkah-langkah keamanan yang diterapkan HTTP diwariskan, dan ini dikenal sebagai transportasi tingkat keamanan dan mengamankan pesan hanya sementara ini adalah dalam kawat tapi setelah anda menyampaikan hal itu di sisi lain anda tidak tahu berapa banyak tahapan itu akan memiliki untuk pergi melalui sebelum mencapai titik nyata di mana data yang akan diproses. Dan tentu saja, semua tahapan tersebut bisa menggunakan sesuatu yang berbeda dari HTTP.Jadi Sisanya tidak aman sama sekali, kan?
Tapi SABUN mendukung SSL hanya seperti SISA tambahan ini juga mendukung WS-Security yang menambah beberapa fitur keamanan perusahaan. WS-Security menawarkan perlindungan dari penciptaan pesan untuk itu konsumsi. Jadi untuk transportasi tingkat keamanan apapun celah yang kami temukan itu dapat dicegah dengan menggunakan WS-Security.
Selain itu, sebagai SISA dibatasi oleh itu's protokol HTTP jadi dukungan transaksi tidak ACID compliant juga dapat memberikan two-phase commit seluruh didistribusikan transnasional sumber daya.
Tapi SABUN yang memiliki dukungan yang komprehensif untuk investasi ASAM berdasarkan manajemen transaksi untuk berumur pendek dan transaksi kompensasi berbasis manajemen transaksi untuk transaksi berjalan lama. Ini juga mendukung two-phase commit seluruh didistribusikan sumber daya.
Saya tidak menarik kesimpulan apapun, tapi aku akan lebih memilih SABUN berbasis web sementara layanan keamanan, transaksi, dll. ini adalah keprihatinan utama.
Berikut ini adalah "The Java EE 6 Tutorial" di mana mereka telah mengatakan Yang Tenang desain mungkin tepat bila kondisi berikut terpenuhi. Melihat-lihat.
Harap anda menikmati membaca jawaban saya.
ISTIRAHAT(, REpresentasi State Transfer) REpresentasi State dari sebuah Objek adalah Transferred adalah SISANYA yaitu kita don't mengirim Objek, kami mengirim keadaan Objek. SISANYA adalah sebuah gaya arsitektur. Itu tidak menentukan begitu banyak standar seperti SABUN. SISANYA adalah untuk mengekspos Api Publik(yaitu Facebook API, Google Maps API) melalui internet untuk menangani operasi CRUD pada data. SISANYA adalah fokus pada mengakses bernama sumber daya melalui satu antarmuka yang konsisten.
SABUN(Simple Object Access Protocol) SABUN membawa sendiri protokol dan berfokus pada memperlihatkan potongan-potongan dari logika aplikasi (bukan data) sebagai layanan. SABUN mengekspos operasi. SABUN ini difokuskan pada mengakses bernama operasi, masing-masing operasi mengimplementasikan beberapa logika bisnis. Meskipun SABUN ini sering disebut sebagai layanan web ini adalah keliru. SABUN memiliki sangat sedikit jika hubungannya dengan Web. SISA menyediakan sejati layanan Web berdasarkan Uri dan HTTP.
Mengapa BERISTIRAHAT?
application/xml
atau application/json
untuk POSTING dan /user/1234.json
atau /user/1234.xml
untuk MENDAPATKAN.Mengapa SABUN?
Perbedaan antara Istirahat dan Sabun
SABUN
ISTIRAHAT
Untuk Rincian lebih lanjut silakan lihat di sini
IMHO anda dapat't membandingkan SABUN dan SISANYA di mana mereka adalah dua hal yang berbeda.
SABUN adalah sebuah protokol dan ISTIRAHAT adalah sebuah perangkat lunak arsitektur pola. Ada banyak kesalahpahaman di internet untuk SABUN vs SISANYA.
SABUN mendefinisikan berbasis XML format pesan bahwa layanan web-enabled aplikasi yang digunakan untuk berkomunikasi satu sama lain melalui internet. Dalam rangka untuk melakukan itu aplikasi-aplikasi yang memerlukan pengetahuan sebelumnya dari pesan kontrak, tipe data, dll.
ISTIRAHAT mewakili negara(sebagai sumber daya) server dari sebuah URL.Itu adalah stateless dan klien tidak memiliki pengetahuan sebelumnya untuk berinteraksi dengan server di luar pemahaman hypermedia.
Pertama-tama: resmi, pertanyaan yang benar akan
layanan web + WSDL + SABUN
vsISTIRAHAT
.
Karena, meskipun layanan web, digunakan dalam kehilangan akal, ketika menggunakan protokol HTTP untuk transfer data ** bukan halaman web, resmi ini adalah bentuk yang sangat spesifik dari ide itu. Menurut definisi, SISANYA tidak "layanan web".
Dalam praktek namun, semua orang mengabaikan itu, jadi let's mengabaikan hal itu terlalu
Sudah ada teknis jawaban, sehingga saya'll mencoba untuk memberikan beberapa intuisi.
Let's mengatakan anda ingin memanggil fungsi di komputer remote, yang dilaksanakan di beberapa bahasa pemrograman (ini sering disebut remote procedure call/RPC). Asumsikan bahwa fungsi dapat ditemukan di URL tertentu, yang diberikan oleh orang yang menulisnya. Anda harus (entah bagaimana) mengirim pesan, dan mendapatkan beberapa respon. Jadi, ada dua pertanyaan utama yang perlu dipertimbangkan.
Untuk pertanyaan pertama, definisi resmi adalah WSDL. Ini adalah file XML yang menjelaskan, secara rinci dan ketat format, apa parameter, apa yang mereka jenis, nama, nilai-nilai default, nama fungsi yang akan dipanggil, dll. Contoh WSDL di sini menunjukkan bahwa file yang dapat dibaca manusia (tetapi tidak mudah).
Untuk pertanyaan kedua, ada berbagai jawaban. Namun, hanya satu yang digunakan dalam praktek adalah SABUN. Ide utamanya adalah: bungkus sebelumnya XML (pesan yang sebenarnya) ke belum XML lain (yang berisi pengkodean info dan hal-hal berguna lainnya), dan mengirimkannya melalui HTTP. The POST metode HTTP yang digunakan untuk mengirim pesan, karena selalu ada tubuh.
Ide utama dari pendekatan ini adalah bahwa anda peta URL ke fungsi, yaitu, tindakan. Jadi, jika anda memiliki daftar pelanggan di beberapa server, dan anda ingin melihat/update/hapus salah satu, anda harus memiliki 3 URL:
myapp/baca-pelanggan
dan dalam tubuh pesan, lewat id pelanggan yang akan dibaca.myapp/update-pelanggan
dan dalam tubuh, melewati id pelanggan, serta data barumyapp/menghapus-pelanggan
dan id dalam tubuhSISANYA pendekatan yang melihat sesuatu yang berbeda. URL tidak harus mewakili suatu tindakan, tapi hal (disebut sumber daya dalam SISA lingo). Karena protokol HTTP (yang kita sudah menggunakan) mendukung verba, menggunakan kata kerja untuk menentukan tindakan apa yang untuk melakukan hal tersebut.
Jadi, dengan SISA pendekatan, pelanggan nomor 12 dapat ditemukan di URL myapp/pelanggan/12
. Untuk melihat data pelanggan, anda memukul URL dengan permintaan GET. Untuk menghapusnya, sama URL, dengan MENGHAPUS kata kerja. Untuk update ini, lagi, sama URL dengan POSTING kata kerja, dan konten baru dalam permintaan tubuh.
Untuk rincian lebih lanjut tentang persyaratan layanan harus memenuhi dianggap benar-benar Tenang, lihat Richardson model kematangan. Artikel ini memberikan contoh-contoh, dan, yang lebih penting, menjelaskan mengapa (disebut) layanan SOAP, adalah level-0 SISA layanan (meskipun, tingkat-0 berarti kepatuhan yang rendah untuk model ini, it's tidak ofensif, dan itu masih berguna dalam banyak kasus).
Di antara banyak orang lain yang sudah dibahas dalam banyak jawaban, saya akan menyoroti bahwa SABUN memungkinkan untuk mendefinisikan kontrak, WSDL, yang menentukan operasi yang didukung, jenis kompleks, dll. SABUN berorientasi untuk operasi, tapi SISANYA adalah berorientasi pada sumber daya. Secara pribadi saya akan memilih SABUN untuk interface yang kompleks antara aplikasi internal perusahaan, dan SISANYA untuk umum, sederhana, bernegara antarmuka dengan dunia luar.
Selain itu untuk:
++ Kesalahan yang sering dilakukan saat mendekati SISANYA adalah untuk menganggapnya sebagai "layanan web dengan Url"—untuk berpikir jalan-jalan sebagai remote procedure call (RPC) mekanisme, seperti SABUN, tapi dipanggil melalui polos Url HTTP dan tanpa SABUN ini lumayan XML namespaces.
++ Sebaliknya, SISANYA memiliki sedikit untuk melakukan dengan RPC. Sedangkan RPC adalah layanan yang berorientasi dan berfokus pada tindakan dan kata kerja, SISANYA adalah sumber daya yang berorientasi, menekankan hal-hal dan kata benda yang terdiri dari sebuah aplikasi.
Banyak dari jawaban-jawaban ini sama sekali lupa menyebutkan hypermedia kontrol (HATEOAS) yang benar-benar mendasar untuk BERISTIRAHAT. Beberapa orang lain menyentuh di atasnya, tetapi tidak't benar-benar menjelaskannya dengan sangat baik.
Artikel ini harus menjelaskan perbedaan antara konsep-konsep, tanpa masuk ke gulma tertentu SABUN fitur.