使用Web服务与使用Microsoft CRM 4.0中的动态实体

时间:2012-08-02 10:14:41

标签: .net dynamics-crm-2011 dynamics-crm-4

我正在和一位同事讨论在插件或工作流程中使用webservices的问题

他说使用动态entites是microsoft建议的最佳实践,因为Web服务需要身份验证。

我认为使用wsdl和强类型实体更清晰,更不容易出错,并且身份验证延迟可以忽略不计

另外,我们计划更新到CRM 2011

那么,我们哪一个是对的?

2 个答案:

答案 0 :(得分:1)

动态实体和强类型实体都需要身份验证。我不认为两者之间的身份验证有延迟。

如果您正在编写可应用于其他CRM组织的通用代码(作为ISV),那么动态实体就是您的选择。否则我会建议强类型实体是更好的选择,因为代码更清晰,更可读,如你所说。

这两组代码都需要重新使用CRM 2011。

一切顺利,

答案 1 :(得分:1)

强类型和动态实体都使用Web服务,这两者都需要身份验证,因此没有真正的区别。

在升级到Crm 2011方面,2011年的网络服务发生了变化,所以如果你想重新编码,那么两者都必须重新编码。或者您可以继续使用Crm 4 Web服务而不是重新编码。所以再没有真正的区别。

我找不到微软的任何内容,说他们更喜欢动态实体。在Best Practices for Developing with Microsoft Dynamics CRM 2011中,他们实际上会根据您的情况使用两者。

  

当代码必须处理实体时,请使用Entity类   编写代码时未知的属性。   但是,这种灵活性有一个缺点,因为你无法验证   编译时的实体和属性名称。如果您的实体是   已经在代码时定义,你应该使用早期绑定类型   您可以使用CrmSvcUtil工具生成。更多   信息,请参阅使用代码中的早期绑定实体类。

我认为这主要取决于风格和偏好(没有人可以做对) - 我个人更喜欢动态实体。

强力打字 - 优点:

  • 智能感知
  • 设计\编译时间验证
  • 您不必检查所有实体,字段和关系名称的Crm
  • 编译的可执行文件包含调用类型的属性,方法和事件所需的代码

强烈打字 - 缺点:

  • 您必须生成WSDL(并在每次Crm更改时继续重新生成)
  • 上次检查时,生成的类没有通过代码分析
  • 它可能有点'重手',例如用动态实体创建一个新记录通常是几行。必须生成数百个强类型类来编写几行,这似乎有点过分。