SAP 시스템에 대한 클라이언트 바인딩 구성
WCF 클라이언트 클래스를 생성한 후에는 WCF 클라이언트(instance)를 만들고 해당 메서드를 호출하여 mySAP Business Suite용 Microsoft BizTalk 어댑터를 사용할 수 있습니다. SAP 어댑터가 노출하는 작업에 대한 WCF 클라이언트 클래스 및 도우미 코드를 생성하는 방법에 대한 자세한 내용은 SAP 솔루션 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성을 참조하세요.
WCF 클라이언트를 만들려면 엔드포인트 주소와 바인딩을 지정해야 합니다. 엔드포인트 주소는 유효한 SAP 연결 URI를 포함해야 하며 바인딩은 SAP 바인딩(SAPBinding)의 instance 합니다. SAP 연결 URI에 대한 자세한 내용은 SAP 시스템 연결 URI 만들기를 참조하세요.
코드 또는 구성 파일에서 SAP 바인딩 및 엔드포인트 주소를 지정할 수 있습니다. 어댑터 서비스 참조 Visual Studio 플러그 인 추가를 사용하여 WCF 클라이언트 클래스를 생성하는 경우 프로젝트에 대한 구성 파일(app.config)도 만들어집니다. 이 파일에는 어댑터 서비스 참조 플러그 인 추가를 사용하여 SAP 시스템에 연결할 때 지정한 바인딩 속성 및 연결 정보(자격 증명 제외)를 반영하는 구성 설정이 포함되어 있습니다.
코드에서 바인딩 및 엔드포인트 주소 지정
다음 코드에서는 코드에서 바인딩 및 엔드포인트 주소를 지정하여 WCF 클라이언트를 만드는 방법을 보여줍니다. 엔드포인트 주소에 대해 제공된 연결 URI 대신 WCF 클라이언트의 ClientCredentials 속성을 사용하여 SAP 시스템 자격 증명을 지정하는 것이 좋습니다.
// A WCF client that targets an RFC is created
// by using a binding object and endpoint address
SAPBinding sapBinding = new SAPBinding();
EndpointAddress sapAddress = new EndpointAddress("sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00");
RfcClient rfcClient = new RfcClient(sapBinding, sapAddress);
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
rfcClient.Open();
구성 파일에서 바인딩 및 엔드포인트 주소 지정
다음 코드에서는 app.config 파일에서 바인딩 및 엔드포인트 주소를 지정하여 WCF 클라이언트를 만드는 방법을 보여 있습니다.
// A WCF client that targets an RFC is created
// by specifying the client endpoint information in app.config
RfcClient rfcClient = new RfcClient("SAPBinding_Rfc");
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
rfcClient.Open();
다음 XML에서는 어댑터 서비스 참조 추가 플러그 인을 통해 EMP 테이블에 대해 만든 구성 파일을 보여 있습니다. 이 파일에는 이전 예제에서 참조된 클라이언트 엔드포인트 구성이 포함되어 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<bindings>
<sapBinding>
<binding name="SAPBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" receiveIdocFormat="Typed"
generateFlatFileCompatibleIdocSchema="true" maxConnectionsPerSystem="50"
enableConnectionPooling="true" idleConnectionTimeout="00:15:00"
flatFileSegmentIndicator="SegmentDefinition" enablePerformanceCounters="false"
autoConfirmSentIdocs="false"
acceptCredentialsInUri="false" padReceivedIdocWithSpaces="false"
enableBizTalkCompatibilityMode="false" />
</sapBinding>
</bindings>
<client>
<endpoint address="sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00?RfcSdkTrace=False&AbapDebug=False&UseSapGui=Without"
binding="sapBinding" bindingConfiguration="SAPBinding" contract="Rfc"
name="SAPBinding_Rfc" />
</client>
</system.serviceModel>
</configuration>
프로젝트에 둘 이상의 WCF 클라이언트가 있는 경우 구성 파일에 여러 클라이언트 엔드포인트 항목이 정의됩니다. 각 WCF 클라이언트 항목에는 바인딩 구성 및 대상 SAP 시스템 아티팩트(예: Rfc 및 Trfc)에 따라 고유한 이름이 있습니다. 예를 들어 "SAPBinding_Rfc"입니다. 프로젝트에서 WCF 클라이언트를 만들기 위해 여러 번 연결하는 경우 각 연결에 대해 하나씩 여러 바인딩 구성 항목이 만들어집니다. 이러한 바인딩 구성 항목의 이름은 SAPBinding1, SAPBinding2 등으로 지정됩니다. 특정 연결 중에 만든 각 클라이언트 엔드포인트 항목은 해당 연결 중에 만든 바인딩 항목을 참조합니다.
중요
SAP 어댑터는 동일한 서비스 계약의 다른 작업과 동일한 형식(예: RFC, TRFC 및 IDOC)의 서로 다른 SAP 아티팩트 표면을 표시합니다. 예를 들어 RFC_EXAMPLE_A 및 RFC_EXAMPLE_B 두 개의 서로 다른 RFC는 모두 동일한 서비스 계약("Rfc")에 따라 표시됩니다. 즉, 두 RFC는 동일한 WCF 클라이언트 클래스인 RfcClient에서 호출되고 두 RFC에 대한 매개 변수는 동일한 네임스페이스에 선언됩니다. 따라서 솔루션을 빌드할 때 네임스페이스 충돌이 발생하지 않도록 동일한 어댑터 서비스 참조 플러그 인 세션(연결) 중에 두 RFC에 대한 WCF 클라이언트를 생성해야 합니다.
참고 항목
WCF 서비스 모델을 사용하여 SAP 애플리케이션 개발
SAP 솔루션 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성
SAP 시스템 연결 URI 만들기