Tutorial Perkhidmatan Web SOAP: Apa itu Protokol SOAP? CONTOH

Isi kandungan:

Anonim

Apa itu sabun?

SOAP adalah protokol berasaskan XML untuk mengakses perkhidmatan web melalui HTTP. Ini memiliki beberapa spesifikasi yang dapat digunakan di semua aplikasi.

SOAP dikenali sebagai Protokol Akses Objek Sederhana, tetapi pada masa kemudian hanya disingkat menjadi SOAP v1.2. SOAP adalah protokol atau dengan kata lain adalah definisi bagaimana perkhidmatan web bercakap antara satu sama lain atau bercakap dengan aplikasi pelanggan yang memintanya.

SOAP dikembangkan sebagai bahasa perantaraan sehingga aplikasi yang dibina berdasarkan pelbagai bahasa pengaturcaraan dapat berbicara dengan mudah antara satu sama lain dan mengelakkan usaha pengembangan yang melampau.

Dalam tutorial perkhidmatan Web SOAP ini, anda akan belajar-

  • Pengenalan Sabun
  • Kelebihan sabun
  • Blok bangunan sabun
  • Struktur Mesej SOAP
  • Elemen Sampul Sabun
  • Model Komunikasi SOAP
  • Contoh sabun praktikal

Pengenalan Sabun

Di dunia sekarang ini, terdapat banyak aplikasi yang dibina berdasarkan bahasa pengaturcaraan yang berbeza. Sebagai contoh, mungkin ada aplikasi web yang dirancang di Java, yang lain di. Net dan yang lain di PHP.

Pertukaran data antara aplikasi sangat penting dalam dunia rangkaian hari ini. Tetapi pertukaran data antara aplikasi heterogen ini akan menjadi rumit. Begitu juga kerumitan kod untuk melakukan pertukaran data ini.

Salah satu kaedah yang digunakan untuk memerangi kerumitan ini adalah dengan menggunakan XML (Extensible Markup Language) sebagai bahasa perantaraan untuk pertukaran data antara aplikasi.

Setiap bahasa pengaturcaraan dapat memahami bahasa markup XML. Oleh itu, XML digunakan sebagai media asas untuk pertukaran data.

Tetapi tidak ada spesifikasi standard penggunaan XML di semua bahasa pengaturcaraan untuk pertukaran data. Di situlah perisian SOAP masuk.

SOAP dirancang untuk bekerja dengan XML melalui HTTP dan memiliki semacam spesifikasi yang dapat digunakan di semua aplikasi. Kami akan melihat lebih terperinci mengenai protokol SOAP pada bab-bab berikutnya.

Kelebihan sabun

SOAP adalah protokol yang digunakan untuk pertukaran data antara aplikasi. Berikut adalah beberapa sebab mengapa SOAP digunakan.

  • Semasa mengembangkan perkhidmatan Web berasaskan SOAP, anda perlu memiliki beberapa bahasa yang dapat digunakan untuk perkhidmatan web untuk berbicara dengan aplikasi klien. SOAP adalah medium sempurna yang dikembangkan untuk mencapai tujuan ini. Protokol ini juga disarankan oleh konsorsium W3C yang merupakan badan yang mengatur semua standard web.
  • SOAP adalah protokol ringan yang digunakan untuk pertukaran data antara aplikasi. Perhatikan kata kunci ' ringan '. Oleh kerana pengaturcaraan SOAP didasarkan pada bahasa XML, yang dengan sendirinya merupakan bahasa pertukaran data ringan, maka SOAP sebagai protokol yang juga termasuk dalam kategori yang sama.
  • SOAP direka untuk bebas dari platform dan juga dirancang agar sistem operasi bebas. Oleh itu, protokol SOAP dapat menggunakan aplikasi berasaskan bahasa pengaturcaraan pada platform Windows dan Linux.
  • Ia berfungsi pada protokol HTTP -SOAP berfungsi pada protokol HTTP, yang merupakan protokol lalai yang digunakan oleh semua aplikasi web. Oleh itu, tidak ada jenis penyesuaian yang diperlukan untuk menjalankan perkhidmatan web yang dibina berdasarkan protokol SOAP untuk berfungsi di World Wide Web.

