연습: WCF-BasicHttp 어댑터를 통해 WCF 서비스 게시
소개
이 연습에서는 BizTalk WCF 서비스 게시 마법사 및 WCF-BasicHttp 어댑터를 사용하여 WCF(Windows Communication Foundation) 서비스를 BizTalk 오케스트레이션으로 게시합니다. BizTalk 오케스트레이션은 WCF-BasicHttp 어댑터를 사용하여 WCF 엔드포인트를 노출하여 다른 웹 서비스 또는 WCF 애플리케이션과 같은 외부 클라이언트에 WCF 서비스로 표시됩니다. WCF-BasicHttp 어댑터는 송신 어댑터와 수신 어댑터로 구성되어 있습니다. 이 샘플에서는 이 어댑터의 수신 쪽만 사용하여 WCF 클라이언트 애플리케이션에서 HTTP 또는 HTTPS 프로토콜을 통해 WCF 서비스 요청을 수신합니다.
WCF-BasicHttp 어댑터는 BasicHttpBinding 바인딩을 사용하여 웹 서비스의 초기 릴리스와 호환되는 전송/프로토콜 스택 구현을 제공하여 BizTalk Server 및 WCF 기능 간의 브리지 역할을 합니다. 텍스트 인코딩이 있는 HTTP 또는 HTTPS 전송을 사용하여 WS-I Basic Profile 1.1을 준수하는 클라이언트와 레거시 ASMX 기반 웹 서비스의 통신을 제공합니다. WCF-BasicHttp 어댑터를 사용하면 WS-* 프로토콜에서 지원하는 고급 웹 통신 기능은 활용할 수 없습니다. 고급 웹 통신 기능을 활용해야 하는 경우에는 WCF-WSHttp 어댑터를 사용합니다.
이 연습에서는 오케스트레이션을 WCF 서비스로 게시하는 WCF-BasicHttp 수신 위치를 만드는 방법을 보여 줍니다. 해당 WCF 서비스의 격리된 호스팅을 제공하도록 IIS(인터넷 정보 서비스)를 구성합니다. 클라이언트 애플리케이션은 외부 클라이언트가 인터넷을 통해 게시된 WCF 서비스를 호출하여 해당 기능을 사용하는 방법의 예로 게시된 WCF 오케스트레이션을 호출합니다.
이 연습을 완료하면 다음 작업을 수행하는 방법을 알 수 있습니다.
Visual Studio 내에서 Deploy 명령을 사용하여 BizTalk 어셈블리 내의 BizTalk 오케스트레이션 형식으로 WCF 서비스를 BizTalk Server 로컬 instance 배포합니다. Visual Studio에서 배포하면 BizTalk 솔루션에 사용할 리소스(예: 오케스트레이션, 파이프라인, 스키마 및 맵)가 포함된 어셈블리로 채워진 BizTalk 응용 프로그램이 만들어집니다.
배포된 후 BizTalk 오케스트레이션은 BizTalk Server 관리 콘솔을 통해 구성 및 제어에 사용할 수 있습니다. 이 연습에서는 BizTalk WCF 서비스 게시 마법사가 만드는 WCF 서비스로 전송된 들어오는 메시지를 수락하도록 WCF-BasicHttp 수신 위치를 구성합니다. 수신 위치는 IIS의 BizTalk 격리 호스트에서 호스트되며 들어오는 요청에 액세스하는 WCF 서비스 역할을 합니다.
참고
이 연습에서는 BizTalk WCF 게시 마법사 및/또는 BizTalk 웹 서비스 게시 마법사를 사용하여 WCF 어댑터를 사용하여 BizTalk 오케스트레이션 및 스키마를 WCF 서비스로 게시합니다. SOAP 어댑터를 사용하여 오케스트레이션 및 스키마를 웹 서비스로 게시하려면 BizTalk WCF 게시 마법사 및/또는 BizTalk 웹 서비스 게시 마법사를 사용합니다.
필수 구성 요소
이 샘플의 단계를 수행하려면 환경에서 다음 필수 구성 요소를 설치해야 합니다.
어셈블리를 빌드하고 배포 프로세스를 실행하는 컴퓨터와 샘플을 실행하는 컴퓨터 모두 Microsoft Windows Server 2008 SP2 및/또는 Windows Server 2008 R2, Microsoft .NET Framework 4 및 Microsoft BizTalk Server 필요합니다.
어셈블리를 빌드하고 배포 프로세스를 실행하는 컴퓨터에는 Microsoft Visual Studio가 필요합니다.
샘플을 실행하는 컴퓨터에는 WCF 어댑터 및 WCF 관리 도구가 필요합니다. 다음은 Microsoft BizTalk Server 설치하는 동안 설치할 수 있는 옵션입니다.
관리 작업을 수행하는 데 사용하는 컴퓨터에서 BizTalk Server 관리 콘솔 내에서 BizTalk Server 애플리케이션 설정을 구성하려면 BizTalk Server Administrators 그룹의 구성원인 사용자 계정으로 실행해야 합니다. 또한 이 사용자 계정은 응용 프로그램 배포, 호스트 인스턴스 관리 및 기타 필요한 작업에 대한 로컬 관리자 그룹의 멤버여야 합니다.
WCF 기능이 필요한 컴퓨터의 경우 Windows Communication Foundation 샘플에 대한 일회성 설치 절차에서 WCF 샘플 에 대한 일회성 설치 절차를 완료합니다.
샘플을 실행하고 바인딩 또는 .msi 파일을 BizTalk Server 가져오는 컴퓨터에서 호스트가 신뢰할 수 있는 호스트가 아니거나 가져오기가 실패하는지 확인합니다.
연습 코드를 다운로드하여 컴퓨터에 추출해야 합니다. 이 연습은 전체 WCF 어댑터 연습 패키지의 일부입니다. 의 BizTalk Server 개발자 센터에서 https://go.microsoft.com/fwlink/?LinkId=194140파일WCFAdapterWalkthroughs.exe다운로드할 수 있습니다.
샘플 BizTalk 솔루션, BizTalkApp를 배포하려면
자체 추출 WCFBasicHttpReceiveAdapter.exe 파일을 실행하고 C:\WCFBasicHttpReceiveAdapter 폴더로 파일을 추출합니다.
Microsoft Visual Studio에서 C:\WCFBasicHttpReceiveAdapter\WCFBasicHttpReceiveAdapter.sln 파일을 엽니다.
Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp 어셈블리에는 BizTalk Server 오케스트레이션, 맵 및 두 개의 스키마가 포함되어 있습니다. GAC에 설치해야 하며 이를 수행하려면 강력한 이름 키 파일이 필요합니다. BizTalkApp 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 속성 페이지에서 서명을 클릭하고 어셈블리 서명을 선택합니다. 강력한 이름 키 파일 선택 드롭다운 목록에서 아래쪽 화살표를 클릭하고 새로> 만들기를 클릭한 다음<키 파일 이름 텍스트 상자에 를 입력
keyfile.snk
합니다. 암호로 키 파일 보호의 선택을 취소한 다음 확인을 클릭합니다.솔루션 탐색기 BizTalkApp 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 다시 빌드를 클릭합니다.
참고
빌드 솔루션을 시도하거나 이 시점에서 WCFClient 애플리케이션을 빌드하지 마세요. WCFClient는 샘플의 이 시점에서 빌드할 준비가 되지 않았습니다.
BizTalkApp을 확장한 다음 DeliveryProcess.odx를 열어 검토합니다. 오케스트레이션은 WCF-BasicHttp 어댑터를 사용하여 HTTP를 통해 WCF 요청을 받습니다. 변환 맵을 사용하여 요청을 수정하고 동일한 WCF 어댑터를 사용하여 응답을 다시 보냅니다.
이 오케스트레이션에는 WCF-BasicHttp 어댑터를 통해 게시될 논리적 요청-응답 포트가 있습니다. 논리적 요청-응답 포트는 나중에 실제 포트에 바인딩됩니다.
디자이너 창에서 DeliveryProcess.odx 의 위쪽 노드를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 포트 형식의 형식 한정자 속성이 공용인지 확인합니다.
솔루션 탐색기 BizTalkApp을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
BizTalk Management 데이터베이스가 로컬로 호스트되지 않은 경우 다른 데이터베이스 서버를 사용하는 경우 Server 속성을 수정합니다. 배포 탭을 클릭한 다음 서버 속성을 수정하여 데이터베이스 서버를 가리킵니다.
Application Name 속성이 WCFBasicHttpReceiveAdapter로 설정되어 있는지 확인합니다. 이 속성은 BizTalk 솔루션이 배포될 BizTalk 응용 프로그램의 이름입니다.
솔루션 탐색기 BizTalkApp을 마우스 오른쪽 단추로 클릭한 다음 배포를 클릭합니다. 로컬로 배포하지 않을 경우 원격 연결을 허용하도록 SQL Server를 구성해야 할 수 있습니다. 자세한 내용은 방법: SQL Server 원격 연결 사용을 참조하세요.
BizTalk WCF 서비스 게시 마법사를 사용하여 샘플 오케스트레이션을 게시하려면
이 단계에서는 새로 배포된 오케스트레이션 어셈블리를 가져와서 WCF 서비스로 게시합니다. 이렇게 하려면 시작을 클릭하고 모든 프로그램을 가리킨 다음 MicrosoftBizTalk Server 가리킨 다음 BizTalk WCF 서비스 게시 마법사를 클릭합니다.
BizTalk WCF 서비스 게시 마법사 시작 페이지에서 다음을 클릭합니다.
WCF 서비스 유형 페이지에서 다음 작업을 수행하여 게시할 WCF 서비스의 유형과 WCF 메시지를 수신하기 위한 BizTalk 엔드포인트를 지정하고 다음을 클릭합니다.
어셈블리의 오케스트레이션에서 WCF 서비스를 게시할 상태인 서비스 엔드포인트 옵션을 선택합니다. 어댑터 이름(전송 유형) 드롭다운 목록에서 WCF-BasicHttp를 선택합니다.
메타데이터 엔드포인트 검사 사용 상자를 선택하여 IIS에서 호스트하는 WCF 수신 위치가 WCF 서비스 메타데이터를 게시하도록 합니다. 이 검사 상자를 선택하면 serviceMetadata> 요소
true
의 httpGetEnabled 특성이 < Web.Config. 이 메타데이터는 HTTP/GET 요청이 요청하면 검색됩니다. 나중에 SvcUtil.exe 도구를 사용하여 이 데이터를 가져와 WCF 서비스를 호출하는 데 사용할 클라이언트 코드에 대한 프록시 클래스를 생성합니다.다음 애플리케이션에서 BizTalk 수신 위치 만들기 옵션을 선택하여 WCF-BasicHttp 어댑터에 대해 생성된 각 .svc 파일에 해당하는 수신 포트 및 위치를 만듭니다. 수신 포트 및 위치가 생성될 BizTalk 애플리케이션 이름 WCFBasicHttpReceiveAdapter를 선택하고 다음을 클릭합니다.
마법사가 연결된 수신 위치를 나타내는 바인딩 파일(Binding.XML)을 만듭니다. 이 파일은 웹 디렉터리에 있으며 나중에 BizTalk Server 관리 콘솔을 통해 수동으로 가져올 수 있습니다.
참고
여기서 배포된 BizTalk 응용 프로그램을 선택하지 않으면 기본 응용 프로그램이 선택됩니다.
WCF 서비스 만들기 페이지에서 BizTalk 오케스트레이션을 WCF 서비스로 게시를 선택하고 다음을 클릭합니다. 그러면 다음 단계에서 지정된 오케스트레이션이 WCF 서비스로 게시됩니다.
게시할 오케스트레이션이 포함된 어셈블리를 선택합니다. BizTalk 어셈블리 페이지에서 BizTalk 어셈블리 파일(*.dll) 텍스트 상자에서 찾아보기를 클릭하여 C:\WCFBasicHttpReceiveAdapter\BizTalkApp\bin\Development 폴더로 이동하고, 게시할 샘플 오케스트레이션이 포함된 Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp 어셈블리를 두 번 클릭하고 열기를 클릭한 다음 다음을 클릭합니다.
오케스트레이션 및 포트 페이지에서 포트: DeliveryRequestPort 노드가 선택되어 있는지 확인하고 다음을 클릭합니다. 이 노드를 선택하면 해당하는 상위 수준의 노드도 선택됩니다. 포트가 WCF-BasicHttp 어댑터를 호스팅하는 요청-응답 수신 위치로 게시됩니다.
WCF 서비스 속성 페이지의 WCF 서비스 텍스트 상자의 대상 네임스페이스에 이 게시된 WCF 서비스를 사용할 URI를 입력하고 다음을 클릭합니다. 이 연습에서는 WCF 서비스 텍스트 상자의 대상 네임스페이스에 기본 URI "
<http://tempuri.org/>
"를 그대로 둡니다.WCF 서비스 위치 페이지에서 다음 작업을 수행하여 만들 WCF 서비스의 위치를 지정하고 다음을 클릭합니다.
위치 텍스트 상자에 WCF 서비스가 실행되는 웹 디렉터리 이름을 입력하거나 찾아보기를 클릭하고 웹 디렉터리를 선택합니다. 이 연습에서는 어셈블리 이름이 가상 디렉터리와 동일하므로 위치 텍스트 상자에 기본 위치(
http://localhost/Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp
)를 그대로 둡니다.WCF 서비스에 대한 익명 액세스 허용 옵션을 선택하고 다음을 클릭합니다. 이 옵션은 만든 가상 디렉터리에 대한 익명 액세스를 허용합니다. 이 연습에서는 인증이 없는 전송 보안 모드를 사용하므로 이 마법사에서 만들 웹 응용 프로그램에 대해 익명 인증을 허용하려면 이 옵션을 선택해야 합니다.
WCF 서비스 요약 페이지에서 만들기를 클릭하여 WCF 서비스를 만듭니다. 이 단계에서는 지정된 웹 디렉터리를 통해 사용할 수 있는 지정된 오케스트레이션에 대한 수신 포트를 만듭니다.
BizTalk WCF 서비스 게시 마법사 완료 페이지에서 마침을 클릭합니다.
샘플 BizTalk 응용 프로그램을 설정하려면
시작을 클릭하고 모든 프로그램, MicrosoftBizTalk Server 차례로 가리킨 다음 BizTalk Server 관리를 클릭합니다.
BizTalk Server 관리 콘솔에서 애플리케이션, WCFBasicHttpReceiveAdapter, 오케스트레이션, DeliveryProcess 오케스트레이션을 마우스 오른쪽 단추로 클릭하고 속성을 클릭한 다음 다음과 같이 바인딩 정보를 구성합니다.
오케스트레이션 속성 대화 상자에서 바인딩을 클릭한 다음 호스트를 BizTalkServerApplication으로 설정합니다.
오케스트레이션 속성 대화 상자에서 바인딩할 DeliveryRequestPort의 수신 포트를 선택합니다. 이 연습에서는 이전 절차에서 BizTalk WCF 서비스 게시 마법사가 만든 수신 포트를 선택한 다음 확인을 클릭합니다.
BizTalk Server 관리 콘솔에서 WCFBasicHttpReceiveAdapter를 마우스 오른쪽 단추로 클릭하고 시작을 클릭한 다음 애플리케이션 시작 대화 상자에서 시작을 클릭합니다.
게시된 WCF 서비스를 호스팅하는 웹 응용 프로그램을 구성하려면
시작을 클릭하고 관리자 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 7.0 관리자를 클릭합니다.
IIS 관리자에서 사이트를 확장하고 기본 웹 사이트를 확장한 다음 BizTalk WCF 서비스 게시 마법사에서 만든 웹 애플리케이션 Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp을 확장합니다.
이 서비스를 실행할 응용 프로그램 풀을 만듭니다. 애플리케이션 풀을 마우스 오른쪽 단추로 클릭하고 애플리케이션 풀 추가를 클릭하고 애플리케이션 풀의 이름을 입력한 다음 확인을 클릭합니다.
애플리케이션 풀을 확장하고 방금 만든 애플리케이션 풀을 마우스 오른쪽 단추로 클릭한 다음 고급 설정을 선택합니다. 프로세스 모델 섹션에서 ID 필드 아래의 BizTalk Server 데이터베이스에 액세스할 수 있는 계정을 입력합니다.
IIS 관리자에서 콘텐츠 보기를 클릭합니다. 오른쪽 창에서 BizTalk WCF 서비스 게시 마법사가 만든 WCF 서비스 .svc 파일을 마우스 오른쪽 단추로 클릭한 다음 찾아보기를 클릭합니다. 그러면 인터넷 Explorer 열리고 실행 중인 WCF 서비스를 성공적으로 만들었을 때를 나타내는 페이지가 표시됩니다. 이 페이지에는 서비스 메타데이터 도구(svcutil.exe)를 통해 복사하여 프록시 코드를 검색하는 데 사용할 수 있는 전체 WSDL 주소와 서비스용 클라이언트 응용 프로그램을 만드는 데 사용할 수 있는 구성 파일도 포함되어 있습니다.
이전 단계에서 Internet Explorer에 표시된 페이지에서 전체 WSDL 주소가 포함된 SvcUtil.exe 명령줄을 클립보드에 복사합니다.
샘플 WCF 클라이언트 응용 프로그램인 WCFClient에 대한 프록시 클래스를 만들려면
WCF 클라이언트 샘플 애플리케이션이 WCF 서비스를 호출할 수 있도록 프록시 클래스를 만듭니다. 프록시가 반드시 필요한 것은 아니지만 수동으로 코드를 작성하는 것은 매우 복잡하므로 프록시를 만드는 것이 좋습니다. Visual Studio 명령 프롬프트를 열고 프록시 클래스 및 애플리케이션 구성 파일을 배치할 C:\WCFBasicHttpReceiveAdapter\WCFClient 폴더로 이동합니다.
이전 절차에서 복사한 전체 WSDL 주소로 svcutil.exe 명령줄을 붙여넣은 다음 Enter 키를 눌러 프록시 클래스 및 애플리케이션 구성 파일을 만듭니다. 이 명령줄은 프록시 클래스에 대해 BizTalkServiceInstance.cs 를 만들고 애플리케이션 구성 파일에 대한 output.config 만듭니다.
Visual Studio의 솔루션 탐색기 WCFClient를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기존 항목을 클릭합니다.
기존 항목 추가 대화 상자에서 WCFClient 폴더로 이동하고 형식의 파일 드롭다운 목록에서 모든 파일(*.*)을 선택하고 BizTalkServiceInstance.cs 및 output.config 파일을 선택한 다음 추가를 클릭합니다.
WCFClient 프로젝트의 경우 참조를 확장한 다음 WCFClient 프로젝트에 System.ServiceModel이 참조 중 하나로 있는지 확인합니다.
WCFClient 프로젝트를 확장하고output.config마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 클릭한 다음 새 이름으로App.config 입력합니다.
Program.cs를 두 번 클릭하여 Svcutil.exe에서 생성된 프록시 클래스를 사용하여 게시된 WCF 서비스를 호출하는 방법을 검토합니다. WCF 서비스를 인스턴스화하고 호출하는 호출은 Microsoft_Samples_BizTalk_WCFBasicHttpReceiveAdapter_BizTalkApp_DeliveryProcess_DeliveryRequestPortClient 클래스를 사용하여 코딩을 간단하게 수행할 때 로컬 호출인 것처럼 보입니다. 원격 WCF 서비스를 호출하는 데 필요한 추가 코드는 없습니다.
Visual Studio의 디버그 메뉴에서 디버깅하지 않고 시작을 클릭하여 WCFClient를 실행합니다. 클라이언트 코드는 DeliveryItem 메시지를 만들고 WCF 서비스를 호출하여 주소, ProductID 및 Amount를 전달합니다.
DeliveryItem deliveryRequestItem = new DeliveryItem(); deliveryRequestItem.Address = "One Microsoft Way"; deliveryRequestItem.ProductID = "00A120c"; deliveryRequestItem.Amount = "300"; DeliveryRequestPortClient deliveryProcessClient = new DeliveryRequestPortClient("BasicHttpBinding_ITwoWayAsync"); DeliveryItem1 deliveryConfirmation = deliveryProcessClient.Submit(deliveryRequestItem);
클라이언트가 게시된 WCF 서비스에서 응답 메시지를 다시 받으면 응답 메시지에 배달 확인 번호(ProductID 및 주소의 연결)가 표시됩니다.
deliveryRequestItem으로 호출된 전송 작업
배달 확인 번호가 다시 전송됨: 00A120c300One Microsoft Way
Press any key to continue . . .