选择您的托管代码的开发样式

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

Microsoft Dynamics CRM SDK 提供了当编写代码访问 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 Web 服务或扩展应用程序时可以使用的各种方法和技术。 本指南重点介绍用来完成不同代码任务的一些工具和方法,并提供一些使用指导。

本主题内容

使用代码的身份验证

创建和部署插件或自定义工作流活动

创建和部署 XAML 工作流

实体编程(早期绑定与晚期绑定与开发人员扩展)

查询(Fetch 与 QueryExpression 与 LINQ 与开发人员扩展)

使用代码的身份验证

下表列出了您编写代码时可以进行的选择,该代码通过用于内部部署、面向 Internet 的部署 (IFD) 或联机部署的 Microsoft Dynamics 365 安装向调用程序进行验证。

说明和用法

更多信息

帮助程序代码

示例代码中的类演示如何连接到 Web 服务以及对用户进行身份验证。 您可以使用帮助程序代码作为您的自定义身份验证代码的基础。

此代码易于使用,并支持所有 Microsoft Dynamics 365 部署类型。 它还支持在 Windows 凭据管理器 中存储用户的密码以便日后重用。

提供完整的源代码,因此您可以对其进行复制和自定义以满足您的需要。 建议将您的程序与以后的版本中对此帮助程序代码的更改进行隔离。

示例:Microsoft Dynamics CRM 快速入门指南

使用示例和帮助程序代码

帮助程序代码:ServerConnection 类

可以在 SDK 中的SampleCode\CS\HelperCode\CrmServiceHelpers.cs和SampleCode\VB\HelperCode\CrmServiceHelpers.vb文件中找到此代码。下载 Microsoft Dynamics CRM SDK 包。

开发人员扩展

提供这些程序集的目的是简化和加速与 Microsoft Dynamics 365 交互的应用程序的开发。 扩展专门围绕 OrganizationServiceContext 类的使用来扩展核心 Microsoft Dynamics CRM SDK 的功能。

若要获得在一些代码行中执行复杂工作的简单方法,请使用 CrmConnection 类。

此代码易于使用,并支持所有 Microsoft Dynamics 365 部署类型。

Microsoft Dynamics CRM 2015 开发人员扩展

简化与 Microsoft Dynamics CRM 2015 的连接

XRM 客户端

对于需要自定义 Windows Communication Foundation (WCF) 服务渠道管理和身份验证过程的高级开发人员,请使用 Microsoft.Xrm.Sdk.Client 命名空间中的 IServiceManagement<TService>OrganizationServiceProxy 类。

直接使用这些类可以提供更佳的连接和身份验证性能以及更多的灵活性。 但是,它们需要 WCF 服务通道和服务器身份验证的更高级知识。 此外,您必须编写更多代码以处理所有 Microsoft Dynamics 365 部署类型。

活动目录和基于声明的身份验证

示例:通过 Microsoft Dynamics CRM Web 服务对用户进行验证

改进服务通道分配性能

XRM tooling

这些程序集利用 Dynamics 365 API 用更少的代码行通过 Windows PowerShell cmdlets 以提供简单的身份验证支持。 在这些类中的所有函数调用在多线程环境中提供 Dynamics 365 中所执行操作的线程安全性。 它提供集成身份验证逻辑的常规登录控件,而安全存储并重新使用身份验证信息的功能则提供从您的 Windows 客户端应用程序登录到 Dynamics 365 的一致且无缝的登录体验。

这些类还提供内置的诊断跟踪以从您的 Windows 客户端应用程序帮助操作调用的操作疑难解答和性能报告。

这些类支持所有 Microsoft Dynamics 365 部署类型和身份验证类型,除 OAuth 之外。

使用 XRM 工具,构建 Windows 客户端应用程序

使用 XRM tooling 连接到 CRM

使用 XRM PowerShell cmdlets 工具连接到 CRM

示例:XRM Tooling API 快速入门

创建和部署插件或自定义工作流活动

下表列出了您编写和部署插件和自定义工作流活动时的选项。

工具

说明和用法

更多信息

插件和自定义工作流活动类

插件注册工具

插件和自定义工作流活动类允许您创建事件处理程序,以便执行您可与 Microsoft Dynamics 365 集成以修改或增加平台的标准行为的自定义业务逻辑。

通过直接使用这些类,您的代码将不会包含 开发人员工具包 中提供的任何帮助程序代码。

如果您从头编写插件和自定义工作流活动,则必须使用插件注册工具注册它们。 该工具提供图形用户界面并且支持向 Microsoft Dynamics 365 注册插件和自定义工作流活动。

如果您具备下列条件,则可使用该方法:

了解如何使用插件和自定义活动类。

不希望在您的代码文件中自动生成和放置额外的库代码。

不介意使用外部工具和 Web 应用程序注册和打包自定义代码程序集。

插件开发

自定义工作流活动(工作流程序集)

注册和部署插件

演练:使用插件注册工具注册插件