Blok Bangunan SOAP

Spesifikasi SOAP mendefinisikan sesuatu yang dikenali sebagai " pesan SOAP " iaitu apa yang dihantar ke perkhidmatan web dan aplikasi pelanggan.

Gambarajah seni bina SOAP di bawah menunjukkan pelbagai blok bangunan Mesej SOAP.

Blok Pembinaan Mesej SOAP

Mesej SOAP tidak lain hanyalah dokumen XML yang mempunyai komponen di bawah.

  • Elemen sampul surat yang mengidentifikasi dokumen XML sebagai mesej SOAP - Ini adalah bahagian yang mengandungi mesej SOAP dan digunakan untuk merangkum semua perincian dalam mesej SOAP. Ini adalah elemen akar dalam mesej SOAP.
  • Elemen Header yang mengandungi maklumat header - Elemen header boleh mengandungi maklumat seperti bukti pengesahan yang dapat digunakan oleh aplikasi panggilan. Ini juga dapat berisi definisi jenis kompleks yang dapat digunakan dalam pesan SOAP. Secara lalai, pesan SOAP dapat berisi parameter yang dapat terdiri dari jenis sederhana seperti rentetan dan angka, tetapi juga dapat menjadi jenis objek yang kompleks.

Contoh perkhidmatan SOAP ringkas dari jenis kompleks ditunjukkan di bawah.

Andaikan kami ingin mengirim jenis data terstruktur yang mempunyai kombinasi "Nama Tutorial" dan "Huraian Tutorial," maka kami akan menentukan jenis kompleks seperti yang ditunjukkan di bawah.

Jenis kompleks ditentukan oleh tag elemen . Semua elemen struktur yang diperlukan bersama dengan jenis data masing-masing kemudian ditentukan dalam pengumpulan jenis kompleks.

  • Elemen badan yang mengandungi maklumat panggilan dan respons - Elemen ini adalah apa yang mengandungi data sebenar yang perlu dihantar antara perkhidmatan web dan aplikasi panggilan. Di bawah ini adalah contoh perkhidmatan web SOAP badan SOAP yang sebenarnya berfungsi pada jenis kompleks yang ditentukan dalam bahagian tajuk. Berikut adalah respons Nama Tutorial dan Huraian Tutorial yang dihantar ke aplikasi panggilan yang memanggil perkhidmatan web ini.
Web ServicesAll about web services

Struktur Mesej SOAP

Satu perkara yang perlu diperhatikan adalah bahawa mesej SOAP biasanya dihasilkan secara automatik oleh perkhidmatan web ketika dipanggil.

Setiap kali aplikasi pelanggan memanggil kaedah dalam perkhidmatan web, perkhidmatan web secara automatik akan menghasilkan pesanan SOAP yang akan mempunyai perincian data yang diperlukan yang akan dihantar dari perkhidmatan web ke aplikasi klien.

Seperti yang dibincangkan dalam topik tutorial SOAP sebelumnya, Mesej SOAP ringkas mempunyai unsur-unsur berikut -

  • Elemen sampul surat
  • Elemen tajuk dan
  • Unsur badan
  • Elemen Kesalahan (Pilihan)

Mari kita lihat contoh di bawah mesej SOAP ringkas dan melihat elemen apa sebenarnya.

Struktur Mesej SOAP
  1. Seperti yang dapat dilihat dari pesan SOAP di atas, bahagian pertama dari pesan SOAP adalah elemen sampul yang digunakan untuk merangkum keseluruhan pesan SOAP.
  2. Elemen seterusnya adalah badan SOAP yang mengandungi perincian mesej sebenar.
  3. Mesej kami mengandungi perkhidmatan web yang mempunyai nama "Guru99WebService".
  4. "Guru99Webservice" menerima parameter dari jenis 'int' dan mempunyai nama TutorialID.

