Friday, November 28, 2008

RFC Server 구성하기 - (3) RFC Server for BizTalk WCF SAP Adapter

드디어 세번째 시간 BizTalk WCF SAP Adapter를 이용하여 RFC Server를 구성하는부분에 대해서 진행하도록 하겠습니다.

SAP .NET Connector는 1.2 버전이후로는 SAP사에서 더이상 지원하지 않는것으로 결정되었습니다.
1.2 버전은 .NET Framework 1.1 버전을 지원하고 있으므로, Microsoft의 새로운 Version에서 SAP와 연결하고 싶다면 어떻게 해야되는지 고민이 되었습니다.

이러한 문제를 해결해주기 위해서 Microsoft사에서 SAP .NET Connector를 WCF기술로 구현해서 나오게되었습니다. BizTalk WCF SAP Adapter라고는 하지만 BizTalk이 없이 SAP.NET Connector처럼 모듈 형태로 사용가능하며, Microsoft의 새로운 Version에서 동작함으로 앞으로 기대할만할 것 같습니다. SAP.NET Connector는 SAP에서 만들어서 배포하는 관계로 문제가 발생했을때 지원받기가 어려운 점이 있었습니다.


(2) RFC Server SAP Side에서 구성한 RFC를 그대로 사용하도록 하겠습니다. 내용은 단순하게 덧셈을 하는것으로 잡았으며, MiniSAP이므로 실제 SAP와는 조금 차이 날 수 있습니다.



SAP에서 RFC 구성이 완료되었으면 BizTalk Server측으로 넘어가도록 합니다.
BizTalk WCF SAP Adapter가 정상적으로 설치되었다면, Visual Studio를 실행하여 BizTalk 프로젝트를 생성합니다.
BizTalk 프로젝트에서 오른쪽 마우스 버튼을 클릭 Add -> Add Generated Items를 선택합니다.

Add Generated Items의 왼쪽 트리뷰에서 Consume Adapter Service을 선택합니다.

WCF Adapter Wizard화면이 나오면 Binding을 SAPBinding로 지정합니다.
SAP로 지정 후 접근할 SAP의 주소 및 인증정보를 입력합니다.



SAP 접근 인증정보 입력



SAP 서버 연결 정보 입력



설정이 완료된 후 Connect을 클릭하면 SAP 서버의 내용이 나옵니다.

Contract type을 Client로 지정 후 검색 또는 왼쪽 트리에서 필요한 RFC를 찾아서 추가합니다. OK를 클릭하면 Z_RFC_ADD 함수의 스키마가 생성됩니다.

RFC Server 방식은 수신 받은 이벤트를 가지고 로직을 실행 후 리턴값을 응답하는 구조입니다.
여기서는 Orchestration을 생성하여 C#으로 구성된 모듈(로직)을 호출하여 응답값을 리턴하도록 합니다.



Expression Shape를 사용하여 C# 모듈을 호출합니다.

응답값을 리턴하기 위해서는 WCF.Action값이 필요합니다. Action값은 Schema에서 확인할 수 있습니다.



C# 모듈은 간단한 덧셈을 수행 후 Response Schema에 맞는 XML을 생성합니다.
BizTalk 프로젝트가 생성이 완료되면 빌드하여 배포하도록 합니다.

이제 RFC Server 이벤트를 수신받을 Receive Port를 생성합니다.



RFC Server의 방식은 수신을 받은 후 응답을 주는 형태이므로 Request Response Recieve Port로 생성합니다.



포트이름은 알아볼수 있는 내용으로 지정하시면 됩니다.


Receive Location에서 Type은 WCF-Custom으로 선택합니다.
Handler를 선택 후 파이프라인은 Default XML 파이프라인으로 지정합니다.
Configure...을 클릭합니다.


WCF-Custom 어댑터 설정화면이 나오면 Binding 탭에서 SAPBinding을 선택합니다

SAP 서버에 접근하는 인증정보를 입력합니다.

General 탭으로 다시 돌아와서 Address를 입력합니다.
** 앞서서 SAP Counsum Wizard에서 생성한 Address를 사용해보았는데 연결이 되지 않습니다. 사용자가 수정을 해야합니다.


