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 ...
随机推荐
- 从锅炉工到AI专家(11)(END)
语音识别 TensorFlow 1.x中提供了一个语音识别的例子speech_commands,用于识别常用的命令词汇,实现对设备的语音控制.speech_commands是一个很成熟的语音识别原型, ...
- 带着新人学springboot的应用05(springboot+RabbitMQ 上)
这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queu ...
- msf登陆Windows 1
前言:刚做完这个测试,于是,写下自己的测试过程以及测试中遇到的问题解决办法 1. Windows版本适合类型(Win 7 // XP...............) 2. 以XP为靶机,借助工具get ...
- 基于 Nginx 的 HTTPS 性能优化实践
前言 分享一个卓见云的较多客户遇到HTTPS优化案例. 随着相关浏览器对HTTP协议的“不安全”.红色页面警告等严格措施的出台,以及向 iOS 应用的 ATS 要求和微信.支付宝小程序强制 HTTPS ...
- hadoop 1.0.1集群安装及配置
1.hadoop下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/core/ 2.下载java6软件包,分别在三台安装 3.三台虚拟机,一台作为mast ...
- .NET Core中Object Pool的简单使用
前言 复用,是一个重要的话题,也是我们日常开发中经常遇到的,不可避免的问题. 举个最为简单,大家最为熟悉的例子,数据库连接池,就是复用数据库连接. 那么复用的意义在那里呢? 简单来说就是减少不必要的资 ...
- 为容器化的 Go 程序搭建 CI
本文介绍如何使用 Jenkins 的声明式 pipeline 为一个简单的 Golang web 应用搭建 CI 环境.如果你还不太了解 Jenkins 及其声明式 pipeline,请先参考笔者的 ...
- VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——SliderView控件的使用方式
SliderView控件 一. 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个SliderView控件到窗体界面上 ...
- WebService简单介绍(一)
分布式系统或软件如何通信?使用WebService服务.说它是服务可以,web通信中间件也ok,web通信组件....... 特点 自包含 自描述 跨平台.跨语言 基于开放和标准 (用了xml,嗯,开 ...
- 基于C#&.net2.0的windows服务创建与安装
起因:一台服务器中部署的程序,停电后未按照计划任务正常启动. 一.创建并配置Windows服务程序 开发工具VS2015 Framework版本2.0 1.新建Windows服务 2.在Service ...