我计划为MS CRM和BizTalk 2010集成启动POC。
在此之前,我想知道是否有人使用BizTalk 2010与MS CRM集成?
答案 0 :(得分:2)
我们正在使用BizTalk 2010来调用Microsoft Dynamics CRM 2011组织服务。
基本上有两种方法可以做到这一点,但我会致力于找到其他人。
第一种方法是使用SDK附带的BizTalk架构以及基于外部C#的类库助手。互联网上有这种情况。请注意,此方案不允许BizTalk调用CRM早期绑定类(帐户等)。它只允许使用通用CrmEntity对象,这使得处理映射成为一种痛苦的经历。
外部帮助程序是处理LiveID联合身份特性所必需的。
第一种方法的优点是简单。但是您不能使用BizTalk中的本机CRM类型。
第二种方式是以某种方式解决上述问题,至少部分解决。首先,它涉及构建一个WCF外观,它暴露本地早期绑定的CRM对象(如帐户等)并处理LiveID联合。
生成时,早期绑定的类不可序列化,因此它们不能成为WCF接口(和服务)的一部分。这可以通过使用DataContractAttribute装饰每个属性来解决。此外,只读属性需要添加一个额外的空集{}。请注意,在生成的类中要进行大量此类(简单)更改。幸运的是,作为生成的文件,语法是一致的,并且会有一些简单的RegEx。
在BizTalk端,您将使用WCFfaçade元数据以生成BizTalk架构。不幸的是,你最终会得到巨大的多兆字节文件和交叉依赖模式。
因此,首先,您必须打破循环依赖关系。就我而言,我必须添加一个额外的模式来保存“合同”和“元数据”schémas使用的共享复杂类型。
接下来,您无法在地图中轻松使用巨大的生成模式。首先打开地图(或单独的模式)需要很长时间。其次,编译器会窒息而Visual Studio会崩溃。
要解决此问题,您需要手动更改地图的.btm XML文件中的GenerateDefaultFixedNodes属性。
然而,我建议使用生成的模式的简化版本,其中只包含作为映射一部分的节点和结构。由于大多数节点都是可选的,因此对WCF外观的结果XML请求将最终相同。
第二种方法的优点是能够处理来自BizTalk的本机CRM类型。但实施起初可能听起来很复杂。通过适当的自动化,在实践中它可以很好地工作,即使面对CRM方面的变化。
然而,这些方法都不是“原生”BizTalk集成。这就是为什么我正在寻找一种替代方法,也许是通过构建专用的自定义绑定,但到目前为止还没有成功。
请参阅my question here。
希望这有帮助。