Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式。

本文是对Dynamics 365 CRM编程模型的综述。

概览

下图表明了Dynamics 365 CRM的主要可编程场景。请根据整体解决方案选择合适的模型。

从扩展的角度来看,你可以在Dynamics 365中实现以下附加功能:

  1. 应用于PC或移动设备的控制台应用程序或者WPF(Windows Presentation Foundation),即图中上方.Net下的绿框。
  2. 处理Dynamics的Web表单的扩展,即图中右侧web application部分。
  3. 处理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客户端的开发。

相关内容:使用XRM工具创建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中使用JavascriptDynamics 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

JavaScript and HTML Resources

Dynamics 365 CRM 开发架构简介的更多相关文章

  1. Dynamics 365 CRM large instance copy

    使用CRM 大家想必都做过copy. 从一个instance 复制到另外一个instance. 如果你是Dynamics 365 CRM 用户, 并且你的instance超过500GB,甚至1TB+的 ...

  2. Dynamics 365 CRM Free up storage 清理Dynamics 365 CRM的空间

    Dynamics 365 CRM 的空间是要买的. 但是很多情况下用户可以去清理CRM从而达到给空间减重的方法 两大使用DB空间大的功能 1. Audit log 审计记录 审计记录是用来记录各个fi ...

  3. Dynamics 365 CRM 部署 Connected Field Service

    微软 Connected Field Service 是一个提供Azure IoT 和 Dynamics 365 连接的这样一个框架 有两种方式部署CFS, 一种是用IoT Hub PaaS, 一种是 ...

  4. 创建一个dynamics 365 CRM online plugin (九) - Context.Depth

    让我们来看看官方文档是怎么讲的 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide ...

  5. Dynamics 365中开发和注册插件介绍

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  6. ASP.NET Core 企业级开发架构简介及框架汇总

    企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成若干小的应用实现系统功能的架构,同时这样的系 ...

  7. ASP.NET Core 企业级开发架构简介及框架汇总 (转载)

    ASP.NET Core 企业开发架构概述 企业开发框架包括垂直方向架构和水平方向架构.垂直方向架构是指一个应用程序的由下到上叠加多层的架构,同时这样的程序又叫整体式程序.水平方向架构是指将大应用分成 ...

  8. 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” ...

  9. Dynamics 365 CRM Connected Field Service 自动发送command

    上期降到了怎样部署connected field service(CFS) 我们假设现在IoT 设备是温度监控器, 当温度触发我们之前预设的温度值, IoT会通过IoT Hub 发送IoT Alert ...

随机推荐

  1. 懵逼的this指向

    请看以下代码: 以上的console.log打印出来的,如果你能完全知道,请忽略,如果你不知道,那就接下来看吧. console.log打印的结果: Google非常智能地把对象给打印出来了,看结果, ...

  2. 并发编程(三)—— ReentrantLock的用法

    ReentrantLock是Java并发包中提供的一个可重入的互斥锁.ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性.只不过相比原生的Sync ...

  3. C#版 - Leetcode 13. 罗马数字转整数 - 题解

    C#版 - Leetcode 13. 罗马数字转整数 - 题解 Leetcode 13. Roman to Integer 在线提交: https://leetcode.com/problems/ro ...

  4. Java开发知识之Java编程基础

    Java开发知识之Java编程基础 一丶Java的基础语法 每个语言都有自己的语法规范.例如C++ 入口点是main. 我们按照特定格式编写即可. Java也不例外. Java程序的语法规范就是 Ja ...

  5. ES6躬行记(14)——函数

    在前面的章节中,已陆陆续续介绍了ES6为改良函数而引入的几个新特性,本章将会继续讲解ES6对函数的其余改进,包括默认参数.元属性.块级函数和箭头函数等. 一.默认参数 在ES5时代,只能在函数体中定义 ...

  6. python基础3--函数

    1.函数定义 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 ...

  7. 用EF的三种方式(SqlServer数据库和Oracle数据库)

    SqlServer数据库 1.DB First 现有DB,生成edmx文件 贴一下生成的model //------------------------------------------------ ...

  8. centos-linux入门笔记

    一.linux的用户 linux的用户和windwos差不多,分为管理员用户和普通用户. 普通用户:权限没那么高而已. 管理员用户:在linux中就是root用户,所拥有的权限是最高的. 二.linu ...

  9. Elasticsearch系列(4):基本搜索

    空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档,如下命令: GET /_search 返回如下结果: 查询结果解释: 1,hits 返回结果中最重 ...

  10. BOM—浏览器对象模型(Browser Object Model)

     1,javascript   组成部分: 1.ECMAscript(核心标准):    定义了基本的语法,比如:if for 数组 字符串 ... 2.BOM  : 浏览器对象模型(Browser ...