Dynamics CRM项目实施技术规范

项目设计阶段

1.1 自定义和扩展Dynamics CRM规范

1.1.1 自定义实体的使用

1. 优先考虑使用系统现有实体,为其添加自定义属性;

2. 重新命名现有实体以使实体更具有意义;

3. 在上述两种情况不能满足业务需求时,再考虑创建自定义实体

1.1.2 插件与工作流的使用

综合考虑插件或工作流解决方案的部署、性能和维护等方面,然后选择一种最符合业务目标的技术。

下表列出了插件和工作流的特性。


条件


插件


工作流


在核心平台操作(创建、更新、删除等)之前或之后执行


在核心操作之前或之后立即执行(同步)。可以排入队列以在核心操作之后执行(异步)。


排入队列以在核心操作之后执行(异步/同步)。


对服务器性能的影响


同步插件可能会增加平台响应时间,因为它们是主要平台处理过程的一部分。

异步插件对服务器响应时间的影响较小,因为代码在不同的进程中运行。


对服务器响应时间的影响较小,因为代码在不同的进程中运行。


安全限制


向平台注册插件需要系统管理员或系统定制员安全角色以及“部署管理员”组的成员资格。


用户可以在Web应用程序中以交互方式创建工作流。

但是,要注册自定义工作流活动,进行部署的用户必须具有与注册插件所需的相同安全角色。


CRM版本(SKU)支持


在沙盒中注册后则在CRM Online中受支持。可以在合作伙伴托管的安装中受支持,这由合作伙伴自行决定。


不含自定义工作流活动的工作流在所有产品版本中均支持。自定义的工作流活动在CRM Online上不受支持。


处理时间的长短


针对同步或非同步执行注册的插件要求在 2 分钟的时间限制内完成其执行。


既适用于短期进程也适用于长期进程。


在CRM for Outlook客户端脱机的情况下也工作


联机和脱机均支持。


脱机时工作流不执行。


进程和数据持久性


插件执行直至完成。必须将插件编写成无状态的情况,即不保留任何内存中数据。


可以通过SDK调用或由用户通过Web应用程序暂停、推迟、取消和恢复工作流。在暂停或推迟工作流之前,系统会自动保存工作流的状态。


模拟


插件可以代表其他系统用户执行数据操作。


工作流无法使用模拟。

1.2 ISV扩展规范

1.2.1 CRM Web服务的使用

将CRM Web服务URL放入配置文件(例如,放入app.config文件)中,以便将代码与对URL的更改隔离开

1.2.2 插件和自定义工作流活动的存储位置

对于磁盘上的插件或自定义工作流活动,请将程序集放在 <installdir>\Server\bin\assembly
文件夹中。

1.2.3 自定义Web应用程序或网页的存储位置

对于自定义Web应用程序或网页,请将应用程序或网页存放于CRM服务器上的自定义目录下并发布到IIS。

1.2.4 创建新的网站扩展CRM

在以下任一情况下,请为您的代码创建新的网站:

l 应用程序必须绑定到与CRM应用程序不同的域、协议或端口,或者必须在不同应用程序池中运行。

l 应用程序可独立存在和单独进行访问。例如,作为服务器(使用Web服务)与CRM交互的门户应作为新网站进行托管。

l 应用程序始终使用Active Directory或集成Windows身份验证(非IFD),并且无需考虑跨域脚本问题。例如,应用程序与使用Web服务的后端交互,同时还与CRM窗体交互。托管在不与CRM窗体交互的CRM应用程序包含的IFRAME中的页面属于这个类别。

1.3 安全性最佳业务实践

1.3.1 开发服务器端代码的安全性最佳业务实践

l 请勿使用除SDK以外的任何其他方式修改CRM数据库,因为其会绕过CRM安全模型。

l 插件在管理员上下文中运行,您应该了解此代码可能会访问登录的用户无权访问的信息。

