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
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.
- To use a custom driver across all data extracts, assign its instance to the ExtractDriverStorage.DefaultDriver property.
- To use a custom driver for the specified data extract, register this driver in the ExtractDriverStorage using the ExtractDriverStorage.RegisterCustomDriver method and assign its name to the DashboardExtractDataSource.DriverName property.
Example
This example demonstrates how to create a custom driver to encrypt/decrypt extract data. It implements the ICustomExtractDriver interface:
- The ICustomExtractDriver.CreateWriteSession method creates a write session that is used to encrypt extract pages.
- The ICustomExtractDriver.CreateReadSession method creates a read session that provides logic for reading encrypted pages.
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();
}
}
}
Related GitHub Examples
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.