Skip to main content

ExtractDriverStorage Class

A storage of drivers used to manage writing/reading operations for data extracts.

Namespace: DevExpress.DashboardCommon

Assembly: DevExpress.Dashboard.v21.2.Core.dll

Declaration

public static class ExtractDriverStorage

Remarks

By default, the DashboardExtractDataSource stores data within a file. If necessary, you add a custom logic for writing/reading extract data by implementing the ICustomExtractDriver interface. After you have implemented a custom driver, you can use it in two ways.

Example

This example demonstrates how to create a custom driver to encrypt/decrypt extract data. It implements the ICustomExtractDriver interface:

View Example: How to Encrypt/Decrypt Data Transfer Between the Data Extract File and a Dashboard

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using DevExpress.DashboardCommon;

namespace Dashboard_CustomExtractDriver {
    public class ExtractEncryptionDriver : ICustomExtractDriver {

        public IDriverReadSession CreateReadSession(string resourceName) {
            return new EncryptionReadSession(FileExtractDriver.Instance.CreateReadSession(resourceName));
        }
        public IDriverWriteSession CreateWriteSession(string resourceName) {
            return new EncryptionWriteSession(FileExtractDriver.Instance.CreateWriteSession(resourceName));
        }
    }

    public class EncryptionWriteSession : IDriverWriteSession {
        IDriverWriteSession writeSession;

        public EncryptionWriteSession(IDriverWriteSession writeSession) {
            this.writeSession = writeSession; 
        }
        public void Dispose() {
            writeSession.Dispose();
        }
        public void SetPage(Guid pageID, byte[] data) {
            writeSession.SetPage(pageID, Encrypt(data));
        }
        byte[] Encrypt(byte[] page) {
            byte[] entropy = { 1, 2, 3 };
            byte[] encryptedPage = ProtectedData.Protect(page, entropy, DataProtectionScope.CurrentUser);
            return encryptedPage;
        }
    }

    public class EncryptionReadSession : IDriverReadSession {
        IDriverReadSession readSession;
        public EncryptionReadSession(IDriverReadSession readSession) {
            this.readSession = readSession;
        }
        public void Dispose() {
            readSession.Dispose();
        }
        byte[] Decrypt(byte[] page) {
            byte[] entropy = { 1, 2, 3 };
            byte[] decryptedPage = ProtectedData.Unprotect(page, entropy, DataProtectionScope.CurrentUser);
            return decryptedPage;
        }
        public byte[] GetPage(Guid pageID) {
            return Decrypt(readSession.GetPage(pageID));
        }
        public IEnumerable<Guid> GetPageIDs() {
            return readSession.GetPageIDs();
        }
    }
}

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the ExtractDriverStorage class.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

Inheritance

Object
ExtractDriverStorage
See Also