CrmConnection類使用簡介

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章