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[email protected];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