Dynamics 365 CRM 开发架构简介
Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式。
本文是对Dynamics 365 CRM编程模型的综述。
概览
下图表明了Dynamics 365 CRM的主要可编程场景。请根据整体解决方案选择合适的模型。

从扩展的角度来看,你可以在Dynamics 365中实现以下附加功能:
- 应用于PC或移动设备的控制台应用程序或者WPF(Windows Presentation Foundation),即图中上方.Net下的绿框。
- 处理Dynamics的Web表单的扩展,即图中右侧web application部分。
- 处理Dynamics服务端的扩展,即图中左侧.NET plug-ins和workflows下方的绿色方框。
其中1和2属于客户端扩展,3属于服务端扩展。
名词解释
上图中部分名词的基本概念。
Web resources:存储在Dynamics 365 CRM数据库中的虚拟文件,比如图片,网页,XML等,可以通过URL访问。
Forms scripts:Dynamics 365 CRM中的一种常见的Javascript应用方式,使用场景包括通过自定义代码对表单输入内容校验、或进行其它自动化处理等。(参考:Form Scripts)
Ribbon commands:Ribbon的的定义见微软文档。
Workflow:通过Workflow可以创建和管理自动化的业务过程,它也提供了定制和扩展标准流程的机制。
Plug-ins:一种事件处理程序,通过它可以修改或扩充标准的业务流程。
Organization service:客户端连接服务端的一种方式,适用于.Net客户端。
Web API:客户端连接服务端的一种方式,拥有良好的平台兼容性,适用于各种客户端。
Service Contracts:Dynamics中的一种单据类型,和本文主题无关。
本文链接:https://www.cnblogs.com/hhelibeb/p/10718080.html
转载请注明
连接到Dynamics 365 CRM
客户端要访问Dynamics 365 CRM中的数据,有2种方案可以选择:使用Web API或者organization service。
Web API
Web API在2016年11月的系统更新中被引入,它提供了跨编程语言、跨平台和跨设备的开发体验。Web API实现了OData (Open Data Protocol) v4。OData是一个用于构建和消费RESTfulAPIs的OASIS标准。
使用Web API时,可以选择由社区支持的支持OData V4标准的库。你也可以选择写代码直接使用HTTP。
相关内容:使用Dynamics 365 CRM Web API。
连接Dynamics 365 CRM时,可以使用Azure AD Authentication Libraries (ADAL)以启用支持多语言/多平台的认证。
相关内容:通过Web API进行身份认证。
Organization service
如果你是位.Net开发者,那么你既可以使用Web API,也可以使用organization service。通过organization service可以使用组件和工具生成强类型类,包含已经被添加到Dynamics 365 CRM实例中的自定义实体和属性。
通过SDK组件和工具, 你可以使用OrganizationServiceContext,通过这个类可以跟踪变更、管理身份和关系。它也提供了访问Dynamics 365 CRM中的LINQ的入口。当你使用代码生成工具的时候,会得到当前已定义的实体和属性的强类型类,它们被称为早绑定类(early-bound classes)。
更多信息:在代码中使用早绑定实体类
当代码需要处理生成代码时尚不知道的实体和属性时,你可以在代码中使用允许指定实体和属性的实体类。这种晚绑定(late-bound)的代码风格提供了更大的灵活性,但是不允许完整的编译期类型检查,因此不会出现隐式转换。在晚绑定下,只有在对象创建或者对类型执行操作的时候才会检查类型。需要显式指定实体类的类型,以避免隐式转换。
相关内容:在代码中使用晚绑定
如果要创建Windows客户端或者使用Windows PoweShell,可以使用Xrm.Tolling。它提供了一套API,通过使用SDK组件来提供额外的功能和资源,用于Windows客户端的开发。
选择 - Web API vs. Organization service

