您的位置:首页 > 其它

CrmConnection类使用简介

2012-07-19 10:58 148 查看

2012-07-17 第三篇 CrmConnection class简介

特点:

凡是使用过ADO.NET的开发人员,都会对这种连接方式非常熟悉,使用连接字符串进行连接。
将连接字符串保存在配置文件中,避免了硬编码的现象,同时使用加密和解密,也保障了敏感信息的安全性。

典型使用方法:

Namespace: Microsoft.Xrm.Client
Assembly: Microsoft.Xrm.Client (in microsoft.xrm.client.dll)

主要就是怎么写连接字符串。
① OnPremise - Url=http://crm.contoso.com/xrmContoso;Domain=CONTOSO;Username=jsmith;Password=passcode

② Online - Url=https://contoso.crm.dynamics.com;Username=jsmith@live-int.com;Password=passcode;DeviceID=contoso-ba9f6b7b2e6d;DevicePassword=passcode

来吧,上例子~

实例:

直接使用连接字符串作为构造函数的参数的方法就不必说了,这里提到的是怎样使用保存在config文件中的连接字符串。
假设使用如下的config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="OnPremise" connectionString="Url=http://crm.contoso.com/xrmContoso"/>
</connectionStrings>
</configuration>


crmconnection提供了直接使用的连接字符串名称的构造函数,用起来简直方便到变态。

var connection = new CrmConnection(“OnPremise”);

在CRM自身的开发中也大量使用了SDK,所以看来这堆CRM核心开发人员也跟我们一样,有句话怎么说的来着,好程序员都是懒汉~_~..

扩展:(使用CrmConnection生成CrmOrganizationServiceContext)

var connection = new CrmConnection("OnPremise");
var service = new OrganizationService(connection);
var context = new CrmOrganizationServiceContext(connection);


加密 :

本身把连接字符串保存在config文件中避免了硬编码的现象,但是直接就把敏感数据用明码保存也着实是相当奔放的行为。
所以我们这里就会建议进行加密增强安全性。
使用RsaProtectedConfigurationProvider进行加密后得出的结果类似:

<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>bBswaTPy5cEeNV2BfiqlDealksdfkljhaslk;dhlfkj2XX9FW/Iervg1doFV5WN+4VQvgINquwAUvlBQUzJj55t+bdEW/e6mEDAWbJtJC2t9MEgXZ7Y4wNITSoQEM7CP/99651UG5lIfLoCm6hQVX0IoKgGTFhJPuyH5ITvbfINyCv0VDg=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>LZmVzE8646464646546465/GdMwZ5YrY8N9GUAKnnzZxGjwydm0dGrFt37NAARnbE1ljWd8E0qy3DPaOQ6zoMQDiona+najQHVfD8gMAhrDK9qDIy/nkQP/YzVmmjyKUcYhlBV76LPDMeGOZyq2UCNoVZb0K0qnx0jxY+Lb4lCXVYwqRU6KohPb/oUZas6gbEW+aZVAW79TX1HkXQmFiq97I5oIEGvmV4el8i8V3HoWelt//3HkKwWiSA6dZ4rtEfzlhIuJbBej9wRJkn9IuJ/O4IsDr33tAL9SEt/FMOI6tkbex1220Woa8PNQBsZwmU6xbAGVUaYy+u5Pe1gjQXFjOwxcVhuPrm1w4wtpLO4zV0Oe8qE09gjYlCK5xBFAcvynUlnLeOSQK3p/qY93FfFlnzMPi3/YAVJtMSa2u3c6f9hYIPo3sLwTcw+RdRnJfhnxdnnYVyRYxrXskNiThbAiu0ZXQmrtgcQmUTqzfC5GXLHV1C+SHRcN4wP3OzbRwRIVAv+lXQ/CpF1Ig2Aj5zTpFjcMv7BF3E/VeMKxEDZhk+w3bfIeJWHlyg6ucVtWT8lLXyLGBnvcf7HW3b3RJGoSObWt0cqsxlQ7igTDQqm1zCXD+StSvbmYsDWR9iEUxuRBmKvmca3u6W051n0YNy2s4w9NDFi8r/u9s22yst/i5F5bJRzuBEcuvACU5RK0d8ueanUDTIfuBfq+l6f6JS9jeiVwxm0Styqn5GC1OTACzvspKcphoC0T+pbAKeaF286WgQ==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>
好处是避免了敏感数据被以明码方式获取,而且C#代码方面不需要做任何改动。

引用资料:

1. http://technet.microsoft.com/en-us/library/microsoft.xrm.client.crmconnection 2.
Dynamics CRM 2011 Developer Extensions 紹介 - CrmConnection クラスで簡単に組織 Web サービスを生成
3. Microsoft Dynamics CRM SDK
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: