3

バイナリ ファイルを取得し、それを分割して分析し、データをデータベースに格納する C# コンソール アプリケーションを作成しています。

BizTalk を使用して、新しいバイナリ ファイルがディレクトリに配置されたときに監視を調整し、解析するファイル名を使用してアプリケーションを呼び出したいと考えています。

BizTalk はコマンド ライン プログラムを実行できますか?
コマンド ライン パラメータをプログラムに渡すことはできますか?
最後の実行が成功したか失敗したかを BizTalk に報告するにはどうすればよいですか?

ありがとう、
キース

4

3 に答える 3

3

これを行うことはお勧めしませんが、理論的には、式の形状内でシェル コマンドを使用して exe を実行できます。

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

名前System.Diagnostics空間は BizTalk 2006 で使用できますが、BizTalk 2004 では使用できないと思います (BizTalk 2004 では、使用可能な System 名前空間のサブセットが非常に制限されていました)。

戻り値を返すかどうかはわかりませんが、パラメーターを提供できるはずです。

C# シェル コマンドに関する参考文献は、こちらこちらにあります。

個人的には、次の 3 つのより良いオプションが利用できると思います。

  1. BizTalk を使用しないでください。

    キャンベルが示唆するように、代わりに Windows サービスを使用してください。

    既存の BizTalk フレームワーク (ログ、レポートなど) を活用する場合、または BizTalk が実行するワークフローに他のタスクがある場合にのみ、このような目的で BizTalk を使用してください。(すべてを 1 つのプラットフォームに入れることについては議論があります。1 つのことに BizTalk を使用する場合は、すべてに if を使用しますが、それは別の会話です)。

  2. シュレッダーのロジックを、コンソール アプリケーションと BizTalk の両方から呼び出せる C# クラス ライブラリにリファクタリングします。

    BizTalk からクラス ライブラリを呼び出すことは、実行可能ファイルを呼び出すよりもはるかに簡単に、クリーンかつ堅牢に行うことができます。

    オーケストレーションから署名済みで GAC 済みのアセンブリを参照する (オーケストレーション変数として作成する) だけで、式の形状から直接呼び出すことができます。

    これは、基本をカバーする記事です。醜い詳細には触れず、ベスト プラクティスについての議論も提供しません。Professional BizTalk Server 2006は、そのための優れた本です。

  3. キャンベルが言ったように、これらのほとんどはおそらく純粋な BizTalk 機能で実行できます。

おそらく、オプション 2 と 3 の組み合わせが、あなたが望むものに最適だと思います。既にあるバイナリ シュレッディング ロジックを C# クラス ライブラリに配置し、ファイルの監視、エラー通知、追跡、および他のプロセスとの統合を処理する BizTalk オーケストレーション内からこれを呼び出します。

于 2008-10-29T21:32:02.073 に答える
1

Biztalkはサーバー製品であるため、実稼働環境でセットアップすると、常にバックグラウンドで実行されます。

BizTalkを使用する場合は、ファイルがドロップされる場所を監視するように設定し、ファイルを分解して分析し、すべてBizTalkワークフロー内でデータベースに書き出すことをお勧めします。それはまさにそれがするように設計されていることです。ワークフローに通知を含めることも、BizTalkトラッキングを使用して操作が成功したかどうかを確認することもできます。作成する必要があるかもしれない唯一のカスタムコードは、バイナリファイルをXMLに変換するための逆アセンブラです。これは、受信パイプラインコンポーネントとして実行されます。

それがすべてあなたのしていることなら、BizTalkはまさにこれのための高価なオプションの一体です。独自のWindowsサービスを作成し、FileSystemWatcherを使用して、ファイルが書き込まれたという事実を傍受し、C#コードで処理を実行することをお勧めします。

于 2008-10-29T16:34:50.033 に答える
1

BizTalk が C# アプリケーションを呼び出すのは、そのボックスの場合は一種のアウトです。過去にこのような問題が発生し、コンソール アプリケーションを Web サービスとして作成またはラップしました。このようにして、Biztalk はドロップされたファイルを取得し、それをアプリ Web サービス アプリケーションに送信します。これは、BizTalk の使用方法の「スイス アーミー ナイフ」部分に該当します。これは本当にアンダーキルです。ただし、BizTalk は追跡、BAM、ファーサイド エラーのキューイングなどを提供します。さらに、ファイルをアーカイブの場所にコピーしたり、Web サービスから結果コードを読み取ったり、SMTP アダプターを使用して成功または失敗の通知を送信したりしました。

これがあなたにいくつかのアイデアを与えることを願っています。頑張ってください!

于 2008-12-01T03:07:07.977 に答える