l 对于工作流程序集和插件,避免编写执行时需要花费很长时间的代码。有一点很重要,就是注册同步执行的插件代码返回的时间要尽可能短。

l 如果要复制自己的数据存储中的CRM数据,您应该对数据的安全负责。如果使用插件传输数据,请确保在核心平台操作完成之后再注册插件进行执行。登录用户的安全权限检查在核心平台操作的期间执行。

l 呈现从CRM获取的数据可能不安全。数据中可能插入了不安全的HTML标记。

l 遵循不直接通过CRM企业管理器访问SQL Server数据库的要求。不使用SDK可能会使您面临SQL注入威胁。

l 对于面向Internet的部署,请记住解决方案的安全性取决于最薄弱的一环。应用程序面向Internet公开后,会面临安全威胁。

l 仅使用生成托管代码的语言,以实现最佳安全性,防止出现缓冲区溢出和异常等等。

1.3.2 开发客户端代码的安全性最佳业务实践

l 尽可能使用Web资源,而不使用需要服务器端处理的页面。如果您的要求只能通过服务器端处理才能满足,则请将自定义网页安装在单独的网站上。根据代码安全性中的可信度,相应地设置您的网站的信任级别。这样可减小来自跨网站脚本的威胁和其他威胁。

l 为提高安全性,确保使用不同于CRM的帐户运行您的单独网站。此帐户具有的访问权限应该尽可能少,并且不能直接访问数据库。可以使用复杂的、不会过期的密码,因为除了应用程序外,没有人会登录此帐户。

l 避免使用ActiveX控件,因为它们存在已知的安全问题。

l 在删除记录或应用敏感更改(例如,将新用户添加到安全角色)时始终使用模式确认对话框。这有助于防止诸如点击劫持或界面伪装漏洞之类的技术,在这些技术中恶意的开发人员可能会将您的页面嵌入到一个看似安全的页面,以诱使用户执行降低安全的操作或对数据执行不需要的操作。

1.3.3 自定义网站的安全性最佳业务实践

l 不要使用匿名访问。

l 对安全套接字层(SSL)使用集成Windows身份验证、NTLM或Basic身份验证。

l 如果您的网站与CRM位于不同的计算机上,使用SSL可避免通过网络发送未加密数据。

1.4 性能最佳业务实践

通过下列最佳业务实践来提高代码的性能

1.4.1 使用多线程

向应用程序添加线程支持可以将工作分配给多个CPU。此建议假设您正在多处理器系统上运行代码。有关详细信息,请参阅《NET
Framework高级开发指南》的“托管线程处理”文章

1.4.2 使用常用方法

使用下列常用方法代替Execute方法并与相应消息配合使用。可以提高代码性能


方法


消息


Create


CreateRequest


Delete


DeleteRequest


Update


UpdateRequest


Retrieve


RetrieveRequest


RetrieveMultiple


RetrieveMultipleRequest

1.4.3 编写执行较快的插件

始终编写执行预定任务花费时间最少的插件。例如,在CRM中经常处理Execute方法。如果针对该消息注册插件,则插件会对系统产生显著的性能影响。因为每次处理Execute方法时都会执行该插件。

如果要同步执行注册插件,建议将其设计为在10秒内完成其操作。最好是最大程度地减少插件的处理时间以维护连接到执行该插件的同一组织服务的客户端应用程序的交互性。

1.4.4 限制检索的数据

使用从服务器检索数据的方法时,检索应用程序所需的最少量的数据。可以通过指定列集来做到这一点,列集是指要检索的实体属性的集合。例如,应避免使用RetrieveAllEntitiesRequest消息,为EntityFilters属性指定EntityFilters.All实体筛选器来检索所有元数据。相反,如果限制实体筛选器,或使用下列消息之一,则可能会实现更好的性能:RetrieveEntityRequest、RetrieveOptionSetRequest、RetrieveAttributeRequest或RetrieveRelationshipRequest。

