请原谅可能出现的任何刺激。
所以在使用早期绑定类一段时间后,我们的团队已经发现了一些使早期绑定类无用的缺点。
问题:
那么它们何时有用?关于这个东西的MS文档在哪里?除了如何生成它们之外。
谢谢, 乔恩
答案 0 :(得分:5)
我们主要使用早期绑定类型进行开发。如果您开发业务逻辑(类型安全,......),它们就有意义。
然而,后期限制方法仍有空间。当我们必须保持通用并且无法预测目标系统的外观时,我们正在使用后期绑定开发。或者,如果您开发了一些可以以多种方式配置的可重用组件(如数字生成器)。
- 慢,因为它必须连接到ws并越过http,即使如此 它在与系统其余部分相同的过程中运行。
在这一点上,早期和晚期编程之间没有区别。将后期实体更新为.Update()
并在数据上下文中调用SaveChanges()
的区别在哪里?当您在插件中使用早期绑定类时,不必显式调用Web服务。
- 在插件中附加到CREATE消息时导致sql死锁。
这不是由早期绑定类型引起的。这种行为还有其他原因。
- 对系统和类的任何轻微更改都需要重新生成并且事情会中断。
我也不能同意这一点。有一个班级
之间的区别在哪里Account.Foo = "some data here";
或使用实体
Entity["new_foo"] = "some data here";
如果您在new_foo
处进行了更改,则必须使用早期和晚期绑定类来处理这些更改。但是,如上所述,如果您不知道使用早期绑定类的目标环境,则在生成的属性引用的字段不可用时可能会导致问题。
答案 1 :(得分:4)
早期的约束有它的位置。我们在webservice teirs中使用它。它使得开发迭代更加快速(例如,所有内容都是强类型的,因此以魔法字符串为中心的调试较少。)
你提到了:
•对系统和类的任何轻微更改都需要重新生成并且中断。
这实际上是早期绑定的用例。在后期,您更倾向于坚持在运行时而不是在编译时才会注意到的重大更改。在编译时修复可以节省能源。
您还提到了:
•在插件中附加到CREATE消息时导致sql死锁。
在我看过的所有插件示例中,后期绑定是事实上的标准。在我看来,你不会想要创建那么多的东西(特别是如果你正在生成所有实体)在一个轻量级模块(如插件)中徘徊。从调试的角度来看,Execute方法中应该覆盖的地理位置要少得多。如前所述,这减轻了早期约束的主要原因。
因此,如果您正在调用系统外的实体(例如在ESB或其他一些此类商业领域),那么早期约束是可行的方法。
这完全取决于我过去几个月在dynamcis-crm-2011开发的经验。你的milage可能会有所不同。