Ruby Layanan Aplikasi Web - soap4r
Apa SOAP?
Simple Object Access Protocol (SOAP, semua ditulis untuk Simple Object Access Protocol) adalah spesifikasi protokol untuk bertukar data.
SOAP adalah protokol berbasis XML sederhana yang memungkinkan aplikasi untuk bertukar informasi melalui HTTP.
Simple Object Access Protocol, adalah spesifikasi protokol untuk data bertukar, adalah ringan, sederhana, berdasarkan XML (subset dari Standard Generalized Markup Language bawah) protocol, yang dirancang untuk bertukar terstruktur di WEB dan menyembuhkan informasi.
Silakan lihat lebih SOAP Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .
instalasi soap4r
Soap4r Hiroshi Nakamura dikembangkan oleh pelaksanaan SOAP untuk aplikasi Ruby.
Soap4r Download: http://raa.ruby-lang.org/project/soap4r/ .
Catatan: lingkungan ruby Anda mungkin sudah terpasang komponen.
Di Linux Anda dapat menginstal komponen menggunakan permata, perintah berikut:
$ gem install soap4r --include-dependencies
Jika Anda berada di bawah lingkungan pengembangan jendela, Anda perlu men-download file zip, dan menginstal dengan menjalankan install.rb.
soap4r Layanan
Soap4r mendukung dua jenis layanan:
- Berdasarkan CGI jasa / FastCGI (SOAP :: RPC :: CGIStub)
- Independent Service (SOAP :: RPC: StandaloneServer)
Tutorial ini akan menunjukkan cara untuk membangun sebuah layanan SOAP independen. Lanjutkan sebagai berikut:
Langkah 1 - Warisan SOAP :: RPC :: StandaloneServer
Dalam rangka mencapai server terpisah mereka sendiri, Anda perlu menulis kelas baru yang SOAP :: RPC :: StandaloneServer sub-kategori:
class MyServer < SOAP::RPC::StandaloneServer ............... end
Catatan: Jika Anda ingin menulis FastCGI berbasis server, maka Anda perlu untuk memperpanjang SOAP :: RPC :: kelas CGIStub, sisa program akan tetap tidak berubah.
Langkah Dua - Menentukan Metode Pengolahan
Berikutnya kita mendefinisikan pendekatan Web Services, kita mendefinisikan dua metode berikut, satu adalah jumlah dari dua angka, satu dibagi dengan jumlah dua:
class MyServer < SOAP::RPC::StandaloneServer ............... # 处理方法 def add(a, b) return a + b end def div(a, b) return a / b end end
Langkah ketiga - pengolahan publikasi metode
Selanjutnya, kita menambahkan metode didefinisikan pada server, inisialisasi metode diungkapkan untuk koneksi eksternal:
class MyServer < SOAP::RPC::StandaloneServer def initialize(*args) add_method(receiver, methodName, *paramArg) end end
Berikut ini adalah deskripsi dari masing-masing parameter:
parameter | deskripsi |
---|---|
penerima | Objek yang berisi nama metode metode. Jika anda menentukan metode layanan di kelas yang sama, parameter adalahdiri. |
methodName | Metode RPC nama permintaan doa. |
paramArg | Nama parameter dan modus parameter |
Untuk memahamiinoutdankeluarparameter, pertimbangkan metode layanan berikut, Anda harus memasukkan dua parameter: inParam dan inoutParam, fungsi mengembalikan tiga nilai setelah selesainya pelaksanaan: retVal, inoutParam, outParam:
def aMeth(inParam, inoutParam) retVal = inParam + inoutParam outParam = inParam . inoutParam inoutParam = inParam * inoutParam return retVal, inoutParam, outParam end
Publikasi panggilan sebagai berikut:
add_method(self, 'aMeth', [ %w(in inParam), %w(inout inoutParam), %w(out outParam), %w(retval return) ])
Langkah keempat - layanan terbuka
Akhirnya, kita instantiate kelas turunan, dan memanggil metode start untuk memulai layanan:
myServer = MyServer.new('ServerName', 'urn:ruby:ServiceName', hostname, port) myServer.start
Berikut ini adalah deskripsi dari parameter permintaan:
parameter | deskripsi |
---|---|
ServerName | nama layanan, Anda dapat mengambil favorit Anda |
urn: ruby: ServiceName | Berikuturn: ruby adalah tetap, tetapi Anda dapat mengambilServiceNameunik untuk layanan Anda |
hostname | Tentukan nama host |
pelabuhan | port layanan web |
contoh
Selanjutnya kita Melalui langkah-langkah di atas untuk membuat layanan yang berdiri sendiri:
require "soap/rpc/standaloneserver" begin class MyServer < SOAP::RPC::StandaloneServer # Expose our services def initialize(*args) add_method(self, 'add', 'a', 'b') add_method(self, 'div', 'a', 'b') end # Handler methods def add(a, b) return a + b end def div(a, b) return a / b end end server = MyServer.new("MyServer", 'urn:ruby:calculation', 'localhost', 8080) trap('INT){ server.shutdown } server.start rescue => err puts err.message end
Setelah menjalankan program di atas, mulai pendengar pada port 8080 dari layanan lokal, dan menghadapkan dua metode: menambah dan div.
Anda kemudian dapat melakukan latar belakang layanan ini:
$ ruby MyServer.rb&
soap4r klien
ruby menggunakan SOAP :: RPC :: kelas driver pengembangan SOAP client. Selanjutnya kita melihat secara rinci menggunakan SOAP :: RPC :: kelas driver.
layanan SOAP panggilan memerlukan informasi berikut:
- SOAP Layanan alamat URL (SOAP Endpoint URL)
- Namespace metode layanan (Metode namespace URI)
- nama metode layanan dan informasi parameter
Selanjutnya, kita mengambil langkah untuk membuat klien SOAP untuk memanggil metode SOAP atas: menambahkan, div:
Langkah Satu - Buat contoh SOAP driver
Kita bisa menyebutnya metode baru untuk instantiate SOAP :: RPC :: driver kelas, sebagai berikut:
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
Berikut ini adalah deskripsi dari parameter:
parameter | deskripsi |
---|---|
endpoint | layanan SOAP alamat URL koneksi |
namespace | Namespace untuk SOAP :: RPC :: driver objek semua RPC. |
SOAPAction | Untuk SOAPAction HTTP nilai kolom header. Jika string adalah "" default adalahnihil |
Langkah kedua - menambahkan metode layanan
SOAP :: RPC :: Driver ke menambahkan metode layanan SOAP, kita bisa memanggil metode berikut melalui contoh SOAP :: RPC :: driver:
driver.add_method(name, *paramArg)
Berikut ini adalah deskripsi dari parameter:
parameter | deskripsi |
---|---|
nama | Nama metode dari layanan web jarak jauh |
paramArg | Parameter untuk menentukan program remote |
Langkah ketiga - layanan panggilan SOAP
Akhirnya, kita dapat menggunakan SOAP :: RPC :: driver misalnya untuk memanggil layanan SOAP:
result = driver.serviceMethod(paramArg...)
Layanan SOAP nama metode serviceMethod sebenarnya, paramArg untuk daftar parameter metode ini.
contoh
Berdasarkan langkah-langkah di atas, kita dapat menulis klien SOAP berikut:
#!/usr/bin/ruby -w require 'soap/rpc/driver' NAMESPACE = 'urn:ruby:calculation' URL = 'http://localhost:8080/' begin driver = SOAP::RPC::Driver.new(URL, NAMESPACE) # Add remote sevice methods driver.add_method('add', 'a', 'b') # Call remote service methods puts driver.add(20, 30) rescue => err puts err.message end
Di atas kita hanya memperkenalkan Ruby Web Services. Jika Anda ingin tahu lebih banyak Anda dapat melihat dokumen resmi: Ruby Layanan Web