Tutorial SOAP Web Services: Apa itu SOAP Protocol? CONTOH

Daftar Isi:

Anonim

Apa SOAP?

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

SOAP dikenal sebagai Simple Object Access Protocol, tetapi kemudian disingkat menjadi SOAP v1.2. SOAP adalah protokol atau dengan kata lain adalah definisi tentang bagaimana layanan web berbicara satu sama lain atau berbicara dengan aplikasi klien yang memanggilnya.

SOAP dikembangkan sebagai bahasa perantara sehingga aplikasi yang dibangun di atas berbagai bahasa pemrograman dapat berbicara dengan mudah satu sama lain dan menghindari upaya pengembangan yang ekstrim.

Dalam tutorial layanan Web SOAP ini, Anda akan belajar-

  • Pengenalan SOAP
  • Keuntungan SOAP
  • SOAP Building block
  • Struktur Pesan SOAP
  • Elemen Amplop SOAP
  • Model Komunikasi SOAP
  • Contoh SOAP Praktis

Pengenalan SOAP

Di dunia saat ini, ada sejumlah besar aplikasi yang dibangun di atas bahasa pemrograman yang berbeda. Misalnya, mungkin ada aplikasi web yang dirancang di Java, yang lain di .Net dan lain di PHP.

Bertukar data antar aplikasi sangat penting dalam dunia jaringan saat ini. Tetapi pertukaran data antara aplikasi heterogen ini akan menjadi kompleks. Jadi akan menjadi kompleksitas kode untuk menyelesaikan pertukaran data ini.

Salah satu metode yang digunakan untuk mengatasi kompleksitas ini adalah dengan menggunakan XML (Extensible Markup Language) sebagai bahasa perantara untuk bertukar data antar aplikasi.

Setiap bahasa pemrograman dapat memahami bahasa markup XML. Oleh karena itu, XML digunakan sebagai media dasar untuk pertukaran data.

Tetapi tidak ada spesifikasi standar tentang penggunaan XML di semua bahasa pemrograman untuk pertukaran data. Di situlah perangkat lunak SOAP masuk.

SOAP dirancang untuk bekerja dengan XML melalui HTTP dan memiliki semacam spesifikasi yang dapat digunakan di semua aplikasi. Kami akan melihat detail lebih lanjut tentang protokol SOAP di bab-bab selanjutnya.

Keuntungan SOAP

SOAP adalah protokol yang digunakan untuk pertukaran data antar aplikasi. Di bawah ini adalah beberapa alasan mengapa SOAP digunakan.

  • Saat mengembangkan layanan Web berbasis SOAP, Anda perlu memiliki beberapa bahasa yang dapat digunakan untuk layanan web untuk berbicara dengan aplikasi klien. SOAP merupakan media sempurna yang dikembangkan untuk mencapai tujuan tersebut. Protokol ini juga direkomendasikan oleh konsorsium W3C yang merupakan badan pengatur untuk semua standar web.
  • SOAP adalah protokol ringan yang digunakan untuk pertukaran data antar aplikasi. Perhatikan kata kunci ' cahaya '. Karena pemrograman SOAP didasarkan pada bahasa XML, yang merupakan bahasa pertukaran data ringan, maka SOAP sebagai protokol yang juga termasuk dalam kategori yang sama.
  • SOAP dirancang untuk menjadi platform independen dan juga dirancang untuk sistem operasi independen. Jadi protokol SOAP dapat menjalankan aplikasi berbasis bahasa pemrograman apa pun pada platform Windows dan Linux.
  • Ia bekerja pada protokol HTTP -SOAP bekerja pada protokol HTTP, yang merupakan protokol default yang digunakan oleh semua aplikasi web. Oleh karena itu, tidak ada penyesuaian yang diperlukan untuk menjalankan layanan web yang dibangun di atas protokol SOAP untuk bekerja di World Wide Web.

Balok Penyusun SOAP

Spesifikasi SOAP mendefinisikan sesuatu yang dikenal sebagai " pesan SOAP " yang dikirim ke layanan web dan aplikasi klien.

Diagram arsitektur SOAP di bawah ini menunjukkan berbagai blok bangunan dari Pesan SOAP.

