MS CRM 2011中的Web服务
CRM2011中,对其系统做了进一步的统一与集中,体现之一,就是其所提供的Web服务。
在CRM4时代,CRM提高的服务有三个,分别是:
名称 |
功能描述 |
DiscoveryService |
提供搜索组织单位的途径 |
CrmService |
提供访问所有实体的途径 |
MetadataService |
提供访问元数据的途径 |
而在CRM2011中,将CrmService与MetadataService的角色进行整合,取而代之的是IOrganizationService,而DiscoveryService也演进为IDiscoveryService Web服务。这两个服务的功能如下:
IDiscoveryService:用于获取组织列表以及相应组织的IOrganizationService的URL地址;
IOrganizationService:访问数据以及元数据;
IDiscoveryService
获取组织信息,只提供了一个方法——Execute。
Execute方法
功用:获取组织信息
参数:DiscoveryRequest类型的请求信息,具体有
RetrieveOrganizationRequest:用于获取某个特定组织的数据
RetrieveOrganizationsRequest:用于获取当前用户所属的所有组织的数据
相应的,Execute方法的返回值也根据输入参数的不同,而返回不同类型的结果:
RetrieveOrganizationResponse:包含特定组织的信息
RetrieveOrganizationsResponse:包含当前用户所属的所有组织的信息
这两种不同的返回值,其基类都是DiscoveryResponse
如果要在项目中使用IDiscoveryService,有两个方法:
1. 添加服务引用,web服务的URL是http://<servername>:<port>/XRMServices/2011/Discovery.svc
或者
2. 添加对Microsoft.Xrm.Sdk.dll的引用
IOrganizationService
IOrganizationService,提供了8个方法,分别是
名称 |
描述 |
Create |
创建实体实例(记录) |
Update |
更新实体实例(记录) |
Delete |
删除实体实例(记录) |
Retrieve |
获取单条实体实例(记录) |
RetrieveMultiple |
获取多条实体实例(记录) |
Associate |
在两个实体实例(记录)之间创建关联 |
Disassociate |
在两个实体实例(记录)之间解除关联 |
Execute |
执行以上七个方法所涵盖的普通操作 执行特殊操作, |
样例代码:
//Create:
Account accCreate = new Account
{
Name = “Sampe Create Account”;
}
Guid accId = _service.Create(accCreate);
//Retrieve
ColumnSet cols = new ColumnSet(new String[]{ “name” });
Account accRetrieved = (Account)_service.Retrieve("account", _ accId, cols);
//Update:
Account accUpdate = new Account
{
AccountId = accId;
Name = “Sample Update Account”;
}
_service.Update(accUpdate);
//Delete
_service.Delete(“account”, accId);
Execute方法有一些特殊,该方法接受的参数为一个请求消息,即类名格式为XXXRequest的对象,返回值为对应请求消息的响应消息,该类消息的类名格式为XXXResponse。所有这些XXXRequest类都是OrganizationRequest的子类。所有这些XXXResponse的基类都是OrganizationResponse。这些消息分属于两个命名空间,分别是Microsoft.Xrm.Sdk.Messages以及Microsoft.Crm.Sdk.Messages。在Microsoft.Xrm.Sdk.Messages命名空间中的消息,分为操作元数据的消息以及操作实体数据的消息,例如
CreateEntityRequest:创建实体的请求消息;
CreateRequest:创建实体记录的请求消息;
而Microsoft.Crm.Sdk.Messages命名空间中的消息,是特定于对CRM系统的消息。例如
SendEmailRequest:发送电子邮件的请求消息;
WinOpportunityRequest:设置商机赢单状态的请求消息
AddMemberListRequest:添加营销列表成员的请求消息