注:organization service目前使用的是过时的2011 SOAP Endpoint,未来它的内部实现会迁移到Web API。
扩展服务端
可以编写监听事件的代码,并应用自定义业务逻辑来修改或扩充平台的标准行为。 这种代码仅可使用.NET托管代码编写,开发人员的体验基于SDK组件中定义的相同对象。你可以使用organization service操作Dynamics 365 CRM中的数据。
相关信息: 写插件来扩展业务处理
可以基于Windows Workflow Foundation编程模型创建自定义流程。可以创建多种不同的处理,多数时候通过使用workflow设计器来实现功能。但是设计器有一些做不到的事情,此时可以通过代码来定义。
相关信息:写Workflow来自动化业务处理
扩展应用端
Dynamics 365 CRM提供的每个客户端应用都具备定制和部署到不同类型客户端的能力。Web应用、Dynamics 365 for Outlook、Dynamics 365 for 平板、and Dynamics 365 for 电话——都提供了自定义导航和命令的能力,也提供了Xrm对象模型和Xrm.Utility功能,可以通过使用Javascript为客户端提供响应式体验。
在客户端中,可以通过URL访问Web resource,比如Javascript库、HTML页面、图像,或其它文件。
相关内容:在CRM app中使用Javascript,Dynamics 365 CRM中的Web Resource
当你需要访问在Javascript上下文中不可用的Dynamics 365 CRM数据时,可以调用服务器获取数据。可以使用organization service,但使用JSON格式的Web API会比基于XML的organization service更简单,因为JS运行在应用上下文中,会自动获得身份认证。
相关内容:Dynamics 365 CRM Web API入门 (客户端JavaScript)
参考:Programming models for Dynamics 365 for Customer Engagement apps
Microsoft Dynamics 365: Custom Extensions and Data Import
Dynamics 365 CRM 开发架构简介的更多相关文章
- Dynamics 365 CRM large instance copy
使用CRM 大家想必都做过copy. 从一个instance 复制到另外一个instance. 如果你是Dynamics 365 CRM 用户, 并且你的instance超过500GB,甚至1TB+的 ...
- Dynamics 365 CRM Free up storage 清理Dynamics 365 CRM的空间
Dynamics 365 CRM 的空间是要买的. 但是很多情况下用户可以去清理CRM从而达到给空间减重的方法 两大使用DB空间大的功能 1. Audit log 审计记录 审计记录是用来记录各个fi ...
- Dynamics 365 CRM 部署 Connected Field Service
微软 Connected Field Service 是一个提供Azure IoT 和 Dynamics 365 连接的这样一个框架 有两种方式部署CFS, 一种是用IoT Hub PaaS, 一种是 ...
- 创建一个dynamics 365 CRM online plugin (九) - Context.Depth
让我们来看看官方文档是怎么讲的 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide ...
- Dynamics 365中开发和注册插件介绍
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- ASP.NET Core 企业级开发架构简介及框架汇总
企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成若干小的应用实现系统功能的架构,同时这样的系 ...
- ASP.NET Core 企业级开发架构简介及框架汇总 (转载)
ASP.NET Core 企业开发架构概述 企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成 ...
- Dynamics 365 CRM On premise Unable to Load plug-in assembly
背景介绍: 本地部署Microsoft Dynamics CRM 9.0正常可用,后打补丁到9.0.16.7,打开系统quote报 “ Unable to Load plug-in assembly” ...
- Dynamics 365 CRM Connected Field Service 自动发送command
上期降到了怎样部署connected field service(CFS) 我们假设现在IoT 设备是温度监控器, 当温度触发我们之前预设的温度值, IoT会通过IoT Hub 发送IoT Alert ...
随机推荐
- knockoutjs 上自己实现的flux
在knockoutjs 上实现 Flux 单向数据流 状态机,主要解决多个组件之间对数据的耦合问题. 一.其实简单 flux的设计理念和实现方案,很大程度上人借鉴和参考了Vuex的实现,只是简化了某些 ...
- Nginx学习系列三Nginx的启动、停止、修改配置文件后重启
1.启动Nginx 命令规则:Ngxin的安装地址 -c Nginx的安装地址下的配置文件地址 注意:一般都在root权限下进行Nginx的启动 2.停止Nginx (1).从容停止 第一步:查看Ng ...
- 不懂这些高并发分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对高并发分布式系统设计.架构(数据一致性)做了分析,祝各位早日走上 ...
- asp.net core系列 39 Web 应用Razor 介绍与详细示例
一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说 ...
- SpringBoot入门教程(十六)@Autowired、@Inject、@Resource
@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中.详情参见下表: v区别 ANNOTATION PACKAGE SOURCE 作用域 实现方 ...
- log4j2 使用纪要
简介 Apache Log4j 2 是Log4j 的升级版,在该版本实现中,日志的处理流程及效率有了显著提升. 此外新版本也合入了一些logback日志框架体系的一些改进点. 关键特性 API分离,接 ...
- RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)
回顾V3.1版本更新内容如下: 1.增加对Oracle表创建语句的查看. 2.新增对MySql的代码生成支持. 3.全面重构对多线程的支持,改变以前会无故退出的现象. 本次在V3.1版本的基础上,增加 ...
- [十五]java.math包简介,RoundingMode与MathContext
java.math包提供了java中的数学类 包括基本的浮点库.复杂运算以及任意精度的数据运算 '可以看得到,主要包括三个类一个枚举 BigDecimal和BigInteger接下来会详细介绍 先 ...
- Oracle 11g设置IP访问限制
出于数据安全考虑,对Oracle数据库的IP做一些限制,只有固定的IP才能访问. 修改$ORACLE_HOME/network/ADMIN/sqlnet.ora文件 增加以下内容(红色表示注释): # ...
- Java 重建二叉树 根据前序中序重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...