是否可以在不同的BizTalk 2006应用程序中使相同的程序集行为不同?
例如,在程序集中是否可以以某种方式访问使用该实例的BizTalk应用程序Id或Name,然后使其对不同的BizTalk应用程序具有不同的行为?
或者可以用其他方式完成,而不是对程序集进行版本控制吗?
答案 0 :(得分:3)
你到底想要完成什么?也就是说,你试图引入什么样的行为差异?
事情的真相是,没有万无一失的方法可以找出你的代码正在执行的BizTalk应用程序,因为BizTalk中的Application概念纯粹是一个管理工件。在某些受限制的情况下,您可以使用ExplorerOM转到管理数据库并执行一些查询以确定工件(端口,编排)所属的应用程序,但它可能很慢并且可能需要您调整安全性。
根据您是否有通过消息传递或业务流程调用跨越应用程序边界的消息,它也可能无法提供预期的结果。
也许如果你可以分享更多关于你需要的东西,我可以尝试提供更好的建议!
答案 1 :(得分:0)
我认为不同组件的版本听起来就像你正在寻找的那样?
答案 2 :(得分:0)
我通过版本控制解决了这个问题,我没有找到其他办法。
我希望将同一个biztalk应用程序的几个“实例”一起运行,但使用不同的配置(不仅仅是不同的绑定)来模拟不同的环境,但使用相同的biztalk实例。因此,它可以与在同一台机器中复制的其他软件进行交互,也可以与代表自己相同环境和不同数据库的外部系统进行交互。
问题是我不得不使用不同的连接字符串来定义不同的DB,每个DB都用于BTSNTSvc.Exe.Config文件中的每个环境。但由于程序集是相同的,我无法让每个biztalk应用程序使用它自己的连接字符串,除非每个程序集在运行时知道如何做出决定(例如,知道它属于哪个环境)。
现在,我有编译和部署多个版本的脚本,并更改要使用的连接字符串的名称以及程序集的版本(使用编译符号)。
感谢您的帮助。