2008-10-29 4 views
3

저는 바이너리 파일을 가져 와서 분리하고 분석하고 데이터를 데이터베이스에 저장하는 C# 콘솔 응용 프로그램을 작성하고 있습니다.Biztalk에서 콘솔 응용 프로그램을 실행할 수 있습니까?

새 바이너리 파일이 디렉터리에 배치 될 때 BizTalk를 사용하여 파일 이름/이름으로 응용 프로그램을 호출 할 때 관측을 조율하고 싶습니다.

BizTalk가 명령 줄 프로그램을 실행할 수 있습니까?
명령 줄 매개 변수를 프로그램에 전달할 수 있습니까?
마지막 실행이 성공 또는 실패라고 BizTalk에 어떻게보고합니까?


키스를 주셔서 감사합니다

답변

3

내가 이 일을 권장하지 것이다 그러나 이론적으로는 표현 모양 내에서 쉘 명령을 사용하여 EXE 파일을 실행할 수 있습니다 :

System.Diagnostics.Process.Start(@"C:\yourPath\yourExecutable.exe")

System.Diagnostics 네임 스페이스 BizTalk 2006에서 사용할 수 있습니다, 나는 '돈 BizTalk 2004 (BizTalk 2004에는 사용 가능한 System 네임 스페이스의 매우 제한된 하위 집합이 있음)에서 사용할 수 있다고 생각합니다.

반환 값을 가져 오는 것이 확실하지 않지만 매개 변수를 제공 할 수 있어야합니다.

C# 셸 명령에 대한 일부 참조는 herehere입니다.

  1. 는 BizTalk를 사용하지 마십시오 :

    는 개인적으로 사용 가능한 세 가지 더 나은 옵션이 있습니다 생각합니다.

    캠벨이 제안했듯이 대신 Windows 서비스를 사용하십시오.

    기존의 BizTalk 프레임 워크 (로깅,보고 등 ...)를 활용하거나 BizTalk가 수행 할 워크 플로에 다른 작업이있는 경우에만 BizTalk를 사용하십시오. (모든 것을 하나의 플랫폼에 집어 넣는 것에 대한 논쟁이 있습니다. 한 가지만 위해 BizTalk을 사용한다면, 모든 것을 위해 if를 사용하십시오.하지만 그것은 다른 대화입니다).

  2. 슈레더의 논리를 콘솔 응용 프로그램과 BizTalk에서 호출 할 수있는 C# 클래스 라이브러리로 리 팩터합니다.

    BizTalk에서 클래스 라이브러리를 호출하면 실행 파일을 호출하는 것이 훨씬 쉽고 깔끔하게 수행 할 수 있습니다.

    오케스트레이션에서 서명 및 GACed 어셈블리를 참조하기 만하면 (오케스트레이션 변수로 생성) 표현식 모양에서 직접 호출 할 수 있습니다.

    here은 기본 사항을 다루는 기사입니다. 추악한 세부 사항으로 들어가거나 모범 사례에 대한 토론을 제공하지 않습니다. Professional BizTalk Server 2006은 좋은 책입니다.

  3. Campbell이 말했듯이 대부분의 기능은 순수한 BizTalk 기능으로 수행 할 수 있습니다.

아마도 옵션 2와 3이 원하는 것이 무엇이 가장 좋을까요? 이미 가지고있는 바이너리 파쇄 논리를 C# 클래스 라이브러리에 넣고 파일 모니터링, 오류 알림, 추적 및 다른 프로세스와의 통합을 담당하는 BizTalk 오케스트레이션에서이 논리를 호출합니다.

+0

고맙습니다. 우리는 오늘 회의가 있었고 단지 이것을하기로 결정했습니다. 나는 이미 자신의 .DLL로 분쇄기를 작성했으며 .EXE는 .DLL에 대한 래퍼/로더 일 뿐이었다. 이제 BizTalk 및 인터페이스가 분쇄기에 사용될 어댑터 DLL을 작성하려고합니다. 링크를 가져 주셔서 감사합니다. –

+0

또 다른 제안 ('간단하지 않은'영역으로 들어가는 것)은 사용자 정의 어댑터 (BT 어댑터 프레임 워크에 연결)로 슈레더를 구현하는 것입니다. 이는 무료로 많은 것을 제공합니다. 표현의 형태는 그렇지 않다. –

1

항상 프로덕션 환경에서 설정 백그라운드에서 실행 될 수 있도록에 BizTalk 서버 제품입니다.

BizTalk를 사용하려면 파일을 놓을 위치를보고 설정하고 분석하고 BizTalk 워크 플로 내에서 데이터베이스에 모든 것을 기록하도록 설정하는 것이 좋습니다. . 그게 정확히 설계된 것입니다. 워크 플로에는 알림이 포함될 수도 있고 BizTalk 추적을 사용하여 작업이 성공적으로 수행되었는지 확인할 수도 있습니다. 작성해야 할 수도있는 유일한 사용자 정의 코드는 바이너리 파일을 XML로 변환하는 역 어셈블러입니다. 이는 수신 파이프 라인 구성 요소로 수행됩니다.

BizTalk는 모든 작업을 수행하는 경우 비용이 많이 드는 옵션입니다. 나 자신의 Windows 서비스를 작성하고 FileSystemWatcher을 사용하여 파일이 작성되었다는 사실을 가로 채고 C# 코드에서 처리하도록 제안합니다.

+0

Biztalk는 이미 다른 작업 (HL7)에 사용되고 있습니다. 이 파일을 추출하는 엔진은 이미 작성되었습니다. 나는 BizTalk을 사용하여 파일을 응용 프로그램에 가져 와서 오류 코드가 반환되었는지보고하려고했습니다. 고맙습니다. –

1

BizTalk는 C# 응용 프로그램을 호출하는 경우 상자가있는 경우 종류가 다릅니다. 과거에는 이와 같은 문제가 있었으며 콘솔 응용 프로그램을 웹 서비스로 작성하거나 포장했습니다. 이렇게하면 BizTalk은 파일을 가져 와서 응용 프로그램 웹 서비스 응용 프로그램으로 보냅니다. 이것은 우리가 BizTalk를 사용하는 방법의 '스위스 육군 칼'부분에 해당됩니다. 이것은 정말로 불충분하다. 그러나 BizTalk는 추적, BAM, farside 오류 대기 등을 제공합니다. 또한 보관 위치에 파일을 복사하고 웹 서비스에서 결과 코드를 읽고 SMTP 어댑터를 사용하여 성공 또는 실패 알림을 보냅니다.

희망 사항이 있으면 아이디어를 얻을 수 있습니다. 행운을 빌어 요!

관련 문제