문제

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

새 바이너리 파일이 디렉토리에 배치 될 때 Biztalk를 사용하여 시청을 오케스트레이션하고 파일 이름/이름을 구문 분석 할 때 내 응용 프로그램을 호출하려고합니다.

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

고맙습니다,
키이스

도움이 되었습니까?

해결책

나는 할 것이다 ~ 아니다 이렇게하는 것이 좋습니다. 그러나 이론적으로 표현식 형태 내에서 쉘 명령을 사용하여 EXE를 실행할 수 있습니다.

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

그만큼 System.Diagnostics 네임 스페이스는 Biztalk 2006에서 사용할 수 있으며 Biztalk 2004에서 사용할 수 있다고 생각하지 않습니다 (Biztalk 2004는 사용 가능한 시스템 네임 스페이스의 매우 제한된 하위 집합이있었습니다).

리턴 값을 되 찾는 것에 대해 잘 모르겠지만 확실히 매개 변수를 제공 할 수 있어야합니다.

C# shell 명령에 대한 일부 참조는 찾을 수 있습니다. 여기 그리고 여기.

나는 개인적으로 당신에게 이용할 수있는 세 가지 더 나은 옵션이 있다고 생각합니다.

  1. Biztalk를 사용하지 마십시오.

    Campbell이 제안한 것처럼 Windows 서비스를 대신 사용하십시오.

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

  2. 콘솔 애플리케이션과 Biztalk가 호출 할 수있는 C# 클래스 라이브러리로 슈레더의 논리를 리팩토링하십시오.

    Biztalk에서 클래스 라이브러리를 호출하는 것은 실행 파일을 호출하는 것을 깨끗하고 강력하게 수행하는 것이 훨씬 쉽습니다.

    오케스트레이션에서 서명 및 게스트 어셈블리를 참조하면 (오케스트레이션 변수로 만들면) 표현 형태에서 직접 호출 할 수 있습니다.

    여기 이것에 대한 기사는 기본 사항을 다루는 기사입니다. 그것은 추악한 세부 사항을 많이 사용하거나 모범 사례에 대한 토론을 제공하지 않습니다. Professional Biztalk Server 2006 그것에 대한 좋은 책입니다.

  3. Campbell이 말했듯이,이 중 대부분은 아마도 순수한 biztalk 기능으로 수행 될 수 있습니다.

아마도 옵션 2와 3의 혼합이 당신이 원하는 것에 가장 적합 할 것이라고 생각합니다. 이미 가지고있는 바이너리 파쇄 로직을 C# 클래스 라이브러리에 넣고 파일 모니터링, 오류 알림, 추적 및 다른 프로세스와의 통합을 처리하는 Biztalk 오케스트레이션 내에서이를 호출하십시오.

다른 팁

Biztalk는 서버 제품이므로 프로덕션 환경에서 설정하면 항상 백그라운드에서 실행됩니다.

Biztalk를 사용하려면 파일이 삭제 될 위치를 보려고 설정하고 찢어 버린 다음 분석 한 다음 Biztalk 워크 플로우 내에 데이터베이스에 쓰기를 설정하는 것이 좋습니다. 정확히 그것이 설계된 것입니다. 워크 플로에는 알림이 포함되어 있거나 Biztalk 추적을 사용하여 작업이 성공했는지 확인할 수 있습니다. 작성해야 할 유일한 사용자 정의 코드는 이진 파일을 XML로 전환 할 수있는 분리기입니다. 이것은 수신 파이프 라인 구성 요소로 수행됩니다.

그게 당신의 모든 일이라면, Biztalk는 이것에 대한 비싼 옵션의 도대체입니다. 나만의 Windows 서비스를 작성하고 사용하는 것이 좋습니다. FileSystemWatcher 파일이 작성되었다는 사실을 가로 채고 C# 코드에서 처리를 수행합니다.

C# 응용 프로그램을 호출하는 Biztalk는 상자가 있다면 일종의 출시입니다. 우리는 과거에 이와 같은 문제가 있었고 웹 서비스로 작성되거나 래핑 된 콘솔 응용 프로그램이 있습니다. 이런 식으로 Biztalk는 파일을 삭제하여 앱 웹 서비스 애플리케이션으로 보냅니다. 이것은 우리가 Biztalk를 사용하는 방법의 '스위스 군용 나이프'부분에 속합니다. 이것은 실제로 과잉입니다. 그러나 Biztalk는 추적, BAM, Farside Failure에 대한 대기열 등과 같은 것을 제공합니다. 또한 파일을 보관 위치로 복사하고 웹 서비스의 결과 코드를 읽고 SMTP 어댑터를 사용하여 성공 또는 실패 알림을 보냅니다.

이것이 당신에게 몇 가지 아이디어를 제공하기를 바랍니다. 행운을 빌어 요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top