Command line Biztalk能否运行控制台应用程序?

Command line Biztalk能否运行控制台应用程序?,command-line,console,biztalk,Command Line,Console,Biztalk,我正在编写一个C#console应用程序,它将一个二进制文件撕成碎片,进行分析,并将数据存储到数据库中 我们希望使用BizTalk来协调在目录中放置新二进制文件时的监视,并使用要解析的文件名调用我的应用程序 BizTalk能否运行命令行程序? 它能将命令行参数传递给程序吗? 我如何向BizTalk报告上次运行是成功还是失败 谢谢你, KeithBiztalk是一种服务器产品,因此在生产环境中设置它时,它将始终在后台运行 我建议,如果您想使用BizTalk,您可以将其设置为监视文件将被删除的位置,

我正在编写一个C#console应用程序,它将一个二进制文件撕成碎片,进行分析,并将数据存储到数据库中

我们希望使用BizTalk来协调在目录中放置新二进制文件时的监视,并使用要解析的文件名调用我的应用程序

BizTalk能否运行命令行程序?
它能将命令行参数传递给程序吗?
我如何向BizTalk报告上次运行是成功还是失败

谢谢你,

Keith

Biztalk是一种服务器产品,因此在生产环境中设置它时,它将始终在后台运行

我建议,如果您想使用BizTalk,您可以将其设置为监视文件将被删除的位置,将其拆开,进行分析,然后写入数据库,所有这些都在BizTalk工作流中进行。这正是它被设计用来做的。工作流还可以包含通知,或者您可以仅使用BizTalk跟踪来确认操作是否成功。您可能需要编写的唯一自定义代码是二进制文件的反汇编程序,以便将其转换为XML。这将作为接收管道组件完成


如果这就是你要做的,BizTalk就是一个非常昂贵的选择。我建议您编写自己的Windows服务,并使用截获文件已写入的事实,然后在C代码中进行处理。

我不建议这样做,但理论上您可以在表达式形状中使用shell命令运行exe:

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

System.Diagnostics
命名空间在BizTalk 2006中可用,我认为它在BizTalk 2004中不可用(BizTalk 2004中可用的系统命名空间子集非常有限)

我不确定是否要返回返回值,但您肯定能够提供参数

有关C#shell命令的一些参考资料可以在下面找到并找到

我个人认为你有三个更好的选择:

  • 不要使用BizTalk

    正如坎贝尔所建议的那样,改用windows服务

    如果您希望利用现有的BizTalk框架(日志记录、报告等),或者BizTalk将要执行的工作流中有其他任务,则只能将BizTalk用于类似的操作。(将所有内容都放在一个平台上是有争议的——如果您使用BizTalk作为一个内容,那么使用if作为所有内容,但这是一个不同的对话)

  • 将碎纸机的逻辑重构为控制台应用程序和BizTalk都可以调用的C#类库

    从BizTalk中调用类库比调用可执行文件要简单得多

    只需从业务流程引用已签名和已分配的程序集(将其创建为业务流程变量),然后就可以直接从表达式形状调用它

    是一篇关于这方面的文章,涵盖了基础知识。它并没有涉及很多丑陋的细节,也并没有提供关于最佳实践的讨论。这是一本很好的书

  • 正如坎贝尔所说,大部分这可能都可以通过纯BizTalk功能完成

  • 我想,也许选择2和3的组合最适合你想要的。将已有的二进制分解逻辑放入C#类库中,并从负责文件监视、错误通知、跟踪以及与其他进程集成的BizTalk编排中调用该逻辑。

    BizTalk调用C#应用程序有点不合时宜。我们在过去遇到过类似的问题,我们将控制台应用程序编写或包装为web服务。这样,Biztalk将拾取要删除的文件并将其发送到app web service应用程序。这属于我们如何使用BizTalk的“瑞士军刀”部分。这真是小题大做。但是,BizTalk确实提供了跟踪、BAM、排队等待远端故障等功能。此外,我们还将文件复制到存档位置,从web服务读取结果代码,并使用SMTP适配器发送成功或失败通知


    希望这能给你一些想法。祝你好运

    Biztalk已就位并正在用于其他操作(HL7)。执行此文件翻录的引擎已写入。我只是尝试使用BizTalk将文件带到应用程序,并报告是否返回了任何错误代码。谢谢,谢谢。我们今天开了个会,决定就这样做。我已经把碎纸机写成了自己的.DLL,而.EXE只是.DLL的包装器/加载器。我现在将尝试将BizTalk和接口使用的适配器DLL写入碎纸机。感谢您的链接。另一个建议(进入“不平凡”领域)是将碎纸机实现为一个自定义适配器(插入BT适配器框架),它为您提供了许多免费的东西,而仅仅从表达式形状调用.dll是没有的