Sekarang, mesej SOAP di atas akan disampaikan antara perkhidmatan web dan aplikasi pelanggan.

Anda dapat melihat betapa bergunanya maklumat di atas untuk aplikasi pelanggan. Mesej SOAP memberitahu aplikasi klien apa nama layanan Web, dan juga parameter apa yang diharapkannya dan juga jenis setiap parameter yang diambil oleh perkhidmatan web.

Elemen Sampul Sabun

Bahagian pertama blok bangunan adalah Sampul Surat.

Sampul Surat SOAP digunakan untuk merangkum semua butiran yang diperlukan dari pesanan SOAP, yang ditukar antara perkhidmatan web dan aplikasi klien.

Elemen sampul SOAP digunakan untuk menunjukkan permulaan dan akhir mesej SOAP. Ini membolehkan aplikasi pelanggan yang memanggil perkhidmatan web untuk mengetahui kapan mesej SOAP berakhir.

Perkara berikut dapat diperhatikan pada elemen sampul SOAP.

  • Setiap mesej SOAP perlu mempunyai elemen Amplop root. Sangat mustahak untuk mesej SOAP mempunyai elemen sampul surat.
  • Setiap elemen Sampul mesti mempunyai sekurang-kurangnya satu elemen badan sabun.
  • Sekiranya elemen Amplop mengandungi elemen tajuk, elemen tersebut mesti mengandungi tidak lebih dari satu, dan elemen tersebut mesti muncul sebagai anak pertama Sampul, sebelum elemen badan.
  • Sampul surat berubah apabila versi SOAP berubah.
  • Pemproses SOAP yang mematuhi v1.1 menghasilkan kesalahan semasa menerima mesej yang mengandungi ruang nama sampul surat v1.2.
  • Pemproses SOAP yang mematuhi v1.2 menghasilkan kesalahan Ketidakcocokan Versi jika menerima mesej yang tidak termasuk ruang nama sampul surat v1.2.

Di bawah ini adalah contoh SOAP API versi 1.2 dari elemen sampul SOAP.

int

Mesej Kesalahan

Apabila permintaan dibuat untuk perkhidmatan web SOAP, respons yang dikembalikan dapat terdiri dari 2 bentuk yang merupakan respons yang berjaya atau respons kesalahan. Apabila kejayaan dihasilkan, respons dari pelayan akan selalu menjadi pesanan SOAP. Tetapi jika kesalahan SOAP dihasilkan, ia dikembalikan sebagai kesalahan "HTTP 500".

Mesej SOAP Fault terdiri daripada elemen berikut.

  1. - Ini adalah kod yang menetapkan kod kesalahan. Kod kesalahan boleh menjadi salah satu daripada nilai di bawah
    1. SOAP-ENV: VersionMismatch - Ini adalah ketika ruang nama yang tidak betul untuk elemen SOAP Envelope ditemui.
    2. SOAP-ENV: MustUnderstand - Unsur anak langsung dari elemen Header, dengan atribut mustUnderstand yang ditetapkan ke "1", tidak difahami.
    3. SOAP-ENV: Pelanggan - Mesej tidak betul dibentuk atau mengandungi maklumat yang salah.
    4. SOAP-ENV: Server - Terdapat masalah dengan pelayan, jadi mesej tidak dapat diteruskan.
  2. - Ini adalah mesej teks yang memberikan penerangan terperinci mengenai kesalahan tersebut.
  3. (Pilihan) - Ini adalah rentetan teks yang menunjukkan siapa yang menyebabkan kesalahan.
  4. (Pilihan) - Ini adalah elemen untuk mesej ralat khusus aplikasi. Oleh itu, aplikasi tersebut mungkin mempunyai mesej ralat khusus untuk senario logik perniagaan yang berbeza.

