Latest web development tutorials

루비 웹 서비스 응용 프로그램 - SOAP4R

SOAP은 무엇입니까?

단순 객체 액세스 프로토콜 (SOAP, 단순 객체 액세스 프로토콜 작성된 모든)는 데이터 교환 프로토콜 사양이다.

SOAP는 응용 프로그램이 HTTP를 통해 정보를 교환 할 수있는 간단한 XML 기반 프로토콜입니다.

단순 객체 접근 프로토콜이며, 데이터를 교환하기위한 프로토콜 사양이다 가볍고 단순 XML 웹상에서 구조화 교환하도록 설계된 프로토콜 (표준 일반화 마크 업 언어 아래의 서브 세트)에 기초 정보 경화.

자세한 SOAP 자습서를 참조하십시오 http://www.w3cschool.cc/soap/soap-tutorial.html을 .


SOAP4R 설치

SOAP4R 히로시 나카무라는 루비 애플리케이션을위한 SOAP의 구현에 의해 개발했다.

SOAP4R 다운로드 : http://raa.ruby-lang.org/project/soap4r/ .

참고 : 루비 환경이 이미 구성 요소를 설치할 수 있습니다.

리눅스에서 당신은 보석, 다음 명령을 사용하여 구성 요소를 설치할 수 있습니다 :

$ gem install soap4r --include-dependencies

당신은 윈도우 개발 환경에서 경우에, 당신은 install.rb을 실행하여 zip 파일을 다운로드하고 설치해야합니다.


SOAP4R 서비스

SOAP4R 서비스의 두 가지 유형을 지원합니다 :

  • CGI 기반으로 / FastCGI를 서비스 (SOAP :: RPC :: CGIStub)
  • 독립 서비스 (SOAP :: RPC : StandaloneServer)

이 튜토리얼에서는 독립적 인 SOAP 서비스를 구축하는 방법을 보여줍니다. 다음과 같이 진행하십시오 :

1 단계 - 상속 SOAP :: RPC :: StandaloneServer

자신의 별도의 서버를 달성하기 위해서는, SOAP RPC가 :: :: StandaloneServer 하위 범주 인 새로운 클래스를 작성해야

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

참고 : 서버 기반 FastCGI를 작성하려는 경우, 당신은 SOAP :: RPC :: CGIStub 클래스를 확장 할 필요가 프로그램의 나머지 부분은 변경되지 않습니다.

단계 두 - 처리 방법을 정의

다음으로는 웹 서비스 접근을 정의하고, 우리는 다음과 같은 두 가지 방법을 정의 하나, 두 수의 합은 하나의 숫자 2로 분할된다 :

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

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

세 번째 단계 - 발행 처리 방법

다음으로, 우리는 서버에 정의 된 메소드를 추가하는 방법이 외부 연결에 개시되어 초기화 :

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

다음은 각 매개 변수에 대한 설명은 다음과 같습니다

매개 변수 기술
리시버 메소드의 메소드 이름이 포함 된 개체입니다. 같은 클래스에서 서비스 메소드를 정의하는 경우, 매개 변수는자체이다.
methodName로 RPC 메소드 호출 요청 이름입니다.
paramArg 매개 변수 이름과 매개 변수 모드

두 개의 매개 변수를 입력해야 다음 서비스 방법을 고려inout를및 매개변수에서이해하기 : RETVAL, inoutParam, outParam : inParam 및 inoutParam을, 함수는 구현의 완료 후 3 값을 반환합니다 :

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

통화의 발행은 다음과 같습니다 :

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

네 번째 단계 - 오픈 서비스

마지막으로, 우리는 서비스를 시작 파생 클래스를 인스턴스화하고 start 메소드를 호출

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

myServer.start

다음은 요청 매개 변수에 대한 설명입니다 :

매개 변수 기술
서버 이름 서비스 이름, 당신은 당신의 마음에 드는 걸릴 수 있습니다
항아리 : 루비 : 여기서 ServiceName여기에항아리 : 루비는 고정되어 있지만, 당신은 당신의 서비스에 대한 고유여기서 ServiceName 걸릴수 있습니다
호스트 이름 호스트 이름을 지정합니다
포트 웹 서비스 포트

다음 위의 단계를 통해 우리는 독립 실행 형 서비스를 만들 수 있습니다 :

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

위의 프로그램을 실행 한 후, 로컬 서비스의 포트 8080에 리스너를 시작하고, 두 가지 방법 노출 : 추가 사업부를.

그런 다음이 서비스의 배경을 수행 할 수 있습니다 :

$ ruby MyServer.rb&

SOAP4R 클라이언트

루비는 SOAP :: RPC : 드라이버 클래스 개발 SOAP 클라이언트를 사용합니다. 다음에 우리는 SOAP :: RPC : 드라이버 클래스를 사용하여 자세히 봐.

SOAP 호출 서비스는 다음과 같은 정보를 필요

  • SOAP 서비스 URL 주소 (SOAP 끝점 URL)
  • 네임 스페이스 (방법 네임 스페이스 URI) 서비스 방법
  • 서비스 메소드 이름과 매개 변수에 대한 자세한 내용은

다음에, 우리는 상기 SOAP 메소드를 호출하는 SOAP 클라이언트를 생성하는 공정을 가지고 : DIV 추가 :

한 단계 - 인스턴스 SOAP 드라이버 만들기

다음과 같이 우리는 그것을 SOAP :: RPC : 드라이버 클래스를 인스턴스화 할 수있는 새로운 방법을 호출 할 수 있습니다 :

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

다음은 매개 변수에 대한 설명입니다 :

매개 변수 기술
엔드 포인트 SOAP 서비스 연결 URL 주소
네임 스페이스 SOAP :: RPC :: 드라이버 개체의 모든 RPC에 대한 네임 스페이스.
의 soapAction 이 SOAPAction HTTP 헤더 필드 값. 문자열이 "이"기본값은전무하다

두 번째 단계 - 서비스 방법을 추가

SOAP :: RPC : 드라이버 SOAP 서비스 메소드를 추가, 우리는 예를 들어, SOAP :: RPC : 드라이버의 방법으로 다음과 같은 방법으로 호출 할 수 있습니다 :

driver.add_method(name, *paramArg)

다음은 매개 변수에 대한 설명입니다 :

매개 변수 기술
이름 원격 웹 서비스의 메소드 명
paramArg 매개 변수는 원격 프로그램을 지정합니다

세 번째 단계 - SOAP 서비스를 호출

마지막으로, 우리는 SOAP 서비스를 호출하기 위해 SOAP RPC :: :: 드라이버 인스턴스를 사용할 수있다 :

result = driver.serviceMethod(paramArg...)

실제 메소드 이름 serviceMethod의 SOAP 서비스 메소드의 매개 변수 목록에 대한 paramArg.

위 단계에 기초하여, 우리는 다음과 같은 SOAP 클라이언트를 쓸 수있다 :

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

우리는 단순히 루비의 웹 서비스를 소개 위. : 더 알고 싶은 경우에 당신은 공식 문서를 볼 수있는 웹 서비스의 루비