Blok Bangunan Pesan SOAP

Pesan SOAP hanyalah dokumen XML yang memiliki komponen di bawah ini.

  • Elemen amplop yang mengidentifikasi dokumen XML sebagai pesan SOAP - Ini adalah bagian yang berisi pesan SOAP dan digunakan untuk merangkum semua detail dalam pesan SOAP. Ini adalah elemen root dalam pesan SOAP.
  • Elemen Header yang berisi informasi header - Elemen header dapat berisi informasi seperti kredensial otentikasi yang dapat digunakan oleh aplikasi pemanggil. Ini juga dapat berisi definisi tipe kompleks yang dapat digunakan dalam pesan SOAP. Secara default, pesan SOAP dapat berisi parameter yang dapat berupa tipe sederhana seperti string dan angka, tetapi juga dapat berupa tipe objek yang kompleks.

Contoh layanan SOAP sederhana dari tipe kompleks ditunjukkan di bawah ini.

Misalkan kita ingin mengirim tipe data terstruktur yang memiliki kombinasi "Nama Tutorial" dan "Deskripsi Tutorial", maka kita akan menentukan tipe kompleks seperti yang ditunjukkan di bawah ini.

Jenis kompleks ditentukan oleh tag elemen . Semua elemen struktur yang diperlukan bersama dengan tipe datanya masing-masing kemudian ditentukan dalam kumpulan tipe kompleks.

  • Elemen Tubuh yang berisi informasi panggilan dan respons - Elemen ini berisi data aktual yang perlu dikirim antara layanan web dan aplikasi pemanggil. Di bawah ini adalah contoh layanan web SOAP dari badan SOAP yang benar-benar berfungsi pada tipe kompleks yang ditentukan di bagian tajuk. Berikut adalah respon dari Nama Tutorial dan Deskripsi Tutorial yang dikirim ke aplikasi pemanggil yang memanggil layanan web ini.
Web ServicesAll about web services

Struktur Pesan SOAP

Satu hal yang perlu diperhatikan adalah bahwa pesan SOAP biasanya dibuat secara otomatis oleh layanan web saat dipanggil.

Setiap kali aplikasi klien memanggil metode dalam layanan web, layanan web akan secara otomatis menghasilkan pesan SOAP yang akan memiliki rincian data yang diperlukan yang akan dikirim dari layanan web ke aplikasi klien.

Seperti yang dibahas dalam topik sebelumnya dari tutorial SOAP ini, Pesan SOAP sederhana memiliki elemen-elemen berikut -

  • Elemen Amplop
  • Elemen header dan
  • Elemen tubuh
  • Elemen Kesalahan (Opsional)

Mari kita lihat contoh pesan SOAP sederhana di bawah ini dan lihat elemen apa yang sebenarnya berfungsi.

Struktur Pesan SOAP
  1. Seperti yang terlihat dari pesan SOAP di atas, bagian pertama dari pesan SOAP adalah elemen amplop yang digunakan untuk merangkum seluruh pesan SOAP.
  2. Elemen berikutnya adalah badan SOAP yang berisi detail dari pesan yang sebenarnya.
  3. Pesan kami berisi layanan web yang bernama "Guru99WebService".
  4. "Guru99Webservice" menerima parameter tipe 'int' dan memiliki nama TutorialID.

Sekarang, pesan SOAP di atas akan diteruskan antara layanan web dan aplikasi klien.

Anda dapat melihat betapa bergunanya informasi di atas untuk aplikasi klien. Pesan SOAP memberitahu aplikasi klien apa nama layanan Web, dan juga parameter apa yang diharapkan dan juga jenis setiap parameter yang diambil oleh layanan web.

Elemen Amplop SOAP

Bit pertama dari blok penyusun adalah SOAP Envelope.

Amplop SOAP digunakan untuk merangkum semua detail yang diperlukan dari pesan SOAP, yang dipertukarkan antara layanan web dan aplikasi klien.

Elemen amplop SOAP digunakan untuk menunjukkan awal dan akhir pesan SOAP. Ini memungkinkan aplikasi klien yang memanggil layanan web untuk mengetahui kapan pesan SOAP berakhir.

