Dynamics 365 CRM 开发架构简介_dynamiccrm架构图-程序员宅基地

技术标签: Dynamics 365(online)  数据库  sql  

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客户端的开发。

相关内容:使用XRM工具创建Windows客户端应用
在这里插入图片描述
服务端
可以编写监听事件的代码,并应用自定义业务逻辑来修改或扩充平台的标准行为。 这种代码仅可使用.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
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44136823/article/details/106186323

智能推荐

WPF -- 控件模板 (ControlTemplate)(一)-程序员宅基地

文章浏览阅读1.9w次,点赞26次,收藏95次。ControlTemplate(控件模板)WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate。在WPF中每一个控件都有一个默认的模板,该模板描述了空间的外观以及外观对外界刺激所做出的反应(比如各种事件,按钮鼠标触摸后的背景色变化等)。然而在这个浮躁的社会,人们追求酷炫,色彩,所以这个任务就..._controltemplate

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)_深度学习变压器故障诊断与预测-程序员宅基地

文章浏览阅读1.7k次。读取了两个CSV文件(Overview.csv和CurrentVoltage.csv),将它们转换为DataFrame,并对其中的日期时间列进行了格式转换。:使用matplotlib和seaborn库绘制了多个图表,包括散点图、折线图、计数柱状图和饼图,来可视化不同传感器数据的变化趋势、分布情况等。:导入了所需的数据处理、数据可视化和机器学习相关的库,并进行了matplotlib和seaborn的样式和参数配置。第二个文件打开 (6列特征,最后一列是标签,正常状态为0,故障为1)_深度学习变压器故障诊断与预测

启动react-native项目 npx react-native run-android停止在Loading dependency graph, done.-程序员宅基地

文章浏览阅读2.2k次。最近在写react-native项目,在项目部署过程中,执行npx react-native run-android命令,node会一直停滞在Loading dependency graph, done.上,所以不能及时更新造成这个问题的原因是react-native的默认端口8081被其它进程给占用了解决方法:1:找到8081端口:netstat -aon|findstr ‘8081’2..._npx react-native run-android

React Native之React Navigation导航器_registercomponent-程序员宅基地

文章浏览阅读230次。最近在学习React Native,关于界面跳转这一块,文档上面写的并不清晰,自己也是研究了很久才搞清楚用法,这里记录下。译注:从0.44版本开始,Navigator被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components的单独模块中。如果你需要继续使用Navigator,则需要先npm i facebooka..._registercomponent

vrep的bubbeRob仿真机器人制作教程_bubblerob-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏7次。1. 构造机器人添加bubbleRob的主体。点击 Menu bar --> Add --> Primititive shape --> Sphere,添加一个球体(以下称为bubbleRob)_bubblerob

异步编程学习之路(五)-线程池原理及使用_core threads must have nonzero keep alive times-程序员宅基地

文章浏览阅读832次。本文是异步编程学习之路(五)-线程池原理及使用,若要关注前文,请点击传送门:异步编程学习之路(四)-睡眠、唤醒、让步、合并前文我们详细介绍了线程之间协同合作的方法,在本文中我们将再进一步详细讲解线程池的原理及使用。个人认为,如果想要学好线程池就必须先从ThreadPoolExcetor源码开始讲起,我不建议直接使用Executors来创建一个线程池。至于为什么不建议直接使用的原因,阅读..._core threads must have nonzero keep alive times

随便推点

20年第三次架构大调整,腾讯永远年轻!-程序员宅基地

文章浏览阅读1.8k次。整理 | 琥珀出品 | AI科技大本营(公众号ID:rgznai100)凌晨,腾讯官方公众号发布了一则消息,公布了成立 20 周年以来的新一轮整体战略升级。此前,国内各大...

oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认-程序员宅基地

文章浏览阅读8.2k次。转至:http://www.th7.cn/db/Oracle/201501/86125.shtmloracle 通过 nvl( )函数sql 查询时为 空值 赋默认值oracle 函数介绍之nvl函数声明:nvl(col,val)说明:当col为空时取val作为返回值,当col不为空时取col值。用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由..._oracle字段为空取其他值

项目经理带你-零基础学习C++_新手学习笔记VS2010_1 项目3-黑客攻击系统-输入的优化-56.数组的概念和定义_vs2010定义数组-程序员宅基地

文章浏览阅读108次。/*项目经理带你-零基础学习C++_新手学习笔记VS2010_1项目3-黑客攻击系统-输入的优化-56.数组的概念和定义*/#include #include <Windows.h>#include //using namespace std;int main(){float girlFirends[8];girlFirends[5]=1.78;std::co..._vs2010定义数组

随机色生成_el.style.color-程序员宅基地

文章浏览阅读1.4k次。把标题的颜色设置成随机色<h4 v-rainbow>标题随机色</h4>在script写局部自定义指令(如果想要写全局的需要在main.js里面书写)局部 directives:{ 'rainbow':{ bind(el,binding,vnode){ el.style.color = '#' + Math.ra......_el.style.color

matlab对三角波信号进行频谱分析,实验三 用FFT对信号进行频谱分析及MATLAB程序.doc...-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏9次。实验三 用FFT对信号进行频谱分析及MATLAB程序实验三 用FFT对信号进行频谱分析一 实验目的1 能够熟练掌握快速离散傅立叶变换的原理及应用FFT进行频谱分析的基本方法;2了解; (3-1)是的连续周期函数。对序列进行N点DFT得到,则是在区间上对的N点等间隔采样,频谱分辨率就是采样间隔。因此序列的傅里叶变换可利用DFT(即FFT)来计算。用FFT对..._三角波频谱

数组中的逆序对-------归并排序应用_22212 14647 27252 22772-程序员宅基地

文章浏览阅读2k次。题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size&amp;lt;=10^4对于%75的数据,size&amp;lt;=10^5对于%100的数..._22212 14647 27252 22772