다음을 통해 공유


스트리밍 및 SAP 어댑터

mySAP Business Suite용 Microsoft BizTalk 어댑터는 자체 및 클라이언트 애플리케이션 간의 메시지 스트리밍을 지원합니다. SAP 어댑터 작업이 호출되고 SOAP 메시지를 교환하여 응답이 반환됩니다. SOAP 메시지 본문은 XML 노드로 구성됩니다.

어댑터에서 지원하는 메시지 스트리밍에는 두 가지 종류가 있습니다.

  • 노드 스트리밍. 노드 스트리밍에서 클라이언트와 어댑터 간에 한 번에 노드를 스트리밍할 수 있습니다. 즉, 노드의 전체 값이 버퍼로 읽은 다음 수신기로 전송됩니다.

  • 노드 값 스트리밍. 노드 값 스트리밍에서 노드의 실제 값은 클라이언트와 어댑터 간의 청크로 스트리밍할 수 있습니다. 노드 값 스트리밍은 SendIdoc 또는 ReceiveIdoc 작업을 사용하여 큰IDOC를 보내거나 받는 데 유용합니다. 전체 IDOC가 단일 노드에 포함되어 있기 때문입니다. (IDOC 데이터가 여러 노드로 분할되는 강력한 형식의 보내기 또는 받기 작업과는 반대로).

중요

노드 값 스트리밍은 어댑터와 클라이언트 애플리케이션 간에만 지원됩니다. SAP 어댑터는 SAP 시스템을 사용한 엔드 투 엔드 노드 값 스트리밍을 지원하지 않습니다. 이 기능은 SAP 클라이언트 라이브러리에서 지원되지 않기 때문입니다.

이러한 스트리밍 모드는 모두 WCF의 메시지에 대한 노드 스트리밍 및 노드 값 스트리밍을 지원합니다. 이러한 이유로 스트리밍은 어댑터와 클라이언트 애플리케이션 모두에서 메시지를 만들고 사용하는 방법과 밀접하게 연관됩니다. 그 결과 메시지 스트리밍에 대한 지원이 모든 프로그래밍 모델에서 동일하지 않습니다.

이 항목의 섹션에서는 다음을 제공합니다.

  • WCF에서 메시지 스트리밍을 지원하는 방법과 어댑터에서 메시지 스트리밍을 구현하는 방법에 대한 기본 배경 정보입니다.

  • 각 프로그래밍 모델에서 어댑터를 사용할 때 메시지 스트리밍이 지원되는 방법에 대한 정보입니다.

스트리밍 기본 사항

SAP 어댑터에서 구현된 스트리밍에 대한 지원은 다음의 조합입니다.

  • WCF의 메시지 스트리밍 지원.

  • SAP 클라이언트 라이브러리의 스트리밍 지원.

  • 어댑터에서 내부적으로 메시지를 만들고 사용하는 방식입니다.

WCF의 메시지 스트리밍 지원

WCF에서 메시지 스트리밍을 지원하는 방법은 메시지를 만드는 방법과 메시지 사용 방법에 따라 달라집니다.

  • WCF 메시지는 System.ServiceModel.Channels.Message의 정적 Create 메서드를 사용하여 만들어집니다. 이 메서드에는 메시지 본문을 전달하는 다양한 방법을 지원하는 여러 오버로드가 있습니다. 다음을 사용하여 메시지 본문을 전달하여 WCF 메시지를 만들 수 있습니다.

    • System.Xml. XmlReader 또는

    • System.ServiceModel.Channels.BodyWriter.

  • 를 사용하여 WCF 메시지를 사용할 수 있습니다.

    • Message.GetReaderAtBodyContents()를 호출하여 XmlReader 또는

    • Message.WriteBodyContents(XmlDictionaryWriter)를 호출하여 XmlDictionaryWriter입니다.

    다음 표에서는 메시지를 만들고 사용하는 다양한 조합에 대해 WCF가 어떻게 동작하는지 보여 줍니다.

을 사용하여 만든 메시지 사용한 메시지 WCF 동작
XmlBodyWriter XmlDictionaryWriter 노드 값 스트리밍 이 지원됩니다. WCF는 스트리밍을 사용하도록 설정하기 위해 두 기록기를 함께 파이프합니다. XmlBodyWriterXmlDictionaryWriter는 모두 노드 값 스트리밍을 지원해야 합니다.
XmlBodyWriter XmlReader 노드 스트리밍 이 지원됩니다. WCF는 내부적으로 XmlReader를 버퍼링합니다.
XmlReader XmlDictionaryWriter 노드 스트리밍 이 지원됩니다. WCF는 내부적으로 XmlReader 를 버퍼링하고 XmlDictionaryWriter로 다시 호출합니다.
XmlReader XmlReader 노드 스트리밍 이 지원됩니다. WCF는 내부적으로 XmlReader를 버퍼링합니다.