Contoh untuk Mesej Kesalahan

Contoh mesej kesalahan diberikan di bawah. Kesalahan dihasilkan jika senario di mana klien cuba menggunakan kaedah yang disebut TutorialID di kelas GetTutorial.

Mesej kesalahan di bawah akan dihasilkan sekiranya kaedah tersebut tidak wujud dalam kelas yang ditentukan.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Pengeluaran:

Apabila anda melaksanakan kod di atas, ia akan menunjukkan ralat seperti "Gagal mencari kaedah (GetTutorialID) di kelas (GetTutorial)"

Model Komunikasi SOAP

Semua komunikasi dengan SOAP dilakukan melalui protokol HTTP. Sebelum SOAP, banyak perkhidmatan web menggunakan gaya RPC (Panggilan Prosedur Jauh) standard untuk komunikasi. Ini adalah jenis komunikasi yang paling sederhana, tetapi mempunyai banyak batasan.

Sekarang dalam tutorial SOAP API ini, mari kita perhatikan rajah di bawah untuk melihat bagaimana komunikasi ini berfungsi. Dalam contoh ini, anggap pelayan mengehos perkhidmatan web yang menyediakan 2 kaedah sebagai

  • GetEm Employee - Ini akan mendapat semua maklumat Pekerja
  • SetEm Employee - Ini akan menetapkan nilai perincian seperti pegawai, gaji, dan lain-lain.

Dalam komunikasi gaya RPC biasa, klien hanya akan memanggil metode dalam permintaannya dan mengirim parameter yang diperlukan ke pelayan, dan pelayan kemudian akan mengirimkan respons yang diinginkan.

Model komunikasi di atas mempunyai batasan serius di bawah ini

  1. Tidak Berbahasa Bahasa - Pelayan yang menginvestasikan metode akan menggunakan bahasa pengaturcaraan tertentu dan biasanya panggilan ke pelayan hanya dilakukan dalam bahasa pengaturcaraan itu.
  2. Bukan protokol standard - Apabila panggilan dibuat ke prosedur jarak jauh, panggilan tidak dilakukan melalui protokol standard. Ini adalah masalah kerana kebanyakan komunikasi melalui web harus dilakukan melalui protokol HTTP.
  3. Firewall - Oleh kerana panggilan RPC tidak melalui protokol biasa, port berasingan perlu dibuka di pelayan untuk membolehkan klien berkomunikasi dengan pelayan. Biasanya semua firewall akan menyekat lalu lintas seperti ini, dan banyak konfigurasi pada umumnya diperlukan untuk memastikan komunikasi seperti ini antara klien dan pelayan dapat berfungsi.

Untuk mengatasi semua batasan yang disebutkan di atas, SOAP kemudian akan menggunakan model komunikasi di bawah

  1. Pelanggan akan memformat maklumat mengenai prosedur prosedur dan argumen apa pun ke dalam pesan SOAP dan mengirimkannya ke pelayan sebagai bagian dari permintaan HTTP. Proses merangkum data ke dalam pesan SOAP dikenal sebagai Marshalling.
  2. Pelayan kemudian akan membuka pesanan yang dihantar oleh pelanggan, melihat apa yang diminta oleh pelanggan dan kemudian menghantar respons yang sesuai kembali kepada pelanggan sebagai pesanan SOAP. Amalan membongkar permintaan yang dihantar oleh pelanggan dikenali sebagai Demarshalling.

Contoh sabun praktikal

Sekarang dalam tutorial SoapUI ini, mari kita lihat contoh SOAP praktikal,

Mungkin salah satu kaedah terbaik untuk melihat bagaimana mesej SOAP dihasilkan adalah dengan melihat perkhidmatan web dalam tindakan.

