문제

저는 Rails 개발을 Flex 애플리케이션의 백엔드로 보고 있으며 Rails 앱과 Flash Player 간의 통신 계층을 파악하려고 합니다.내가 찾은 모든 것들은 SOAP 웹 서비스를 사용하여 통신하는 것을 제안합니다.

그러나 Flash는 훌륭하고 빠른(및 기본) AMF를 지원합니다.AMF에 대한 모든 "좋은" 기능(자동 유형 변환, 데이터 푸시 등)을 지원하면서 Rails 앱에서 AMF를 통해 통신할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

있다 웹ORB 또는 루비AMF Rails의 AMF에서 응답하는 데 사용할 수 있는 접근 방식은 각각 조금씩 다르므로 필요에 따라 다릅니다.RubyAMF는 마지막 장에서 논의됩니다. 유연한 레일 Flex와 함께 Rails를 사용하는 방법에 대한 유용한 리소스인 eBook입니다.

다른 팁

저는 Rails/Flex 애플리케이션을 작성하는 중이며 REST 프레임워크 내에서 JSON 통신을 사용하는 방향으로 전환하고 있습니다.JSON 응답을 처리하는 Flex 측의 간단한 HTTP 요청이 클라이언트와 서버를 분리하는 가장 좋은 방법처럼 보였습니다.XML도 마찬가지로 쉽습니다.

그만한 가치가 있기 때문에 우리는 Flex 측에서도 PureMVC 프레임워크를 사용하여 클라이언트 측 모델에 응답을 유지하고 있습니다.

SOAP 웹 서비스를 사용하는 것이 아니라 Rails에 기본으로 제공되는 '네이티브' REST 웹 서비스를 사용하게 됩니다.위의 DEFusion에서 인용한 책은 실제로 다음과 같습니다.REST(XML을 의미)를 사용하여 FLEX 클라이언트를 Rails 애플리케이션의 프런트 엔드로 사용하는 방법.

AMF 프로토콜은 주로 Adobe에서 FLEX 프런트 엔드가 CodeFusion 및 물론 Java 서버 애플리케이션과 통신할 수 있도록 하는 바이너리 프로토콜로 구축되었습니다.실제로 많은 지원을 받지 못하는 Adobe의 BlazeDS를 사용하는 것 외에는 무료가 아닙니다.그리고 물론 AMF 프로토콜(다시 DEfusion의 게시물 참조)을 사용하여 BlazeDS와 통신할 수 있는 플러그인을 선택하고 이에 의존해야 합니다.

REST를 통해 Flex-to Rails가 얼마나 잘 작동하는지 놀라실 것입니다. 게다가 제3자에 의존할 필요도 없습니다.나는 당신이 그것을 시도하는 것이 좋습니다.

도움이 되었기를 바랍니다

AMF에 응답/생성할 수 있는 컨트롤러와의 MVC 스타일 상호 작용을 원한다면 RubyAMF를 사용하세요.

모델 객체에 대한 직접 액세스를 포함하여 다른 스타일에는 WebOrb를 사용하세요.

저는 세 가지 방법(WebOrb, RubyAMF, REST)을 모두 사용하여 앱을 구축했습니다...

Rails용 WebOrb는 거의 죽었고 꽤 오랫동안 업데이트되지 않았습니다.즉, Rails의 모델 객체에 대한 Flex 액세스를 투명하게 만드는 약간의 Flex/Ruby 마법을 만들 수 있었다는 것입니다...관심이 있으시면 제가 파헤쳐서 보내드리겠습니다.

RubyAMF는 훌륭하지만 WebOrb만큼 유연하지는 않습니다(하!).

JSON을 반환하는 REST는 매우 간단하며, 이 중 하나를 더 구축해야 하는 경우(그렇지 않길 바랍니다) 이를 계속 사용할 것입니다.

YMMV.

Rails 플러그인이라는 것이 있습니다. Ruby on Rails용 WebORB AMF와 함께 원격을 사용합니다.

WebORB나 RubyAMF를 사용하거나 일반 XML을 사용할 수 있습니다. Rails는 XML에 관해서는 꽤 똑똑하지만 여기저기서 몇 가지 문제가 있습니다.

우리는 거의 독점적으로 Rails 앱과 Flex 웹 애플리케이션 간에 통신하기 위해 XML을 사용합니다.꽤 간단합니다.

Rails 앱에서 데이터를 검색하려면 result_type이 e4x인 HTTPService를 생성하고 URL을 호출하세요.레일 컨트롤러에서 다음과 같이 수행하십시오.

def people
  render :xml => Person.all.to_xml
end

때때로 Rails는 태그를 끝에 추가합니다.이런 일이 발생하면 컨트롤러를 다음으로 변경하세요.

def people
  render :xml => Person.all.to_xml.target!
end

Rails 앱으로 데이터를 전송하려는 경우에도 마찬가지로 쉽습니다.

<mx:HTTPService id="theservice" url="http://localhost:3000/svc/add_person" method="POST">
 <mx:request>
  <person>
   <first>Firstname</first>
   <last>Lastname</last>
  </person>
 </request>
</HTTPService>

그리고 컨트롤러에서:

def add_person
  p=Person.create(params[:person])
  render :xml => {:result => "Success"}.to_xml.target!
end
  • 케빈
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top