SAP 클라이언트 라이브러리의 스트리밍 지원

SAP 클라이언트 라이브러리는 스트리밍을 지원하지 않습니다. 따라서 엔드 투 엔드 노드 값 스트리밍은 SAP 어댑터에서 지원되지 않습니다.

어댑터의 내부 메시지 처리

어댑터는 다음과 같은 방식으로 스트리밍을 지원합니다.

  • 어댑터는 XmlDictionaryWriter의 사용자 지정 구현을 사용하여 클라이언트에서 받은 SendIdDoc 요청 메시지를 사용합니다. XmlReader를 사용하여 클라이언트에서 받은 다른 모든 메시지를 사용합니다.

  • 어댑터는 XmlBodyWriter의 사용자 지정 구현을 사용하여 클라이언트에 보내는 ReceiveIdoc 요청 메시지를 만듭니다. XmlReader를 사용하여 클라이언트에 보내는 다른 모든 메시지를 만듭니다.

WCF 채널 모델의 스트리밍 지원

다음 표에서는 WCF 채널 모델에서 스트리밍을 지원하는 방법에 대한 자세한 정보를 제공합니다.

작업 노드 스트리밍 Node-Value 스트리밍 Description
아웃바운드 RFC 및 BAPI 작업(클라이언트에서 어댑터로) 지원되지 않음 지원되지 않음
아웃바운드 tRFC 작업(클라이언트에서 어댑터로) 지원되지 않음 지원되지 않음
IDOC 보내기 작업(강력한 형식) 지원되지 않음 지원되지 않음
IDOC 수신 작업(강력한 형식) 지원됨 지원되지 않음
SendIdoc 작업(문자열) 지원됨 지원됨 어댑터는 XmlDictionaryWriter 를 사용하여 요청 메시지를 사용합니다. 클라이언트가 BodyWriter를 사용하여 메시지를 만드는 경우 클라이언트에서 어댑터로 노드 값 스트리밍이 발생합니다.
ReceiveIdoc 작업(문자열) 지원됨 지원됨 어댑터는 BodyWriter 를 사용하여 요청 메시지를 만듭니다. 클라이언트가 XmlDictionaryWriter를 사용하여 메시지를 사용하는 경우 어댑터에서 클라이언트로 노드 값 스트리밍이 발생합니다.
인바운드 RFC 작업 지원되지 않음 지원되지 않음
인바운드 tRFC 작업 지원되지 않음 지원되지 않음

SendIdoc 및 ReceiveIdoc 작업을 사용하여 플랫 파일(문자열)IDOC를 보내고 받기 위해 코드에서 노드 값 스트리밍을 구현하는 방법에 대한 자세한 내용은 WCF 채널 모델을 사용하여 SAP에서 Flat-File IDOC 스트리밍을 참조하세요.

WCF 서비스 모델의 스트리밍 지원

메시지의 XML 표현과 해당 메시지의 관리 코드 개체 표현 간에 직렬화 및 역직렬화하려면 전체 메시지를 쓰고 메모리로 읽어야 합니다. 이러한 이유로 노드 스트리밍이나 노드 값 스트리밍은 WCF 서비스 모델에서 지원되지 않습니다.

BizTalk Server 스트리밍 지원

다음 표에서는 BizTalk Server 스트리밍을 지원하는 방법에 대한 자세한 정보를 제공합니다.

작업 노드 스트리밍 Node-Value 스트리밍 Description
RFC 및 BAPI 작업(클라이언트에서 어댑터로) 지원되지 않음 지원되지 않음
tRFC 작업(클라이언트에서 어댑터로) 지원되지 않음 지원되지 않음
IDOC 보내기 작업(강력한 형식) 지원되지 않음 지원되지 않음
IDOC 수신 작업(강력한 형식) 지원됨 지원되지 않음
SendIdoc 작업(문자열) 지원됨 지원됨 WCF-Custom 어댑터는 BodyWriter 를 사용하여 요청 메시지를 만들므로 노드 값 스트리밍이 지원됩니다.
ReceiveIdoc 작업(문자열) 지원됨 지원됨 WCF-Custom 어댑터는 XmlDictionaryWriter 를 사용하여 요청 메시지를 사용하므로 노드 값 스트리밍이 지원됩니다.
인바운드 RFC 작업 지원되지 않음 지원되지 않음
인바운드 tRFC 작업 지원되지 않음 지원되지 않음

참고 항목

SAP 애플리케이션 개발