Poin-poin berikut dapat dicatat pada elemen amplop SOAP.

  • Setiap pesan SOAP harus memiliki elemen Envelope root. Pesan SOAP wajib memiliki elemen amplop.
  • Setiap elemen Amplop harus memiliki setidaknya satu elemen badan sabun.
  • Jika elemen Amplop berisi elemen header, elemen tersebut harus berisi tidak lebih dari satu, dan harus muncul sebagai turunan pertama Amplop, sebelum elemen isi.
  • Amplop berubah ketika versi SOAP berubah.
  • Prosesor SOAP yang sesuai dengan v1.1 menghasilkan kesalahan saat menerima pesan yang berisi namespace amplop v1.2.
  • Prosesor SOAP yang sesuai dengan v1.2 menghasilkan kesalahan Versi Tidak Cocok jika menerima pesan yang tidak menyertakan namespace amplop v1.2.

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

int

Pesan Fault

Ketika permintaan dibuat ke layanan web SOAP, respons yang dikembalikan dapat berupa 2 bentuk yang merupakan respons berhasil atau respons kesalahan. Ketika sukses dihasilkan, respon dari server akan selalu berupa pesan SOAP. Tetapi jika kesalahan SOAP dihasilkan, mereka dikembalikan sebagai kesalahan "HTTP 500".

Pesan Kesalahan SOAP terdiri dari elemen berikut.

  1. - Ini adalah kode yang menunjukkan kode kesalahan. Kode kesalahan dapat berupa salah satu dari nilai di bawah ini
    1. SOAP-ENV: VersionMismatch - Ini adalah saat namespace yang tidak valid untuk elemen SOAP Envelope ditemukan.
    2. SOAP-ENV: MustUnderstand - Elemen turunan langsung dari elemen Header, dengan atribut mustUnderstand disetel ke "1", tidak dipahami.
    3. SOAP-ENV: Klien - Pesan salah format atau berisi informasi yang salah.
    4. SOAP-ENV: Server - Ada masalah dengan server, jadi pesan tidak dapat dilanjutkan.
  2. - Ini adalah pesan teks yang memberikan penjelasan rinci tentang kesalahan.
  3. (Opsional) - Ini adalah string teks yang menunjukkan siapa yang menyebabkan kesalahan.
  4. (Opsional) - Ini adalah elemen untuk pesan kesalahan khusus aplikasi. Jadi aplikasi dapat memiliki pesan kesalahan khusus untuk skenario logika bisnis yang berbeda.

Contoh untuk Pesan Kesalahan

Contoh pesan kesalahan diberikan di bawah ini. Galat dibuat jika skenario di mana klien mencoba menggunakan metode yang disebut TutorialID di kelas GetTutorial.

Pesan kesalahan di bawah ini dihasilkan jika metode tersebut tidak ada di kelas yang ditentukan.

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

Keluaran:

Ketika Anda menjalankan kode di atas, itu akan menunjukkan kesalahan seperti "Gagal menemukan metode (GetTutorialID) di kelas (GetTutorial)"

Model Komunikasi SOAP

Semua komunikasi dengan SOAP dilakukan melalui protokol HTTP. Sebelum SOAP, banyak layanan web menggunakan gaya RPC (Remote Procedure Call) standar untuk komunikasi. Ini adalah jenis komunikasi yang paling sederhana, tetapi memiliki banyak keterbatasan.

Sekarang dalam tutorial SOAP API ini, mari pertimbangkan diagram di bawah ini untuk melihat bagaimana komunikasi ini bekerja. Dalam contoh ini, anggaplah server menghosting layanan web yang menyediakan 2 metode sebagai

  • GetEmployee - Ini akan mendapatkan semua detail Karyawan
  • SetEmployee - Ini akan menetapkan nilai detail seperti departemen karyawan, gaji, dll.

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