1.4.5 限制将级联作用于相关实体的操作

使用Update方法或UpdateRequest方法时,请勿在记录上设置OwnerId属性,除非已实际更改了负责人。设置此属性时,更改通常会将级联作用于相关实体,这可增加更新操作所需的时间。

项目开发阶段

2.0.1 源代码管理

项目开发过程中产生的源代码需要使用源代码管理工具来进行版本控制。源代码管理的工作由项目技术负责人来完成。

2.0.1.1 源代码管理覆盖的内容:

1. CRM自定义扩展插件的源代码;

2. CRM自定义扩展工作流的源代码;

3. CRM自定义解决方案中的Web资源。包括HTML网页、JS脚本和图片图标资源等

4. ISV扩展的自定义Web应用程序;

2.0.1.2 源代码管理工具的推荐与使用

请参考附件A。

2.0.2 技术文档规范

项目开发过程中产生的源代码需要有对应的技术文档。

其中,业务模块级别的功能开发需要有流程图;功能点级别的开发需要有函数说明。

2.0.3 源代码开发规范

为了降低项目的维护成本,减少代码中的bug,以及促进团队之间的合作。源代码的开发(.NET部分)必需遵照微软的C#开发规范。请查阅附件B。

由项目技术负责人对源代码进行审查。

项目交付阶段

3.0.1 源代码交付

项目交付阶段由项目技术负责人将项目的所有源代码签入公司的源代码管理服务器。包括:

1. CRM自定义扩展插件的源代码;

2. CRM自定义扩展工作流的源代码;

3. CRM自定义解决方案中的Web资源。包括HTML网页、JS脚本和图片图标资源等

4. ISV扩展的自定义Web应用程序;

上传地址:http://www.wicresoft.com/svn (待公司SVN服务器搭建好后再更新)

3.0.2 技术文档交付

项目交付阶段由项目技术负责人将项目的所有技术文档上传到公司的SharePoint文档管理服务器。

上传地址:http://www.wicresoft.com/SharePoint (待公司SharePoint服务器搭建好后再更新)

附录A:

4.1 源代码管理工具的推荐与使用

附录B:

5.1 C#代码开发规范

时间: 2024-10-10 17:53:54

Dynamics CRM项目实施技术规范的相关文章

CRM项目的实施必须全体人员参与!

<div class="card-body article-content" deep="5"> 因为CRM系统软件</a>涉及到公司业务流程管理全过程中的行业,必须得到营销推广.市场销售.实施.会计等单位的兼容.根据在宣布实施CRM以前,全体人员的参与<strong>CRM项目实施</strong></a>,能够得到必需的資源兼容,并促进有关部门的协作,让她们迅速的接纳CRM. <strong>

Dynamics Crm 常用的JS

经历了3个dynamics crm项目了,写点常用的JS  ~~! 常用JS(一) Xrm.Page.context.getUserId():       //获取当前用户id Xrm.Page.context.getUserName():       //获取当前用户的用户名 Xrm.Page.data.entity.getId();        //获取当前记录id Xrm.Page.context.getUserRoles();       //获取当用户的安全角色 Xrm.Page.c

Dynamics CRM 2015 Online Update1 UI界面的更新变化

听说出  Dynamics CRM 2015 Online  Update1了,立马跑去申请了个30天试用版简单的看了下,UI上的变化还是让人耳目一新的,也可能是被CRM2013的UI蹂躏太久了没脾气后,看到稍微有那么点改进后的欣喜若狂吧,下面我们来看下哪些变化. 原来的Home按钮那个小房子图标改了,现在点击图标是下拉一级导航,而原来是下拉一级导航功能是在Microsoft Dynamics CRM那几个字上.但现在点击那几个字是返回首页面,所以我们看到两个按钮之间的功能做了调换,在这版中

使用SSIS对Dynamics CRM 系统进行数据迁移