주소는 다음과 같은 포멧으로 만들어주면 됩니다.

sap://CLIENT=00;LANG=EN;@A/MINISAP/00?ListenerGwHost=MINISAP&ListenerGwServ=SAPGW00&ListenerProgramId=BIZTALK


설정이 완료 된 후 Receive Port를 Enable 상태로 변경합니다



(2) RFC Server SAP Side에서 했던 Connection Test를 해서 연결이 올바르게 이루어지는지 확인합니다.



Connection Test가 완료되었다면, 이제 실제로 SAP 에서 이벤트를 주어 RFC Server가 동작하는지 테스트 해보도록 합니다.


이렇게 해서 3번에 걸쳐 RFC Server 이용하기 아티클이 끝났습니다. 이전에 테스트하면서 정리한 자료를 가지고 아티클을 올리려고 하니 아쉬운 캡쳐부분들이 생기는군요... 현재 프로젝트 중에는 WCF SAP 어댑터를 사용하지 않는 관계로 설치가 되지 않아 재 캡쳐도 어려운 상황이었습니다. 아티클에서 궁금하신부분은 언제든지 메일(dhysys@gmail.com) 또는 덧글로 남기시면 답변하도록 하겠습니다.

아직까지는 좀 아쉬운 부분들이 있는 WCF SAP Adapter 이지만 Microsoft의 특성상 버전이 향상되면서 획기적으로 개선이 되니 좀 기다려야되지 않을까 싶습니다.

BizTalk Server와 관련해서 WCF Adapter 샘플을 제공하고 있습니다. 샘플은 다음링크에서 다운로드 받을 수 있습니다.

BizTalk Server 2006 R2 Code Samples

여기서 사용한 샘플 역시 여기서 다운로드 받아 약간의 수정을 통해 이용하였습니다.

WCF SAP Adapter을 테스트 하면서 생각되어진 장단점은 다음과 같습니다.

장점

(1) 이전 BizTalk Adapter로는 지원되지 않는 부분들을 지원하고 있습니다.
- RFC Server 지원
- SAP ECC Version 지원

(2) 마이크로소프트에서 돈?을 받고 파는 제품이기 때문에 문제 발생시 기술지원을 받을 수 있습니다.

(3) 마이크로소프트에서 만들어 내기 때문에 앞으로도 꾸준히 업데이트 되면서 BizTalk 이외의 다른제품에서도 사용할 수 있도록 나오게 되었습니다 . SSIS (SQL Server Integration Service), IIS (Internet Information Service), MOSS (Microsoft Office Share Point Server), W/S (XML Web Service) 등등

단점

(1) 현재 나와있는 BizTalk WCF Adapter v1.0은 버그가 보이고 있습니다. SAP를 연결하는데 같은 버전의 SAP라도 오류가 그때그때 달라지니.. 좀 난감할때가 있습니다. 아무래도 첫번째 버전의 모습을 보이고 있지만, 내년에 v2.0 으로 몇가지 어댑터와 추가기능이 추가되어서 나오면 좀더 사용할만한 어댑터가 되지 않을까 싶습니다.

(2) BizTalk Adapter로는 BizTalk으로 구매시 라이센스가 같이 들어오지만 BizTalk이 없이 사용할려고 할때에는 라이센스를 구매하셔야 합니다. SAP와 연계는 하고 싶지만 BizTalk은 너무 비싸서 구매에 망설여 진다면 WCF Adapter Pack만 구매해서 사용하시는것도 방법입니다.

(3) 설치시 몇까지 지켜줘야 될 사항들이 있습니다. SAP GUI에서 dll 복사 설치라던가.. 아직까지는 원 클릭 설치가 되지 않습니다. SAP GUI 버전도 좀 가리는것 같습니다.

(4) 여러번 Consume Adapter Wizard를 실행할 경우가 생기면 매번 인증정보와 서버정보를 입력해야 합니다. 이거 매우 반복성 작업이 되어버리는군요... 서버정보는 Configure a URI를 복사해서 사용하면 약간이나마 줄일 수 있습니다.

No comments: