다음을 통해 공유


Oracle 데이터베이스 어댑터를 사용하여 WCF 채널 모델 개요

Microsoft BizTalk Adapter for Oracle Database에서 작업을 호출하기 위해 코드는 WCF 클라이언트 역할을 하며 어댑터에 아웃바운드 작업을 보냅니다. WCF 채널 모델에서 코드는 채널을 통해 요청 메시지를 전송하여 어댑터에서 작업을 호출합니다.

어댑터에서 제공하는 POLLINGSTMT 작업을 사용하여 폴링 기반 데이터 변경 메시지를 수신하는 것과 같은 인바운드 작업을 호출하려면 코드가 WCF 서비스 역할을 하고 어댑터에서 인바운드 작업을 받습니다. 즉, 코드는 채널을 통해 어댑터에서 요청 메시지를 받습니다.

이 섹션의 topics Oracle Database 어댑터를 WCF 채널 모델과 함께 사용하는 방법에 대한 개요를 제공합니다.

WCF 채널 모델 개요

클라이언트와 서비스는 SOAP 메시지를 교환하여 통신합니다. WCF 채널 모델은 이 메시지 교환의 하위 수준 추상화입니다. 채널 스택이라는 계층화된 프로토콜 스택을 사용하여 메시지를 보내고 받을 수 있는 인터페이스 및 형식을 제공합니다. 스택의 각 계층은 채널로 구성되며 각 채널은 WCF 바인딩에서 만들어집니다. 가장 낮은 계층에는 전송 채널이 있습니다. 전송 채널은 서비스와 클라이언트 간의 기본 전송 메커니즘을 구현하고 각 메시지를 더 높은 계층(그리고 궁극적으로 소비하는 애플리케이션)에 System.ServiceModel.Message로 제공합니다. WCF 메시지 클래스는 SOAP 메시지의 추상화입니다. WCF는 요청-회신 또는 단방향과 같은 기본 SOAP 메시지 교환 패턴을 모델링하는 채널 셰이프라고 하는 여러 채널 인터페이스를 제공합니다. WCF 전송 바인딩은 더 높은 계층이 메시지를 보내고 받는 데 사용할 수 있는 하나 이상의 채널 셰이프 구현을 제공합니다. WCF 채널 모델에 대한 자세한 내용은 채널 모델 개요를 참조하세요.

Oracle 데이터베이스 어댑터는 Oracle 데이터베이스를 WCF 서비스로 노출하는 WCF 사용자 지정 전송 바인딩입니다.

Oracle 데이터베이스 어댑터에 대해 지원되는 채널 셰이프

어댑터는 다음 WCF 채널 셰이프를 구현합니다.

  • IRequestChannel (System.ServiceModel.Channels.IRequestChannel). IRequestChannel 인터페이스는 요청-회신 메시지 교환의 클라이언트 쪽을 구현합니다. IRequestChannel을 사용하여 응답을 사용할 작업을 수행할 수 있습니다(예: Oracle 테이블에서 SELECT 쿼리 수행).

  • IOutputChannel (System.ServiceModel.Channels.IOutputChannel). 이 셰이프는 단방향 메시지 교환의 클라이언트 쪽을 구현합니다. IOutputChannel을 사용하여 응답을 사용할 필요가 없는 작업을 호출할 수 있습니다(예: OUT 매개 변수가 없는 Oracle 프로시저 호출).

    중요

    Oracle 클라이언트에 대한 어댑터의 모든 기본 호출은 동기적입니다. 여기에는 IOutputChannel을 통해 호출된 작업의 결과인 Oracle 클라이언트에 대한 호출이 포함됩니다. IOutputChannel을 사용하는 경우 어댑터는 Oracle 클라이언트에서 받은 응답을 삭제합니다.

  • IInputChannel (System.ServiceModel.Channels.IInputChannel). 이 셰이프는 단방향 메시지 교환의 서비스 쪽을 구현합니다. IInputChannel을 사용하여 어댑터에서 인바운드 작업에 대한 메시지를 받습니다.

    WCF 바인딩과 마찬가지로 Oracle 데이터베이스 어댑터는 팩터리 패턴을 사용하여 애플리케이션 코드에 채널을 제공합니다. Microsoft.Adapters.OracleDBBinding 개체를 사용하여 다음 인스턴스를 만듭니다.

  • System.ServiceModel.ChannelFactory<IRequestChannel> 은 어댑터에서 요청-응답 작업을 호출하는 데 사용할 수 있는 IRequestChannel 채널을 제공합니다.

  • System.ServiceModel.ChannelFactory<IOutputChannel> 은 어댑터에서 단방향 작업을 호출하는 데 사용할 수 있는 IOutputChannel 채널을 제공합니다.

  • System.ServiceModel.IChannelListener<IInputChannel> 은 어댑터에서 인바운드 메시지(예: POLLINGSTMT 작업)를 수신하는 데 사용할 수 있는 IInputChannel 채널을 제공합니다.

