4단계: HeaderHelper 프로젝트 만들기
이 단계에서는 .NET 클래스 라이브러리를 만듭니다. 프라이빗 프로세스 오케스트레이션이 들어오는 메시지를 받으면 HeaderHelper 라이브러리는 문서 변환이 필요한지 여부와 필요한 경우 해당 변환을 수행합니다. 이렇게 하면 오케스트레이션이 다양한 버전의 RNIF(RosettaNet 구현 프레임워크) 문서에서 작동할 수 있습니다. 또한 3A2 응답 메시지를 보낼 때 HeaderHelper 라이브러리는 메시지를 전송하기 전에 추가 문서 변환을 수행합니다.
HeaderHelper 프로젝트를 만들려면
Visual Studio의 솔루션 탐색기 Contoso 솔루션을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 프로젝트를 클릭합니다.
새 프로젝트 추가 대화 상자의 프로젝트 형식 창에서 Visual C#을 선택합니다.
템플릿 창에서 클래스 라이브러리 템플릿을 선택합니다.
이름 상자에 HeaderHelper를 입력한 다음 확인을 클릭하여 프로젝트를 만듭니다.
솔루션 탐색기 HeaderHelper 프로젝트에서 Class1.cs 파일을 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 클릭하고 HeaderHelper.cs를 입력한 다음 Enter 키를 누릅니다.
도우미 클래스를 만들려면
솔루션 탐색기 HeaderHelper 프로젝트를 확장한 다음 HeaderHelper.cs 노드를 두 번 클릭하여 HeaderHelper 원본 파일을 엽니다.
소스 파일에 다음 코드를 입력하고 모든 기존 코드를 덮어씁니다.
using System; using System.Xml; namespace ContosoPriceAndAvailability { public class Helper { static public XmlDocument NormalizeHeader( XmlDocument curPip ) { string strInput = curPip.OuterXml; try { XmlDocument xDoc = new XmlDocument(); strInput = strInput.Replace("<!DOCTYPE Pip3A2PriceAndAvailabilityQuery SYSTEM \"3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\"[]>",String.Empty); strInput = strInput.Replace("<Pip3A2PriceAndAvailabilityQuery>","<Pip3A2PriceAndAvailabilityQuery xmlns=\"http://schemas.microsoft.com/biztalk/btarn/2004/3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\">"); strInput = strInput.Replace("xml:",String.Empty); strInput = strInput.Replace("b:",String.Empty); strInput = strInput.Replace("lang:",String.Empty); strInput = strInput.Replace("ns1:",String.Empty); xDoc.LoadXml(strInput); return xDoc; } catch(Exception ex) { System.Diagnostics.Debug.Write( ex.Message ); throw ex; } } static public string ReturnSCWithDocType( XmlDocument xmlDoc ) { try { string sResponse = xmlDoc.InnerXml; sResponse=sResponse.Replace("ns0:",String.Empty); xmlDoc.LoadXml(sResponse); xmlDoc.DocumentElement.RemoveAllAttributes(); sResponse = xmlDoc.InnerXml; sResponse = sResponse.Insert(0,"<!DOCTYPE Pip3A2PriceAndAvailabilityResponse SYSTEM \"3A2PriceAndAvailabilityResponseMessageGuideline_v1_3.dtd\">"); sResponse = sResponse.Replace("ns0:",String.Empty); sResponse = sResponse.Replace("b:",String.Empty); sResponse = sResponse.Replace("lang:",String.Empty); sResponse = sResponse.Replace("ns1:",String.Empty); return sResponse; } catch(Exception ex) { throw ex; } } } }
파일 메뉴에서 모두 저장을 클릭합니다.
HeaderHelper 프로젝트에 강력한 명명된 어셈블리를 만들려면
솔루션 탐색기 HeaderHelper 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
HeaderHelper 속성 페이지 대화 상자의 HeaderHelp 속성 창의 왼쪽 창에서 서명을 선택합니다.
오른쪽 창에서 어셈블리 서명을 클릭합니다.
강력한 이름 키 파일 선택 텍스트 상자를 클릭한 다음 드롭다운 목록에서 찾아보기를> 선택합니다<.
파일 선택 대화 상자에서 Contoso 어셈블리의 위치로 이동하고 FabConPriceAvail.snk를 두 번 클릭합니다.
파일 메뉴에서 모두 저장을 클릭합니다.
솔루션 탐색기 HeaderHelper 프로젝트를 확장하고 속성 노드를 확장한 다음 AssemblyInfo.cs 노드를 두 번 클릭하여 AssemblyInfo.cs 원본 파일을 엽니다.
AssemblyInfo.cs 소스 파일에서 AssemblyCulture 특성 다음 줄에 다음 코드를 입력합니다.
[assembly: AssemblyKeyFile("../../../FabConPriceAvail.snk")]
파일 메뉴에서 모두 저장을 클릭합니다.
HeaderHelper 프로젝트를 빌드하고 배포하려면
솔루션 탐색기 HeaderHelper 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 빌드를 클릭합니다.
Visual Studio 2012 명령 프롬프트를 시작합니다.
명령 프롬프트에서 HeaderHelper 프로젝트 출력 디렉터리(\Bin\Debug 폴더)의 위치로 이동합니다.
명령 프롬프트에서 gacutil /if HeaderHelper.dll 입력하고 Enter 키를 눌러 HeaderHelper 어셈블리를 전역 어셈블리 캐시에 설치합니다.