博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MS CRM 2011的自定义和开发(9)——编程模型介绍
阅读量:5793 次
发布时间:2019-06-18

本文共 2475 字,大约阅读时间需要 8 分钟。

    Microsoft Dynamics CRM 2011的编程模型如下图所示。

    

    由上向下看,元数据以及业务数据经过业务逻辑层的处理、提供给微软CRM的WCF Service进行使用,在WCF Service的服务契约中,包含一组消息Message以及一组实体信息。

    客户端,可以通过REST方式或者SOAP方式,完成对WCF Service的调用与访问,当然,客户端的一切访问与操作,都需要是处于安全认证通过的基础之上进行的。

    编程模式包括有如下的几种方式:

早绑定模式:MS CRM 2011使用实体数据模型以及WCF数据服务技术,提供了一组工具,从而令操作、访问CRM系统的步骤得到大大的简化;同时,开发人员也可以通过LINQ,操作、访问CRM系统中的数据。使用早绑定模式,需要首先使用sdk中提供的CrmSvcUtil工具,连接目标CRM组织,由该工具生成特定于该组织的C#代码文件,将该文件添加到C#工程中,以便后续的开发使用,在每次组织的架构出现变化的时候,例如实体信息发生变化、字段信息发生变化、关联信息发生变化等等变化时,都需要重新使用CrmSvcUtil工具生成新的C#代码文件,重新编译引用了该文件的工程;

晚绑定模式:绑定的早与晚,就是在于程序被编译时是否进行类型检测,如果进行检测,那么就是早绑定模式,编译时不检测,直到运行时才进行检测,就是晚绑定模式。晚绑定模式下,只需要在Visual Studio的工程中,添加SDK中提供的Microsoft.Xrm.SDK装配件以及Microsoft.CRM.SDK装配件即可。晚绑定模式的优点在于,更利于团队协作。例如业务分析人员了解了需求,实施团队讨论了实现方案、设定了需要创建的实体、相关的字段信息以及需要的插件组件,此时,使用晚绑定模式,那么插件开发人员就可以依照方案中的字段规格表进行组件开发,而不必像早绑定模式下,需要等待应用顾问完成元数据定义后,再进行开发——因为晚绑定模式下,编译期是不会进行类型检测的。在应用顾问完成元数据定义(包括实体定义、字段定义、关联定义、表单定义等)后,开发顾问将编写的插件部署到CRM系统中,即可以进行联合的测试了。可见,晚绑定模式对于基于设计文档进行工作的团队型实施,是会节省大量的时间——只要设计文档出来,应用顾问负责元数据建设、开发顾问进行C#代码开发,二者可以并行工作,而不必串行、一步步的依次工作了;

REST模式:REST终端点为Ajax客户端以及Silverlight客户端提供了另一种访问CRM数据的接口。使用REST方式,就可以基于一个URI,完成对CRM数据的获取、更新、删除等等操作。而基于URI方式的访问,比使用SOAP方式,要简单很多,毕竟一个URI比一个SOAP头加上一个SOAP正文的内容要少很多拼接内容的。

WSDL模式:主要用于非.Net平台的第三方客户端所使用,例如Java客户端、IPhone客户端,就可以使用WSDL方式,与CRM系统进行通讯。

    在CRM项目的实施中,典型的扩展编程,集中在REST、早绑定以及晚绑定三种模式下。窃以为,REST方式,主要用于表单页面的扩展,便于使用Javascript与CRM系统进行通讯;早绑定和晚绑定主要用于插件、自定义工作流活动、ISV自定义网站或页面以及Silverlight客户端开发。由于Json是不能够跨域访问数据的,所以在其他网站中,使用REST方式,应该是无法和CRM进行通讯的。

    早绑定、晚绑定模式在MS CRM4以及MS CRM 2011中,已经发生了很大的改变。

    在MS CRM 4时代,通过在工程中,添加web服务应用,基于web服务描述语言(Web Service Description Language),由visual studio生成代理类,从而可以在工程中,使用早绑定的方式完成对crm的操作,而使用动态实体DynamicEntity类,作为晚绑定编程操作的载体。在CRM4中,在开发插件以及自定义工作流活动中,需要使用晚绑定方式进行编程。

    这一切,在MS CRM 2011中已经发生了巨大的改变——在CRM 2011中,已经不再使用WSDL了,而是通过添加Microsoft.Xrm.SDK装配件以及Microsoft.CRM.SDK装配件可以连接CRM系统中的早绑定类型以及晚绑定类型。这种编程方式就被称为晚绑定模式。通过使用Entity类,可以完成晚绑定模式下的编程。Entity类中,通过相应字段的逻辑名称,访问实体实例的字段,从而,获取或者设置该字段的数值。

    此外,除了晚绑定模式,还可以通过CrmSvcUtil工具,基于相应组织的元数据,生成C#代码,将该C#代码文件添加到项目中,就可以借助Visual Studio的智能感知以及类型检测,加快开发顾问开发的速度。

    MS CRM 4到MS CRM 2011的编程模式上面的变化,来自于系统架构上面的调整。在CRM 4中,实体的类树结构如下图所示。动态实体类DynamicEntity以及具体的业务实体类(例如客户account)都是继承自抽象类BusinessEntity,DynamicEntity类和account类之间无法进行互相强制转换。

 

    而在MS CRM 2011中,该类树结构已经进行简化,如下图所示。可见,动态类DynamicEntity,已经被取消,该类已经被Entity类所取代,同时Entity类不再是抽象类了,已经可以被实例化。

    所以,如下的代码,在CRM 2011编程中,是成立的了。

Account entity = new Account();entity["name"] = "My Account"; //晚绑定entity.AccountNumber = "1234"; //强类型,早绑定

转载于:https://www.cnblogs.com/StoneGarden/archive/2011/11/22/2258237.html

你可能感兴趣的文章
第 1 章 Nginx
查看>>
OK335xS canutils deal with compile error
查看>>
Redis数据结构详解之List(二)
查看>>
第 4 章 KornShell
查看>>
Golang runtime 浅析
查看>>
34.6. xdata
查看>>
【redis】1.redis-windows安装+配置介绍
查看>>
I.MX6 U-boot编译找不到用户目录
查看>>
缺少dll文件的解决方法
查看>>
VS XML注释
查看>>
JavaScript中清空数组的三种方式
查看>>
成功都一样,失败各不同;失败的项目也许值得你警醒
查看>>
git学习------>如何修改git已提交的记录中的Author和Email?
查看>>
安卓漏洞悬赏飙至20万美元:竟是中国人出的招
查看>>
天热了,大数据来“送清凉”
查看>>
黑客攻击公司化:网络犯罪也有商业模式也有CEO
查看>>
美国人眼中的大数据法律问题
查看>>
1亿美元:立陶宛钓鲸黑客被美国司法部起诉
查看>>
64位Office 2016 for Mac 你是否值得拥有?
查看>>
从任志强的发言看光伏科普任重道远
查看>>