WCF 채널 모델에서 Oracle 데이터베이스 어댑터에 대한 메시지 만들기

WCF에서 System.ServiceModel.Channels.Message 클래스는 SOAP 메시지의 메모리 내 표현을 제공합니다. static Message.Create 메서드를 호출하여 메시지 instance 만듭니다.

SOAP 메시지에는 Oracle 데이터베이스 어댑터로 보낼 메시지 instance 만들 때 지정해야 하는 두 가지 중요한 부분이 있습니다.

  • 메시지 작업은 SOAP 메시지 헤더의 일부인 문자열입니다. 메시지 작업은 Oracle 데이터베이스에서 호출해야 하는 작업을 식별합니다. 다음은 /SCOTT/EMP 테이블에서 http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select선택 작업을 호출하도록 지정된 메시지 작업을 보여줍니다.

  • 메시지 본문에는 작업에 대한 매개 변수 데이터가 포함됩니다. 메시지 본문은 요청된 작업에 대해 Oracle 데이터베이스 어댑터에서 예상하는 메시지 스키마에 해당하는 올바른 형식의 XML로 구성됩니다. 다음 메시지 본문은 SCOTT에 대한 선택 작업을 지정합니다. EMP 테이블(SELECT * FROM EMP).

    <?xml version="1.0" encoding="utf-8" ?>  
    <Select xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP">  
        <COLUMN_NAMES>*</COLUMN_NAMES>  
    </Select>  
    

    작업에 대한 Oracle 데이터베이스 어댑터 메시지 스키마 및 메시지 작업에 대한 자세한 내용은 BizTalk Adapter for Oracle Database의 메시지 및 메시지 스키마를 참조하세요.

    Create 메서드는 오버로드되며 메시지 본문을 제공하기 위한 다양한 옵션을 제공합니다. 다음 코드에서는 XmlReader를 사용하여 메시지 본문을 제공하여 메시지 instance 만드는 방법을 보여 줍니다. 이 코드에서 메시지 본문은 파일에서 읽습니다.

XmlReader readerIn = XmlReader.Create("SelectAllActivity.xml");  
Message messageIn = Message.CreateMessage(MessageVersion.Default,  
    "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select",  
    readerIn);  

중요

메시지 instance 메시지 작업을 제공해야 합니다. 이 작업은 일반적으로 메시지 instance 만들 때 수행됩니다.

WCF 채널 모델에서 LOB 데이터 형식에 대한 스트리밍 지원

LOB 데이터 형식의 엔드 투 엔드 스트리밍은 어댑터에서 노출되는 일부 작업에 대해 지원됩니다. 이러한 작업의 경우 채널을 통해 보내고 받는 메시지를 만들고 사용하는 방법은 LOB 데이터에서 스트리밍이 지원되는지 여부를 결정합니다.

Oracle 데이터베이스 어댑터가 LOB 데이터 스트리밍을 지원하는 방법에 대한 자세한 내용은 Oracle Database 어댑터에서 큰 개체 데이터 형식 스트리밍을 참조하세요.

LOB 데이터의 엔드 투 엔드 스트리밍을 지원하기 위해 코드에서 노드 값 스트리밍을 구현하는 방법에 대한 자세한 내용은 WCF 채널 모델을 사용하여 Oracle 데이터베이스 LOB 데이터 형식 스트리밍을 참조하세요.

참고 항목

WCF 채널 모델을 사용하여 Oracle Database 애플리케이션 개발