Model komunikasi di atas memiliki batasan serius di bawah ini

  1. Bukan Bahasa Independen - Server yang menghosting metode akan menggunakan bahasa pemrograman tertentu dan biasanya panggilan ke server hanya dalam bahasa pemrograman itu.
  2. Bukan protokol standar - Saat panggilan dilakukan ke prosedur jarak jauh, panggilan tidak dilakukan melalui protokol standar. Ini adalah masalah karena sebagian besar komunikasi melalui web harus dilakukan melalui protokol HTTP.
  3. Firewall - Karena panggilan RPC tidak melalui protokol normal, port terpisah perlu dibuka di server untuk memungkinkan klien berkomunikasi dengan server. Biasanya semua firewall akan memblokir lalu lintas semacam ini, dan banyak konfigurasi umumnya diperlukan untuk memastikan bahwa jenis komunikasi antara klien dan server ini akan berfungsi.

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

  1. Klien akan memformat informasi mengenai panggilan prosedur dan argumen apa pun ke dalam pesan SOAP dan mengirimkannya ke server sebagai bagian dari permintaan HTTP. Proses enkapsulasi data menjadi pesan SOAP dikenal sebagai Marshalling.
  2. Server kemudian akan membuka bungkusan pesan yang dikirim oleh klien, melihat apa yang diminta klien dan kemudian mengirim tanggapan yang sesuai kembali ke klien sebagai pesan SOAP. Praktik membuka bungkusan permintaan yang dikirim oleh klien dikenal sebagai Demarshalling.

Contoh SOAP Praktis

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

Mungkin salah satu cara terbaik untuk melihat bagaimana pesan SOAP dibuat adalah dengan benar-benar melihat layanan web beraksi.

Topik ini akan membahas penggunaan kerangka kerja Microsoft.Net untuk membangun layanan web ASMX. Jenis layanan web ini mendukung SOAP versi 1.1 dan versi 1.2.

Layanan web ASMX secara otomatis menghasilkan dokumen Web Service Definition Language (WSDL). Dokumen WSDL ini diperlukan oleh aplikasi klien pemanggil sehingga aplikasi tersebut mengetahui apa yang mampu dilakukan oleh layanan web.

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

Layanan web ini akan dihosting dalam aplikasi web Asp.Net. Kami kemudian akan memanggil layanan web dan melihat hasil yang dikembalikan oleh layanan web.

Visual Studio juga akan menunjukkan kepada kita pesan SOAP apa yang sedang diteruskan antara layanan web dan aplikasi pemanggil.

Prasyarat pertama untuk mengatur aplikasi layanan Web kami yang dapat dilakukan dengan mengikuti langkah-langkah di bawah ini.

Harap pastikan bahwa Anda telah menginstal Visual Studio 2013 di sistem Anda untuk contoh ini.

Langkah 1) Langkah pertama adalah membuat aplikasi ASP.Net Web kosong. Dari Visual Studio 2013, klik opsi menu File-> New project.

Setelah Anda mengklik opsi Proyek Baru, Visual Studio kemudian akan memberi Anda kotak dialog lain untuk memilih jenis proyek dan memberikan rincian proyek yang diperlukan. Ini dijelaskan pada langkah selanjutnya.

Langkah 2) Pada langkah ini,

  1. Pastikan untuk memilih template web C # dari aplikasi Web ASP.NET. Proyek harus jenis ini untuk membuat proyek layanan SOAP. Dengan memilih opsi ini, Visual Studio kemudian akan melakukan langkah-langkah yang diperlukan untuk menambahkan file yang diperlukan yang diperlukan oleh aplikasi berbasis web.
  2. Beri nama untuk proyek Anda yang dalam kasus kami telah diberikan sebagai webservice.asmx. Kemudian pastikan untuk memberikan lokasi di mana file proyek akan disimpan.

Setelah selesai, Anda akan melihat file proyek yang dibuat di penjelajah solusi Anda di Visual Studio 2013.

Langkah 3) Pada langkah ini,

Kami akan menambahkan file layanan Web ke proyek kami

  1. Klik kanan pertama pada file proyek seperti yang ditunjukkan di bawah ini

  1. Setelah Anda mengklik kanan pada file proyek, Anda memiliki kesempatan untuk memilih opsi "Add-> Web Service (ASMX) untuk menambahkan file layanan web. Cukup berikan nama Layanan Tutorial untuk file nama layanan web.

Langkah 4) Tambahkan kode berikut ke file asmx Layanan Tutorial Anda.