嗨,各位.最近项目一直都很忙,并且自己也一直在思考职业发展的问题,所以有很长一段时间没静下心写几篇Blog了.最近我参与的项目是Dynamics CRM 2011 到 Dynamics CRM 2013 Online的数据迁移,刚好接着今天这个机会和大家分析一下数据迁移的心得吧. 读过我之前文章的朋友肯定记得我把Dynamics CRM的接口分为了两大类:1)功能接口,2)数据接口.今天要说的数据迁移可以理解为数据接口,实现数据接口的方式有很多种,比如C#制作的程序,数据库层的SQL 脚本,以及

为了免费拿到微软的年底发布会的门票,只有厚着脸皮再写些 Microsoft Dynamics CRM 2013文章分享了

奔跑中的2015, 为了免费拿到微软的每年年底发布会的门票和IT相关的证书,没有办法,本人大专学历太低,最近本人所以在的城市政府有人才奖厉计划,就因要求本科及以上学历,都跟本人无缘了,所以只有厚着脸皮再写些 Microsoft Dynamics CRM 2013文章分享了,争取能在微软得到证书,肯定自已了. 前几个月在家里找到2012年的一张微软北京技术大会的门票,想想今年应该写点什么技术文章,再免费参加一次会议吧,想想写什么方面的呢,微软的office,server,数据库等专家太多了,写不过

带你走进SAP项目实施过程——立项(1)

到底谁会首先有上ERP的想法,可能是企业老板,也可能是总经理级别等高管.但不管是谁,在确定之前,按道理企业风控部.总经办或者信息部等相关部门都需要对ERP项目做立项申请.毕竟ERP项目涉及企业方方面面的资源的调动和流程整合,绝大部分的部门都会有涉及影响到,项目规模比较大,人力和资金投入巨大,影响之广足够引起企业创始人或老板的重视. 所以相关部门需要专门研究项目的可行性以及相应审批.每家企业对流程和管理机制不同,因此立项这个环节的做法也各有千秋,但总体来说,立项需要做到或包括以下几个方面,好让老板

我对SAP Business One 项目实施的理解

一.什么是SAP: 大家都知道ERP是什么,ERP是企业资源计划管理系统.是指建立在信息技术基础上,集信息技术与先进管理思想于一身,以系统化的管理思想,为企业员工及决策层提供决策手段的管理平台.那么问题来了什么又是SAP呢.其实.SAP就是ERP的拓展和延伸,在数据处理中的系统.应用和产品,企业管理解决方案的软件名称. 二.SAP系统的分类: SAP系统分为很多的种类,有mySAP.com.SAP ALL-IN-ONE.SAP Business One.SAP NetWeaver.SAP Bus

使用FetchXML制作Dynamics CRM Online 高级报表

今天给大家分享一篇关于制作报表的文章,今天我们不用SQL来做报表,我们用FetchXML来做.这次我们的测试环境是Dynamics CRM Online,大家应该知道,Dynamics CRM Online只能部署基于FetchXML制作的SSRS报表. 既然说到了高级报表,那肯定是有它的卖点:这里的高级是指,我们的报表可以通过CRM 高级查找界面去定义数据源,不像普通的SSRS报表,数据源都是固定的不能变更. 下面给大家说下我们这个报表的应用场景: 客户和销售记录是1对多关系,但是很多情况下,

Dynamics CRM 远程调试自定义工作流活动

据我所知,Dynamics CRM工作流的调试方式有几种: Throw抛出异常错误 使用TracingService 服务器附加进程调试 对于插件有PluginProflier 以上几中方式各有优缺点. 抛出异常错误:快速查看少量对象值,对于多个对象或调试条件分支,需要不断地试错. 使用TracingService:可记录执行过程,需要开启日志监控,不能即时跟踪对象. 服务器附加进程:可即时跟踪对象,需要服务器权限并登录服务器. 下面记录下使用本地远程调试的过程 工具准备: Visual Stu