Topik ini akan melihat penggunaan rangka kerja Microsoft.Net untuk membina perkhidmatan web ASMX. Perkhidmatan web jenis ini menyokong kedua-dua SOAP versi 1.1 dan versi 1.2.

Perkhidmatan web ASMX secara automatik menghasilkan dokumen Bahasa Definisi Perkhidmatan Web (WSDL). Dokumen WSDL ini diperlukan oleh aplikasi klien panggilan sehingga aplikasi mengetahui apa yang mampu dilakukan oleh perkhidmatan web.

Dalam contoh kami, kami akan membuat perkhidmatan web sederhana, yang akan digunakan untuk mengembalikan rentetan ke aplikasi yang memanggil perkhidmatan web.

Perkhidmatan web ini akan dihoskan dalam aplikasi web Asp.Net. Kami kemudian akan menggunakan perkhidmatan web dan melihat hasil yang dikembalikan oleh perkhidmatan web.

Visual Studio juga akan menunjukkan kepada kita apa pesan SOAP yang disampaikan antara perkhidmatan web dan aplikasi panggilan.

Prasyarat pertama untuk menyediakan aplikasi perkhidmatan Web kami yang boleh dilakukan dengan mengikuti langkah-langkah di bawah ini.

Pastikan Visual Studio 2013 dipasang pada sistem anda untuk contoh ini.

Langkah 1) Langkah pertama adalah membuat aplikasi Web ASP.Net kosong. Dari Visual Studio 2013, klik pada pilihan menu Fail-> Projek baru.

Sebaik sahaja anda mengklik pilihan Projek Baru, Visual Studio kemudian akan memberi anda kotak dialog lain untuk memilih jenis projek dan memberikan butiran projek yang diperlukan. Ini dijelaskan pada langkah seterusnya.

Langkah 2) Dalam langkah ini,

  1. Pastikan untuk memilih templat web C # dari aplikasi Web ASP.NET terlebih dahulu. Projek mestilah jenis ini untuk membuat projek perkhidmatan SOAP. Dengan memilih pilihan ini, Visual Studio kemudian akan melakukan langkah-langkah yang diperlukan untuk menambahkan fail yang diperlukan yang diperlukan oleh aplikasi berbasis web apa pun.
  2. Beri nama untuk projek anda yang dalam kes kami telah diberikan sebagai webservice.asmx. Kemudian pastikan untuk memberikan lokasi di mana fail projek akan disimpan.

Setelah selesai, anda akan melihat fail projek yang dibuat dalam penjelajah penyelesaian anda di Visual Studio 2013.

Langkah 3) Dalam langkah ini,

Kami akan menambahkan fail perkhidmatan Web ke projek kami

  1. Klik kanan pertama pada fail projek seperti gambar di bawah

  1. Sebaik sahaja anda klik kanan pada fail projek, anda berpeluang memilih pilihan "Tambah-> Perkhidmatan Web (ASMX) untuk menambahkan fail perkhidmatan web. Cukup berikan nama Perkhidmatan Tutorial untuk fail nama perkhidmatan web.

Langkah 4) Tambahkan kod berikut ke fail asmx Perkhidmatan Tutorial anda.

Penjelasan Kod:

  1. Baris kod ini memberikan nama untuk fail perkhidmatan web anda. Ini adalah langkah penting kerana memberi jalan bagi aplikasi klien untuk memanggil perkhidmatan web melalui nama perkhidmatan web.
  2. Biasanya fail kelas digunakan untuk merangkumi fungsi perkhidmatan web. Jadi fail kelas akan mempunyai definisi semua kaedah web yang akan memberikan beberapa fungsi untuk aplikasi klien.
  3. Di sini [Kaedah Web] dikenali sebagai atribut yang menerangkan fungsi. Langkah seterusnya membuat fungsi yang disebut "Guru99WebService", tetapi dengan memasukkan langkah ini untuk menambahkan atribut [WebMethod] memastikan bahawa kaedah ini dapat dipanggil oleh aplikasi klien. Sekiranya atribut ini tidak ada, maka kaedah itu tidak boleh dipanggil oleh aplikasi pelanggan.
  4. Di sini kita mendefinisikan fungsi yang disebut 'Guru99WebService' yang akan digunakan untuk mengembalikan rentetan ke aplikasi klien panggilan. Fungsi ini adalah perkhidmatan web yang dapat dipanggil oleh aplikasi klien mana pun.
  5. Kami menggunakan pernyataan pengembalian untuk mengembalikan rentetan "Ini adalah perkhidmatan Web Guru99" ke aplikasi klien.