Penjelasan Kode:

  1. Baris kode ini memberikan nama untuk file layanan web Anda. Ini merupakan langkah penting karena memberi jalan bagi aplikasi klien untuk memanggil layanan web melalui nama layanan web.
  2. Biasanya file kelas digunakan untuk merangkum fungsionalitas layanan web. Jadi file kelas akan memiliki definisi dari semua metode web yang akan menyediakan beberapa fungsionalitas untuk aplikasi klien.
  3. Di sini [WebMethod] dikenal sebagai atribut yang mendeskripsikan fungsi. Langkah selanjutnya membuat fungsi yang disebut "Guru99WebService", tetapi dengan dimasukkannya langkah menambahkan atribut [WebMethod] ini memastikan bahwa metode ini dapat dipanggil oleh aplikasi klien. Jika atribut ini tidak ada, maka metode tersebut tidak akan pernah bisa dipanggil oleh aplikasi klien.
  4. Di sini kami mendefinisikan fungsi yang disebut 'Guru99WebService' yang akan digunakan untuk mengembalikan string ke aplikasi klien pemanggil. Fungsi ini adalah layanan web yang dapat dipanggil oleh aplikasi klien apa pun.
  5. Kami menggunakan pernyataan return untuk mengembalikan string "Ini adalah layanan Web Guru99" ke aplikasi klien.

Jika kode berhasil dijalankan, Output berikut akan ditampilkan saat Anda menjalankan kode di browser.

Keluaran:

  • Output tersebut jelas menunjukkan bahwa nama web service kita adalah “Guru99 Web Service” yang merupakan hasil pemberian nama untuk web service kita.
  • Kami juga dapat melihat bahwa kami dapat menjalankan layanan web. Jika kita mengklik tombol Panggil, kita akan mendapatkan respons di bawah ini di browser web.

Output di atas,

  • Ini jelas menunjukkan bahwa dengan menjalankan metode web, string "Ini adalah layanan Web Guru99" dikembalikan.
  • Visual Studio juga memungkinkan Anda untuk melihat permintaan dan respons pesan SOAP yang dihasilkan saat layanan web di atas dipanggil.

Permintaan SOAP yang dihasilkan saat layanan web dipanggil ditampilkan di bawah ini.

Penjelasan Kode:

  1. Bagian pertama dari pesan SOAP adalah elemen amplop yang telah dibahas pada bab sebelumnya. Ini adalah elemen enkapsulasi yang ada di setiap pesan SOAP.
  2. Badan SOAP adalah elemen berikutnya dan berisi detail sebenarnya dari pesan SOAP.
  3. Bagian ketiga adalah elemen yang menentukan bahwa kita ingin memanggil layanan yang disebut 'Guru99WebService.'

string

Penjelasan Kode:

  1. Bagian pertama dari pesan SOAP adalah elemen amplop yang telah dibahas pada bab sebelumnya. Ini adalah elemen enkapsulasi yang ada di setiap pesan SOAP.
  2. Badan SOAP adalah elemen berikutnya dan berisi detail sebenarnya dari pesan SOAP.
  3. Bagian menarik yang akan Anda lihat sekarang adalah atribut 'string'. Ini memberi tahu aplikasi klien bahwa layanan web yang dipanggil mengembalikan objek dengan tipe string. Hal ini sangat berguna karena jika aplikasi client yang sebaliknya tidak akan mengetahui apa yang dikembalikan oleh web service tersebut.

Ringkasan

  • SOAP adalah protokol yang digunakan untuk bertukar data antar aplikasi yang dibangun di atas bahasa pemrograman yang berbeda.
  • SOAP dibangun di atas spesifikasi XML dan bekerja dengan protokol HTTP. Ini membuatnya sempurna untuk digunakan dalam aplikasi web.
  • Blok bangunan SOAP terdiri dari Pesan SOAP. Setiap pesan SOAP terdiri dari elemen amplop, header, dan elemen tubuh.
  • Elemen amplop adalah elemen wajib dalam pesan SOAP dan digunakan untuk merangkum semua data dalam pesan SOAP.
  • Elemen header dapat digunakan untuk memuat informasi seperti informasi otentikasi atau definisi tipe data yang kompleks.
  • Elemen body adalah elemen utama yang berisi definisi metode web bersama dengan informasi parameter apa pun jika diperlukan.