최고의 루비 웹 서비스 응용 프로그램 - SOAP4R 튜토리얼 2024년, 이 튜토리얼에서는 SOAP은 무엇입니까?,SOAP4R 설치,SOAP4R 서비스,SOAP4R 클라이언트,를 배울 수 있습니다.
단순 객체 액세스 프로토콜 (SOAP, 단순 객체 액세스 프로토콜 작성된 모든)는 데이터 교환 프로토콜 사양이다.
SOAP는 응용 프로그램이 HTTP를 통해 정보를 교환 할 수있는 간단한 XML 기반 프로토콜입니다.
단순 객체 접근 프로토콜이며, 데이터를 교환하기위한 프로토콜 사양이다 가볍고 단순 XML 웹상에서 구조화 교환하도록 설계된 프로토콜 (표준 일반화 마크 업 언어 아래의 서브 세트)에 기초 정보 경화.
자세한 SOAP 자습서를 참조하십시오 /soap/soap-tutorial을 .
SOAP4R 히로시 나카무라는 루비 애플리케이션을위한 SOAP의 구현에 의해 개발했다.
SOAP4R 다운로드 : http://raa.ruby-lang.org/project/soap4r/ .
참고 : 루비 환경이 이미 구성 요소를 설치할 수 있습니다.
리눅스에서 당신은 보석, 다음 명령을 사용하여 구성 요소를 설치할 수 있습니다 :
$ gem install soap4r --include-dependencies
당신은 윈도우 개발 환경에서 경우에, 당신은 install.rb을 실행하여 zip 파일을 다운로드하고 설치해야합니다.
SOAP4R 서비스의 두 가지 유형을 지원합니다 :
이 튜토리얼에서는 독립적 인 SOAP 서비스를 구축하는 방법을 보여줍니다. 다음과 같이 진행하십시오 :
자신의 별도의 서버를 달성하기 위해서는, SOAP RPC가 :: :: StandaloneServer 하위 범주 인 새로운 클래스를 작성해야
class MyServer < SOAP::RPC::StandaloneServer kokokokokokoko. end
참고 : 서버 기반 FastCGI를 작성하려는 경우, 당신은 SOAP :: RPC :: CGIStub 클래스를 확장 할 필요가 프로그램의 나머지 부분은 변경되지 않습니다.
다음으로는 웹 서비스 접근을 정의하고, 우리는 다음과 같은 두 가지 방법을 정의 하나, 두 수의 합은 하나의 숫자 2로 분할된다 :
class MyServer < SOAP::RPC::StandaloneServer kokokokokokoko. # 处理方法 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&
루비는 SOAP :: RPC : 드라이버 클래스 개발 SOAP 클라이언트를 사용합니다. 다음에 우리는 SOAP :: RPC : 드라이버 클래스를 사용하여 자세히 봐.
SOAP 호출 서비스는 다음과 같은 정보를 필요
다음에, 우리는 상기 SOAP 메소드를 호출하는 SOAP 클라이언트를 생성하는 공정을 가지고 : DIV 추가 :
다음과 같이 우리는 그것을 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 RPC :: :: 드라이버 인스턴스를 사용할 수있다 :
result = driver.serviceMethod(paramArgko.)
실제 메소드 이름 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
우리는 단순히 루비의 웹 서비스를 소개 위. : 더 알고 싶은 경우에 당신은 공식 문서를 볼 수있는 웹 서비스의 루비