Flex 와.NET 의 상호작용(11):FluorineFX.Net 의 신속 한 통신 응용(Remote Procedure Call)(2)

NET 의 서버 측 역시 클 라 이언 트 를 편리 하 게 호출 하고 클 라 이언 트 를 호출 하 는 방법(예 를 들 어 시스템 방송 실현)을 사용 할 수 있다.
1.클 라 이언 트 의 RPC(클 라 이언 트 호출 서버 쪽)
       클 라 이언 트 가 서버 에 접근 하 는 방법 을 실현 하려 면 먼저 ActionScript 의 NetConnection 에 대해 잘 알 아야 합 니 다.이 클래스 는 예시 적 인 방법 인 call()전문가 들 이 RPC 에 접근 하 는 데 사 용 됩 니 다.이 방법의 정 의 는 다음 과 같 습 니 다.
public function call(command:String, responder:Responder,   arguments):void 
      예 를 들 어 우리 가 신속 한 응용 을 개발 할 때 모든 클 라 이언 트 는 서버 를 동기 화 하 는 시스템 시간 이 필요 하 다.이때 우 리 는 서버 에서 현재 시스템 시간 으로 돌아 가 는 방법 을 클 라 이언 트 에 게 호출 할 수 있다.다음 과 같다.
//현재 시스템 시간 으로 돌아 가기 public string GetServerTime(){     return DateTime.Now.ToString();}
      
      이 방법 이 있 으 면 클 라 이언 트 는 NetConnection 의 call()방법 을 통 해 원 격 호출 을 실행 하고 Responsder 를 통 해 호출 결 과 를 처리 할 수 있 습 니 다.호출 된 서버 엔 드 방법 이 반환 값 이 없 으 면 호출 할 때 Responsder 를 사용 하지 않 아 도 됩 니 다.다음 과 같은 완전한 Flex 인 스 턴 스 코드:
                                
       FluorineFX.Net 의 RPC 는 이렇게 간단 합 니 다.클 라 이언 트 가 서버 쪽 을 호출 하 는 방법 은 현재 연 결 된 call()방법 으로 호출 되 고 Responsder 를 사용 하여 호출 결 과 를 처리 합 니 다.
2.서버 쪽 RPC(서버 쪽 호출 클 라 이언 트)
      클 라 이언 트 와 서버 측의 호출 은 양 방향 이 될 수 있 고 서버 측 도 클 라 이언 트 를 호출 할 수 있 는 방법 이다.클 라 이언 트 든 서버 든 서로 호출 하 는 것 은 현재 연결 대상 과 떨 어 질 수 없습니다.위의 클 라 이언 트 가 현재 연 결 된 call()방법 을 통 해 이 루어 진 서버 엔 드 호출 방법 이 라면 서버 엔 드 에서 클 라 이언 트 를 호출 하 는 방법 도 마찬가지 이 고 현재 연결 대상 을 통 해 처리 합 니 다.
      FluorineFx 에서 연결 에 사용 되 는 인 터 페 이 스 는 IConnection 으로 클 라 이언 트 가 서버 엔 드 에 성공 적 으로 연결 되면 서버 엔 드 에 연 결 된 모든 연결 대상 의 다양한 속성 을 저장 합 니 다.클 라 이언 트 호출 방법 을 실현 하 는 것 은 IServiceCapableConnection 인터페이스 이 고 IServiceCapableConnection 인터페이스의 정 의 는 다음 과 같다
      서버 에서 클 라 이언 트 를 호출 하 는 방법 을 실현 하려 면 이 인 터 페 이 스 를 사용 해 야 합 니 다.현재 연 결 된 인터페이스 IConnection 을 강제로
IServiceCapableConnection 인 터 페 이 스 를 사용 한 다음 invoke()방법 으로 서버 에서 클 라 이언 트 방법 을 호출 합 니 다.
/// /// 클 라 이언 트 호출 방법// /// public void InvokeClient(){    IServiceCapableConnection conn = FluorineContext.Current.Connection as IServiceCapableConnection;    if (connection != null)    {        object[] args = new object[] { GetServerTime() };        conn.Invoke("RecServerMessage", args);    }}
      서버 에서 Fluorine Context.current.connection 을 통 해 현재 클 라 이언 트 의 연결 대상 을 얻 은 다음 에 이 를 IServiceCapableConnection 인터페이스 대상 으로 전환 시 켜 invoke()방법 을 호출 하면 클 라 이언 트 를 호출 하 는 방법 을 실현 할 수 있 습 니 다.
      여기 서 주의해 야 할 것 은 서버 측 에 호출 하 는 클 라 이언 트 방법 은 반드시 공공 방법(Public 수식 방법)이 어야 한 다 는 것 이다.그렇지 않 으 면 서버 측 에서'Not found method:방법 명'의 이상 을 보고 할 것 이다.다음 코드 블록:
/** * 서버 측의 호출 방법 을 수신 하 다 * */public function RecServerMessage(message:Object):void{    Alert.show(message.toString());}
      FluorineFX.Net 이 제공 하 는 상기 두 가지 기능 은 매우 실 용적 입 니 다.특히 신속 한 응용 을 개발 할 때 클 라 이언 트 RPC 는 클 라 이언 트 를 서버 에 요청 하여 처리 하 는 것 을 편리 하 게 실현 할 수 있 습 니 다.예 를 들 어 인터넷 게임 을 개발 할 때 게임 클 라 이언 트 의 서로 다른 데이터 가 수시로 바 뀌 면 우 리 는 클 라 이언 트 RPC 를 사용 하여 이 수 요 를 실현 할 수 있 습 니 다.서버 쪽 RPC 역시 여기에 적용 할 수 있 습 니 다.게임 의 데 이 터 는 클 라 이언 트 RPC 를 통 해 서버 쪽 에 요청 하고 서버 쪽 에서 해당 하 는 업무 계산 과 처 리 를 한 후에 클 라 이언 트 가 필요 로 하 는 데 이 터 를 서버 쪽 RPC 를 통 해 현재 요청 한 클 라 이언 트 로 되 돌려 줍 니 다.
      아마도 어떤 친구 들 은 내 가 채 팅 방 을 개발 하려 면 시스템 방송 정 보 를 실현 하려 면 이런 방식 으로 실현 할 수 있 느 냐 고 생각 하거나 물 을 것 이다.정 답 은 긍정 적 입 니 다.시스템 이 정 보 를 방송 하려 면 서버 에서 서버 에 연 결 된 모든 클 라 이언 트 를 얻 은 다음 에 클 라 이언 트 를 순환 적 으로 호출 하 는 방법 으로 시스템 방송 정 보 를 실현 할 수 있 습 니 다.시스템 방송 을 어떻게 실현 하 는 지 에 대해 서 는 소개 하지 않 겠 습 니 다.왜냐하면 FluorineFX.Net 은 우리 에 게 시스템 방송 을 실현 하 는 더 좋 은 방식 을 제공 해 주 었 기 때 문 입 니 다.관심 있 는 분 들 은 제 후속 글 을 주목 해 주세요.다음 글 에서 저 는 이 분야 의 지식 을 상세 하 게 소개 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기