【发布时间】:2011-10-12 08:37:22
【问题描述】:
我计划为 MS CRM 和 BizTalk 2010 集成启动 POC。
在此之前我想知道是否有人使用 BizTalk 2010 与 MS CRM 集成?
【问题讨论】:
标签: dynamics-crm-2011 biztalk dynamics-crm-4 biztalk-2010
我计划为 MS CRM 和 BizTalk 2010 集成启动 POC。
在此之前我想知道是否有人使用 BizTalk 2010 与 MS CRM 集成?
【问题讨论】:
标签: dynamics-crm-2011 biztalk dynamics-crm-4 biztalk-2010
我们正在使用 BizTalk 2010 调用 Microsoft Dynamics CRM 2011 组织服务。
基本上有两种方法可以做到这一点,但我致力于寻找其他方法。
第一种方法是使用 SDK 附带的 BizTalk 架构以及基于 C# 的外部类库帮助程序。这种情况在互联网上很清楚。请注意,此方案不允许 BizTalk 调用 CRM 早期绑定类(帐户等)。它只允许使用通用的 CrmEntity 对象,这使得处理映射成为一种痛苦的体验。
外部助手是处理 LiveID 联合特性所必需的。
第一种方法的优点是简单。但是您不能使用 BizTalk 中的本机 CRM 类型。
第二种方法是以某种方式解决上述问题,至少部分解决。首先,它涉及构建一个 WCF 外观,该外观公开本地早期绑定的 CRM 对象(例如 Account 等)并处理 LiveID 联合。
在生成时,早期绑定的类是不可序列化的,因此它们不能成为 WCF 接口(和服务)的一部分。这可以通过使用DataContractAttribute 装饰每个属性来解决。此外,只读属性需要添加一个额外的空集 {}。请注意,在生成的类中需要进行大量此类(简单)更改。幸运的是,作为一个生成的文件,语法是一致的,几个简单的 RegEx 就可以了。
在 BizTalk 端,您将使用 WCF 外观元数据以生成 BizTalk 架构。不幸的是,您最终会得到巨大的数兆字节文件和交叉依赖的架构。
所以,首先,你必须打破循环依赖。在我的例子中,我必须添加一个额外的模式来保存“合同”和“元数据”模式都使用的共享复杂类型。
接下来,您不能轻易地在地图中使用生成的庞大架构。首先打开地图(或单独的模式)需要很长时间。其次,编译器会阻塞,Visual Studio 会崩溃。
要解决这个问题,您需要手动更改地图的 .btm XML 文件中的 GenerateDefaultFixedNodes 属性。
不过,我建议使用生成模式的简化版本,其中只包含属于映射一部分的节点和结构。由于大多数节点都是可选的,因此生成的对 WCF 外观的 XML 请求最终将是相同的。
第二种方法的优点是能够处理来自 BizTalk 的本地 CRM 类型。但起初实施可能听起来很复杂。通过适当的自动化,它在实践中运行良好,即使面对 CRM 方面的变化。
但是,没有一种方法感觉是“原生”BizTalk 集成。这就是为什么我正在努力寻找另一种方法,也许是通过构建一个专用的自定义绑定,但到目前为止还没有成功。
希望这会有所帮助。
【讨论】: