Latest web development tutorials

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: ServiceNameBerikuturn: 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