Latest web development tutorials

Web Services Ruby Applications - soap4r

Qu'est-ce que SOAP?

Simple Protocol Object Access (SOAP, toutes écrites pour le protocole Simple Object Access) est une spécification de protocole d'échange de données.

SOAP est un protocole basé sur XML simple qui permet aux applications d'échanger des informations sur HTTP.

Simple Protocol Object Access, est une spécification de protocole pour l'échange de données, est un poids léger, simple, basé sur XML (un sous-ensemble de la sous Standard Generalized Markup Language) protocole, qui est conçu pour échange structuré sur le WEB et le durcissement de l'information.

S'il vous plaît voir plus SOAP Tutoriel: http://www.w3cschool.cc/soap/soap-tutorial.html .


Installation soap4r

Soap4r Hiroshi Nakamura développé par la mise en œuvre de SOAP pour les applications Ruby.

Soap4r Télécharger: http://raa.ruby-lang.org/project/soap4r/ .

Note: Votre environnement de rubis peut - être déjà installé le composant.

Sous Linux, vous pouvez installer le composant en utilisant la gemme, la commande suivante:

$ gem install soap4r --include-dependencies

Si vous êtes sous l'environnement de développement de la fenêtre, vous devez télécharger le fichier zip, et installer en exécutant install.rb.


service de soap4r

Soap4r prend en charge deux types de services différents:

  • services basés sur CGI / FastCGI (SOAP :: RPC :: CGIStub)
  • Service indépendant (SOAP :: RPC: StandaloneServer)

Ce tutoriel va vous montrer comment construire un service SOAP indépendants. Procédez comme suit:

Étape 1 - Héritage SOAP :: RPC :: StandaloneServer

Afin de réaliser leur propre serveur distinct, vous devez écrire une nouvelle classe qui est SOAP :: RPC :: sous-catégories de StandaloneServer:

class MyServer < SOAP::RPC::StandaloneServer
  ...............
end

Remarque: Si vous voulez écrire un FastCGI basé sur le serveur, alors vous avez besoin d'étendre SOAP RPC :: :: classe CGIStub, le reste du programme reste inchangé.

Deuxième étape - Définir les méthodes de traitement

Ensuite, nous définissons l'approche des services Web, nous définissons les deux méthodes suivantes, on est la somme de deux nombres, l'un est divisé par le nombre de deux:

class MyServer < SOAP::RPC::StandaloneServer
   ...............

   # 处理方法
   def add(a, b)
      return a + b
   end
   def div(a, b) 
      return a / b 
   end
end

La troisième étape - la méthode de traitement de la publication

Ensuite, nous ajoutons des méthodes définies sur le serveur, initialise procédé est décrit pour les connexions externes:

class MyServer < SOAP::RPC::StandaloneServer
   def initialize(*args)
      add_method(receiver, methodName, *paramArg)
   end
end

Voici une description de chaque paramètre:

Paramètres description
récepteur Objet qui contient le nom de méthode de la méthode. Si vous définissez la méthode de service dans la même classe, le paramètre estauto.
methodName méthode RPC nom de requête d'appel.
paramArg Nom du paramètre et le mode de paramètre

Pour comprendreinoutetdesparamètres, examiner les méthodes de service suivantes, vous devez entrer deux paramètres: inParam et inoutParam, la fonction renvoie trois valeurs après l'achèvement de la mise en œuvre: retVal, inoutParam, outParam:

def aMeth(inParam, inoutParam)
   retVal = inParam + inoutParam
   outParam = inParam . inoutParam
   inoutParam = inParam * inoutParam
   return retVal, inoutParam, outParam
end

Publication de l'appel comme suit:

add_method(self, 'aMeth', [
    %w(in inParam),
    %w(inout inoutParam),
    %w(out outParam),
    %w(retval return)
])

La quatrième étape - service ouvert

Enfin, on instancie la classe dérivée, et appelons la méthode de démarrage pour démarrer le service:

myServer = MyServer.new('ServerName',
                        'urn:ruby:ServiceName', hostname, port)

myServer.start

Ce qui suit est une description du paramètre de la requête:

Paramètres description
ServerName Nom du service, vous pouvez prendre votre favori
urn: ruby: ServiceNameIciurn: ruby est fixe, mais vous pouvez prendre unServiceNameunique pour votre service
hostname Indiquez le nom d'hôte
port port du service Web

Exemples

Ensuite, nous à travers les étapes ci-dessus pour créer un service autonome:

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

Après l'exécution du programme ci-dessus, commencer un auditeur sur le port 8080 des services locaux, et expose deux méthodes: ajouter et div.

Vous pouvez ensuite effectuer l'arrière-plan de ces services:

$ ruby MyServer.rb&

client soap4r

ruby utiliser SOAP :: RPC :: client SOAP de développement de classe Driver. Ensuite, nous regardons en détail en utilisant SOAP :: RPC :: classe du pilote.

service SOAP Appel requiert les informations suivantes:

  • Service SOAP adresse URL (SOAP Endpoint URL)
  • Namespace (méthode Namespace URI) méthode de service
  • nom de la méthode de service et informations sur les paramètres

Ensuite, nous faisons un pas de créer un client SOAP pour appeler la méthode SOAP ci-dessus: ajouter, div:

Première étape - Créer une instance SOAP Pilote

Nous pouvons l'appeler une nouvelle méthode pour instancier SOAP :: RPC :: classe du pilote, comme suit:

SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)

Ce qui suit est une description des paramètres:

Paramètres description
endPoint service SOAP adresse URL de connexion
nameSpace Namespace pour SOAP :: RPC :: objet Driver tous RPC.
soapAction Pour les valeurs de champ d'en-tête HTTP SOAPAction. Si la chaîne est "" la valeur par défaut estnul

Deuxième étape - ajouter méthode de service

SOAP :: RPC :: Pilote pour ajouter méthode de service SOAP, nous pouvons appeler la méthode suivante à titre d'exemple SOAP :: RPC :: Driver:

driver.add_method(name, *paramArg)

Ce qui suit est une description des paramètres:

Paramètres description
nom Le nom de la méthode des services Web à distance
paramArg Paramètre pour spécifier le programme à distance

La troisième étape - appelant les services SOAP

Enfin, nous pouvons utiliser SOAP :: RPC :: instance de pilote pour appeler des services SOAP:

result = driver.serviceMethod(paramArg...)

Les services SOAP nom de la méthode de ServiceMethod réels, paramArg pour la liste des paramètres de la méthode.

Exemples

Sur la base des étapes ci-dessus, nous pouvons écrire le client SOAP suivante:

#!/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

Au-dessus de nous introduisons simplement les services Web de Ruby. Si vous voulez en savoir plus vous pouvez consulter le document officiel: le Ruby de Web Services