Sekiranya kod berjaya dilaksanakan, Keluaran berikut akan ditunjukkan semasa anda menjalankan kod anda di penyemak imbas.

Pengeluaran:

  • Hasilnya jelas menunjukkan bahawa nama perkhidmatan web kami adalah "Guru99 Web Service" yang merupakan hasil dari memberikan nama untuk perkhidmatan web kami.
  • Kita juga dapat melihat bahawa kita boleh menggunakan perkhidmatan web. Sekiranya kita mengklik butang Invoke, kita akan mendapat respons di bawah di penyemak imbas web.

Keluaran di atas,

  • Ini jelas menunjukkan bahawa dengan menggunakan kaedah web, rentetan "Ini adalah perkhidmatan Web Guru99" dikembalikan.
  • Visual Studio juga membolehkan anda melihat permintaan dan respons pesanan SOAP yang dihasilkan semasa perkhidmatan web di atas dipanggil.

Permintaan SOAP yang dihasilkan semasa perkhidmatan web dipanggil ditunjukkan di bawah.

Penjelasan Kod:

  1. Bahagian pertama dari pesan SOAP adalah elemen sampul yang dibincangkan dalam bab-bab sebelumnya. Ini adalah elemen enkapsulasi yang terdapat dalam setiap pesan SOAP.
  2. Badan SOAP adalah elemen seterusnya dan mengandungi perincian sebenar mesej SOAP.
  3. Bahagian ketiga adalah elemen yang menentukan bahawa kita ingin memanggil perkhidmatan yang dipanggil 'Guru99WebService.'

string

Penjelasan Kod:

  1. Bahagian pertama dari pesan SOAP adalah elemen sampul yang dibincangkan dalam bab-bab sebelumnya. Ini adalah elemen enkapsulasi yang terdapat dalam setiap pesan SOAP.
  2. Badan SOAP adalah elemen seterusnya dan mengandungi perincian sebenar mesej SOAP.
  3. Bahagian menarik yang akan anda lihat sekarang ialah atribut 'string'. Ini memberitahu aplikasi klien bahawa perkhidmatan web yang dipanggil mengembalikan objek rentetan jenis. Ini sangat berguna kerana jika aplikasi pelanggan yang sebaliknya tidak tahu apa yang dikembalikan perkhidmatan web.

Ringkasan

  • SOAP adalah protokol yang digunakan untuk menukar data antara aplikasi yang dibuat berdasarkan bahasa pengaturcaraan yang berbeza.
  • SOAP dibina berdasarkan spesifikasi XML dan berfungsi dengan protokol HTTP. Ini menjadikannya sempurna untuk digunakan dalam aplikasi web.
  • Blok bangunan SOAP terdiri daripada Mesej SOAP. Setiap mesej SOAP terdiri daripada elemen sampul surat, header, dan elemen badan.
  • Elemen sampul surat adalah elemen wajib dalam mesej SOAP dan digunakan untuk merangkum semua data dalam pesan SOAP.
  • Elemen tajuk boleh digunakan untuk mengandungi maklumat seperti maklumat pengesahan atau definisi jenis data yang kompleks.
  • Elemen badan adalah elemen utama yang mengandungi definisi kaedah web bersama dengan maklumat parameter jika diperlukan.