创建和部署 XAML 工作流

下表列出了您编写和部署 XAML 工作流时可使用的选项。

工具

说明和用法

更多信息

Microsoft Visual Studio 工作流设计器

Microsoft Dynamics 365 内部部署和 IFD 支持创建自定义 XAML 工作流的功能。 使用 Microsoft Visual Studio 工作流设计器,可以通过将工具箱中的工作流活动拖动到设计图面上、创建变量以及设置这些活动的属性以实现工作流的功能,来创建自定义 XAML 工作流。 可以使用内置的 Windows Workflow Foundation 活动或特定于 Microsoft Dynamics 365 的流程活动。

当只想编写自定义 XAML 工作流时,可使用该方法。

自定义 XAML 工作流

编写将业务流程自动化的工作流

实体编程(早期绑定与晚期绑定与开发人员扩展)

下表列出了编写使用 Microsoft Dynamics 365 中的实体的代码时可使用的选项。

说明和用法

更多信息

早期绑定

<optional namespace>.Account<optional namespace>.Contact 等等

代码生成工具 (CrmSvcUtil) 创建从 Entity 类派生的可用于访问 Microsoft Dynamics 365 中的业务数据的早期绑定实体类。 这些类包括安装中每个实体(包括自定义实体)的一个类。

当希望在编译时具有编译程序检查类型引用时,可使用该方法。 此外,在生成的类中包括属性和关系,因此它们具有对实体、属性和关系名称的 IntelliSense 支持。 使用强类型通常是首选方法,它在此 SDK 文档的大部分示例中使用。

此方法有一些负面情况:

每次自定义实体时必须重新生成类,才能利用架构更改。

在通过网络传输过程中将实体转换为晚期绑定类型时,序列化成本增加。

在代码中使用早期绑定实体类

使用代码生成工具 (CrmSvcUtil.exe) 创建早期绑定实体类

晚期绑定

Microsoft.Xrm.Entity

Entity 类包含实体的逻辑名称和实体属性的属性包数组。 这样,您可以使用晚期绑定,以便可以处理那些编译应用程序时未提供的类型(例如自定义实体和自定义属性)。

其另一个好处是,当通过网络传输实体数据时序列化较少,从而提高了性能。

此方法有一些负面情况:

必须明确指定类型以防止隐式转换。

很难隔离架构更改的影响,这是因为资源(例如实体和属性)的名称都采用硬编码。

编码时很容易出现拼写错误,因为属性名称都是硬编码字符串。

在代码中使用晚期绑定实体类

开发人员扩展

Microsoft.Xrm.Client.CrmEntity

CrmEntity 类派生自 Entity 类。 除了提供 Entity 类的所有相同功能外,CrmEntity 还添加了新的用于简化常见编码任务的获取和设置扩展方法和两个新属性更改事件。

Microsoft Dynamics CRM 2015 开发人员扩展

使用代码生成工具扩展的早期绑定

<optional namespace>.Account<optional namespace>.Account 等等

通过使用 CrmSvcUtil 工具的开发人员扩展版本,您可以生成 CrmEntity 从类派生的早期绑定类型。 当您要使用开发人员扩展中的其他功能时,请使用此方法。

使用代码生成工具扩展生成代码 (Dynamics CRM 2015)

将实体附加到上下文 (Dynamics CRM 2015)

Microsoft Dynamics CRM 2015 开发人员扩展

查询(Fetch 与 QueryExpression 与 LINQ 与开发人员扩展)

下表列出了创建用于从 Microsoft Dynamics 365 数据库检索记录的查询时可以使用的选项。

查询样式

说明和用法

更多信息

FetchXML

这是基于 XML 的自定义查询语言,它支持 QueryExpression 的所有功能以及聚合和分组。 Fetch 查询可以返回多个实体的记录。 此外,查询可以序列化并保存在数据库中。 它还可用于将查询另存为 UserQuery 实体中用户拥有的已保存视图和 SavedQuery 实体中组织拥有的已保存视图。

当需要支持聚合和分组或需要保存查询时,请使用此查询语言。

使用 FetchXML 构建查询

QueryExpression

查询表达式用于搜索单一实体类型的记录。 查询生成为对象模型。 此类支持 FetchXML 中的所有功能(聚合和分组除外)。 它还支持早期绑定和晚期绑定实体编程样式。

使用 QueryExpression 构建查询

LINQ

使用标准语言生成查询,但是在内部 .NET 语言集成查询 (LINQ) 会使用 QueryExpression,因此它仅限于 QueryExpression 的功能。LINQ 同时支持早期绑定和晚期绑定实体编程样式。

使用 LINQ(.NET 语言集成查询)构建查询

另请参阅

开发人员概述
了解 Microsoft Dynamics CRM 2015 开发的教程
编写应用程序和服务器扩展
Microsoft Dynamics CRM 2015 的编程模型

© 2017 Microsoft。 保留所有权利。 版权